diff options
author | Qiang Yu <Qiang.Yu@amd.com> | 2016-09-05 18:05:42 +0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2016-09-16 08:54:22 -0700 |
commit | 7f6fa4e449f5a7215bbf60ce8c874e163a7453a9 (patch) | |
tree | 7d3687e863daddccd86e9081ff670bf779135013 | |
parent | d81f9ce12aa4ac54b9c2b8c74c2f827c1f3e739a (diff) |
modesetting: fix compile error when --disable-glamor
Move ms_flush_drm_events out of GLAMOR ifdef.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97586
Signed-off-by: Qiang Yu <Qiang.Yu@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | hw/xfree86/drivers/modesetting/driver.h | 4 | ||||
-rw-r--r-- | hw/xfree86/drivers/modesetting/pageflip.c | 68 |
2 files changed, 36 insertions, 36 deletions
diff --git a/hw/xfree86/drivers/modesetting/driver.h b/hw/xfree86/drivers/modesetting/driver.h index aa00d055a..eee96e50f 100644 --- a/hw/xfree86/drivers/modesetting/driver.h +++ b/hw/xfree86/drivers/modesetting/driver.h @@ -161,8 +161,6 @@ typedef void (*ms_pageflip_handler_proc)(modesettingPtr ms, typedef void (*ms_pageflip_abort_proc)(modesettingPtr ms, void *data); -int ms_flush_drm_events(ScreenPtr screen); - Bool ms_do_pageflip(ScreenPtr screen, PixmapPtr new_front, void *event, @@ -172,3 +170,5 @@ Bool ms_do_pageflip(ScreenPtr screen, ms_pageflip_abort_proc pageflip_abort); #endif + +int ms_flush_drm_events(ScreenPtr screen); diff --git a/hw/xfree86/drivers/modesetting/pageflip.c b/hw/xfree86/drivers/modesetting/pageflip.c index a82e0d6cb..4dc05ec81 100644 --- a/hw/xfree86/drivers/modesetting/pageflip.c +++ b/hw/xfree86/drivers/modesetting/pageflip.c @@ -29,6 +29,40 @@ #include "driver.h" +/* + * Flush the DRM event queue when full; makes space for new events. + * + * Returns a negative value on error, 0 if there was nothing to process, + * or 1 if we handled any events. + */ +int +ms_flush_drm_events(ScreenPtr screen) +{ + ScrnInfoPtr scrn = xf86ScreenToScrn(screen); + modesettingPtr ms = modesettingPTR(scrn); + + struct pollfd p = { .fd = ms->fd, .events = POLLIN }; + int r; + + do { + r = xserver_poll(&p, 1, 0); + } while (r == -1 && (errno == EINTR || errno == EAGAIN)); + + /* If there was an error, r will be < 0. Return that. If there was + * nothing to process, r == 0. Return that. + */ + if (r <= 0) + return r; + + /* Try to handle the event. If there was an error, return it. */ + r = drmHandleEvent(ms->fd, &ms->event_context); + if (r < 0) + return r; + + /* Otherwise return 1 to indicate that we handled an event. */ + return 1; +} + #ifdef GLAMOR /* @@ -125,40 +159,6 @@ ms_pageflip_abort(void *data) ms_pageflip_free(flip); } -/* - * Flush the DRM event queue when full; makes space for new events. - * - * Returns a negative value on error, 0 if there was nothing to process, - * or 1 if we handled any events. - */ -int -ms_flush_drm_events(ScreenPtr screen) -{ - ScrnInfoPtr scrn = xf86ScreenToScrn(screen); - modesettingPtr ms = modesettingPTR(scrn); - - struct pollfd p = { .fd = ms->fd, .events = POLLIN }; - int r; - - do { - r = xserver_poll(&p, 1, 0); - } while (r == -1 && (errno == EINTR || errno == EAGAIN)); - - /* If there was an error, r will be < 0. Return that. If there was - * nothing to process, r == 0. Return that. - */ - if (r <= 0) - return r; - - /* Try to handle the event. If there was an error, return it. */ - r = drmHandleEvent(ms->fd, &ms->event_context); - if (r < 0) - return r; - - /* Otherwise return 1 to indicate that we handled an event. */ - return 1; -} - static Bool queue_flip_on_crtc(ScreenPtr screen, xf86CrtcPtr crtc, struct ms_flipdata *flipdata, |