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.main
parent
89e323e490
commit
cf6b2c5299
|
@ -295,8 +295,6 @@ int drm_wait_vblank(DRM_IOCTL_ARGS)
|
|||
? &dev->vbl_sigs2 : &dev->vbl_sigs;
|
||||
drm_vbl_sig_t *vbl_sig;
|
||||
|
||||
vblwait.reply.sequence = seq;
|
||||
|
||||
spin_lock_irqsave(&dev->vbl_lock, irqflags);
|
||||
|
||||
/* Check if this task has already scheduled the same signal
|
||||
|
@ -309,6 +307,7 @@ int drm_wait_vblank(DRM_IOCTL_ARGS)
|
|||
&& vbl_sig->task == current) {
|
||||
spin_unlock_irqrestore(&dev->vbl_lock,
|
||||
irqflags);
|
||||
vblwait.reply.sequence = seq;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
@ -339,6 +338,8 @@ int drm_wait_vblank(DRM_IOCTL_ARGS)
|
|||
list_add_tail((struct list_head *)vbl_sig, &vbl_sigs->head);
|
||||
|
||||
spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
|
||||
|
||||
vblwait.reply.sequence = seq;
|
||||
} else {
|
||||
if (flags & _DRM_VBLANK_SECONDARY) {
|
||||
if (dev->driver->vblank_wait2)
|
||||
|
|
Loading…
Reference in New Issue