summaryrefslogtreecommitdiff
path: root/libdrm/xf86drmMode.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdrm/xf86drmMode.c')
-rw-r--r--libdrm/xf86drmMode.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/libdrm/xf86drmMode.c b/libdrm/xf86drmMode.c
index 7d931704..a48467fb 100644
--- a/libdrm/xf86drmMode.c
+++ b/libdrm/xf86drmMode.c
@@ -672,7 +672,8 @@ int drmHandleEvent(int fd, drmEventContextPtr evctx)
int len, i;
struct drm_event *e;
struct drm_event_vblank *vblank;
-
+ struct drm_event_page_flip *page_flip;
+
/* The DRM read semantics guarantees that we always get only
* complete events. */
@@ -697,7 +698,17 @@ int drmHandleEvent(int fd, drmEventContextPtr evctx)
vblank->tv_usec,
U642VOID (vblank->user_data));
break;
-
+ case DRM_EVENT_MODE_PAGE_FLIP:
+ if (evctx->version < 1 ||
+ evctx->page_flip_handler == NULL)
+ break;
+ page_flip = (struct drm_event_page_flip *) e;
+ evctx->page_flip_handler(fd,
+ page_flip->frame,
+ page_flip->tv_sec,
+ page_flip->tv_usec,
+ U642VOID (page_flip->user_data));
+ break;
default:
break;
}
@@ -718,3 +729,4 @@ int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id, void *user_data)
return drmIoctl(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip);
}
+