From f87acdbfb1b0b6d2769764772a52ea8b81675e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Fri, 28 Jul 2017 12:28:53 +0900 Subject: Create drmmode_crtc_wait_pending_event helper macro Preparation for following change, no functional change intended yet. Reviewed-by: Alex Deucher --- src/drmmode_display.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index d86f8300..45e04058 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -99,6 +99,14 @@ RADEONZaphodStringMatches(ScrnInfoPtr pScrn, const char *s, char *output_name) return FALSE; } + +/* Wait for the boolean condition to be FALSE */ +#define drmmode_crtc_wait_pending_event(drmmode_crtc, fd, condition) \ + do {} while ((condition) && \ + drmHandleEvent(fd, &drmmode_crtc->drmmode->event_context) \ + > 0); + + static PixmapPtr drmmode_create_bo_pixmap(ScrnInfoPtr pScrn, int width, int height, int depth, int bpp, @@ -951,10 +959,8 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, goto done; } - /* Wait for any pending flip to finish */ - do {} while (drmmode_crtc->flip_pending && - drmHandleEvent(pRADEONEnt->fd, - &drmmode->event_context) > 0); + drmmode_crtc_wait_pending_event(drmmode_crtc, pRADEONEnt->fd, + drmmode_crtc->flip_pending); if (drmModeSetCrtc(pRADEONEnt->fd, drmmode_crtc->mode_crtc->crtc_id, -- cgit v1.2.3