aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/drm/drm_irq.c
diff options
context:
space:
mode:
author=?utf-8?q?Michel_D=C3=A4nzer?= <michel@tungstengraphics.com>2006-10-24 09:34:58 -0400
committerairlied <airlied@linux.ie>2006-12-06 23:53:29 -0500
commit049b323321bbcb476b799f50dc6444c0ed5a0e0e (patch)
tree86c57b038dcb7a6de4b6a7af8c276550d6b9524b /drivers/char/drm/drm_irq.c
parentab285d74e6742422fd0465577a31fb03fe9ed241 (diff)
drm: Core vsync: Don't clobber target sequence number when scheduling signal.
It looks like this would have caused signals to always get sent on the next vertical blank, regardless of the sequence number. Signed-off-by: Dave Airlie <airlied@linux.ie>
Diffstat (limited to 'drivers/char/drm/drm_irq.c')
-rw-r--r--drivers/char/drm/drm_irq.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/char/drm/drm_irq.c b/drivers/char/drm/drm_irq.c
index 78aae5b35c62..9d00c51fe2c4 100644
--- a/drivers/char/drm/drm_irq.c
+++ b/drivers/char/drm/drm_irq.c
@@ -296,8 +296,6 @@ int drm_wait_vblank(DRM_IOCTL_ARGS)
296 ? &dev->vbl_sigs2 : &dev->vbl_sigs; 296 ? &dev->vbl_sigs2 : &dev->vbl_sigs;
297 drm_vbl_sig_t *vbl_sig; 297 drm_vbl_sig_t *vbl_sig;
298 298
299 vblwait.reply.sequence = seq;
300
301 spin_lock_irqsave(&dev->vbl_lock, irqflags); 299 spin_lock_irqsave(&dev->vbl_lock, irqflags);
302 300
303 /* Check if this task has already scheduled the same signal 301 /* Check if this task has already scheduled the same signal
@@ -310,6 +308,7 @@ int drm_wait_vblank(DRM_IOCTL_ARGS)
310 && vbl_sig->task == current) { 308 && vbl_sig->task == current) {
311 spin_unlock_irqrestore(&dev->vbl_lock, 309 spin_unlock_irqrestore(&dev->vbl_lock,
312 irqflags); 310 irqflags);
311 vblwait.reply.sequence = seq;
313 goto done; 312 goto done;
314 } 313 }
315 } 314 }
@@ -340,6 +339,8 @@ int drm_wait_vblank(DRM_IOCTL_ARGS)
340 list_add_tail((struct list_head *)vbl_sig, &vbl_sigs->head); 339 list_add_tail((struct list_head *)vbl_sig, &vbl_sigs->head);
341 340
342 spin_unlock_irqrestore(&dev->vbl_lock, irqflags); 341 spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
342
343 vblwait.reply.sequence = seq;
343 } else { 344 } else {
344 if (flags & _DRM_VBLANK_SECONDARY) { 345 if (flags & _DRM_VBLANK_SECONDARY) {
345 if (dev->driver->vblank_wait2) 346 if (dev->driver->vblank_wait2)