diff --git a/src/sna/sna.h b/src/sna/sna.h index 8cfa98a9..a5141811 100644 --- a/src/sna/sna.h +++ b/src/sna/sna.h @@ -463,6 +463,11 @@ extern xf86CrtcPtr sna_covering_crtc(struct sna *sna, extern bool sna_wait_for_scanline(struct sna *sna, PixmapPtr pixmap, xf86CrtcPtr crtc, const BoxRec *clip); +static inline uint64_t ust64(int tv_sec, int tv_usec) +{ + return (uint64_t)tv_sec * 1000000 + tv_usec; +} + #if HAVE_DRI2_H bool sna_dri2_open(struct sna *sna, ScreenPtr pScreen); void sna_dri2_page_flip_handler(struct sna *sna, struct drm_event_vblank *event); diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c index 6991c91a..d86c86e7 100644 --- a/src/sna/sna_dri2.c +++ b/src/sna/sna_dri2.c @@ -2402,8 +2402,8 @@ fail: if (pipe < 0) pipe = 0; *msc = sna->dri2.last_swap[pipe].msc; - *ust = ((uint64_t)sna->dri2.last_swap[pipe].tv_sec * 100000 + - sna->dri2.last_swap[pipe].tv_usec); + *ust = ust64(sna->dri2.last_swap[pipe].tv_sec, + sna->dri2.last_swap[pipe].tv_usec); return TRUE; } @@ -2420,7 +2420,7 @@ fail: sna->dri2.last_swap[pipe].tv_usec = vbl.reply.tval_usec; sna->dri2.last_swap[pipe].msc = vbl.reply.sequence; - *ust = ((CARD64)vbl.reply.tval_sec * 1000000) + vbl.reply.tval_usec; + *ust = ust64(vbl.reply.tval_sec, vbl.reply.tval_usec); *msc = vbl.reply.sequence; DBG(("%s: msc=%llu, ust=%llu\n", __FUNCTION__, (long long)*msc, (long long)*ust));