From: Michel Dänzer Date: Fri, 1 Sep 2006 09:48:07 +0000 (+0200) Subject: Only return EBUSY after we've established we need to schedule a new swap. X-Git-Tag: libdrm-2.3.1~520 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=50a0284a61d4415c0ebdb02decee76ef3115007a;p=platform%2Fupstream%2Flibdrm.git Only return EBUSY after we've established we need to schedule a new swap. --- diff --git a/shared-core/i915_irq.c b/shared-core/i915_irq.c index 9cd8ece..d32f592 100644 --- a/shared-core/i915_irq.c +++ b/shared-core/i915_irq.c @@ -395,11 +395,6 @@ int i915_vblank_swap(DRM_IOCTL_ARGS) return DRM_ERR(EINVAL); } - if (dev_priv->swaps_pending >= 100) { - DRM_DEBUG("Too many swaps queued\n"); - return DRM_ERR(EBUSY); - } - DRM_COPY_FROM_USER_IOCTL(swap, (drm_i915_vblank_swap_t __user *) data, sizeof(swap)); @@ -464,6 +459,11 @@ int i915_vblank_swap(DRM_IOCTL_ARGS) spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); + if (dev_priv->swaps_pending >= 100) { + DRM_DEBUG("Too many swaps queued\n"); + return DRM_ERR(EBUSY); + } + vbl_swap = drm_calloc(1, sizeof(vbl_swap), DRM_MEM_DRIVER); if (!vbl_swap) {