xf86-video-intel: Branch 'dri2-swapbuffers' - src/drmmode_display.c
Kristian Høgsberg
krh at kemper.freedesktop.org
Wed Jul 22 17:58:14 PDT 2009
src/drmmode_display.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
New commits:
commit b20acfaf265eec27f96be8940fd339d7c2ec8ec8
Author: Kristian Høgsberg <krh at redhat.com>
Date: Wed Jul 22 12:57:25 2009 -0400
The select readmask passed in the wakeup handler lies...
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 6fd5836..1e5eb08 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1183,17 +1183,19 @@ drmmode_page_flip_handler(int fd,
}
static void
-drm_wakeup_handler(pointer data, int err, pointer read_mask)
+drm_wakeup_handler(pointer data, int err, pointer p)
{
drmmode_ptr drmmode = data;
+ fd_set *read_mask = p;
+ struct pollfd pf[1];
- if (FD_ISSET(drmmode->fd, (fd_set *) read_mask))
- drmHandleEvent(drmmode->fd, &drmmode->event_context);
-}
+ /* FIXME: Why does the select read mask lie? */
+ pf[0].fd = drmmode->fd;
+ pf[0].events = POLLIN;
+ poll(pf, 1, 0);
-static void
-drm_block_handler(pointer data, struct timeval **tv, pointer read_mask)
-{
+ if (pf[0].revents & POLLIN)
+ drmHandleEvent(drmmode->fd, &drmmode->event_context);
}
Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
@@ -1240,7 +1242,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp)
drmmode->event_context.page_flip_handler =
drmmode_page_flip_handler;
AddGeneralSocket(fd);
- RegisterBlockAndWakeupHandlers(drm_block_handler,
+ RegisterBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
drm_wakeup_handler,
drmmode);
}
More information about the xorg-commit
mailing list