diff options
author | Jonathan Gray <jsg@jsg.id.au> | 2013-06-17 17:37:50 +1000 |
---|---|---|
committer | Jonathan Gray <jsg@jsg.id.au> | 2013-08-12 10:42:42 +1000 |
commit | 5e401d6dab2cb135b84717e310dfd52262e40949 (patch) | |
tree | 437a1b52bf78575d4a28412d30458056548b8bf8 | |
parent | 3b58677bbf8f978bbf45e7b86819db47efa0d4bf (diff) |
fix page flipping
-rw-r--r-- | sys/dev/pci/drm/radeon/radeon_display.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/dev/pci/drm/radeon/radeon_display.c b/sys/dev/pci/drm/radeon/radeon_display.c index 3a3061a7151..85ed7dcd6f5 100644 --- a/sys/dev/pci/drm/radeon/radeon_display.c +++ b/sys/dev/pci/drm/radeon/radeon_display.c @@ -272,10 +272,9 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id) { struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id]; struct radeon_unpin_work *work; -#ifdef notyet struct drm_pending_vblank_event *e; struct timeval now; -#endif + struct drm_file *file_priv; u32 update_pending; int vpos, hpos; @@ -330,16 +329,16 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id) radeon_crtc->unpin_work = NULL; /* wakeup userspace */ -#ifdef notyet if (work->event) { e = work->event; e->event.sequence = drm_vblank_count_and_time(rdev->ddev, crtc_id, &now); e->event.tv_sec = now.tv_sec; e->event.tv_usec = now.tv_usec; - list_add_tail(&e->base.link, &e->base.file_priv->event_list); - wake_up_interruptible(&e->base.file_priv->event_wait); + file_priv = e->base.file_priv; + TAILQ_INSERT_TAIL(&file_priv->evlist, &e->base, link); + wakeup(&file_priv->evlist); + selwakeup(&file_priv->rsel); } -#endif mtx_leave(&rdev->ddev->event_lock); drm_vblank_put(rdev->ddev, radeon_crtc->crtc_id); |