From 733de3bc01283e03d8442fe97da25665c86c675b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michel=20D=C3=A4nzer?= Date: Mon, 14 May 2007 11:08:19 +0200 Subject: [PATCH] i915: Report back to userspace when a scheduled flip missed target. --- shared-core/i915_irq.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/shared-core/i915_irq.c b/shared-core/i915_irq.c index c00d82c6..594a6088 100644 --- a/shared-core/i915_irq.c +++ b/shared-core/i915_irq.c @@ -652,7 +652,7 @@ int i915_vblank_swap(DRM_IOCTL_ARGS) spin_unlock_irqrestore(&dev->drw_lock, irqflags); - return 0; + goto out; } } @@ -692,9 +692,6 @@ int i915_vblank_swap(DRM_IOCTL_ARGS) vbl_swap->sequence = swap.sequence; vbl_swap->flip = (swap.seqtype & _DRM_VBLANK_FLIP); - if (vbl_swap->flip) - swap.sequence++; - spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); list_add_tail((struct list_head *)vbl_swap, &dev_priv->vbl_swaps.head); @@ -702,6 +699,10 @@ int i915_vblank_swap(DRM_IOCTL_ARGS) spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); +out: + if (swap.seqtype & _DRM_VBLANK_FLIP) + swap.sequence++; + DRM_COPY_TO_USER_IOCTL((drm_i915_vblank_swap_t __user *) data, swap, sizeof(swap));