From 81ee39bc92377654ceeba27522711a8b754040d4 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 17 Oct 2008 11:03:53 -0700 Subject: [PATCH] --- yaml --- r: 117237 b: refs/heads/master c: 35ad68c18148a18938ff4f40e945c9734e7d2265 h: refs/heads/master i: 117235: 8a9538adf74fd46cc4eb3fa8e8a1cd8e20dfed56 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/drm_irq.c | 5 ++++- trunk/drivers/gpu/drm/i915/i915_irq.c | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 6f60ba87b5c1..c37ba1f8e427 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 786225eb2f4e55b5dda3cf8c62a145e824aae199 +refs/heads/master: 35ad68c18148a18938ff4f40e945c9734e7d2265 diff --git a/trunk/drivers/gpu/drm/drm_irq.c b/trunk/drivers/gpu/drm/drm_irq.c index 4091b9e291f9..212a94f715b2 100644 --- a/trunk/drivers/gpu/drm/drm_irq.c +++ b/trunk/drivers/gpu/drm/drm_irq.c @@ -594,11 +594,14 @@ int drm_wait_vblank(struct drm_device *dev, void *data, goto done; } + /* Get a refcount on the vblank, which will be released by + * drm_vbl_send_signals(). + */ ret = drm_vblank_get(dev, crtc); if (ret) { drm_free(vbl_sig, sizeof(struct drm_vbl_sig), DRM_MEM_DRIVER); - return ret; + goto done; } atomic_inc(&dev->vbl_signal_pending); diff --git a/trunk/drivers/gpu/drm/i915/i915_irq.c b/trunk/drivers/gpu/drm/i915/i915_irq.c index 671dd79d0aac..2cd853b2c562 100644 --- a/trunk/drivers/gpu/drm/i915/i915_irq.c +++ b/trunk/drivers/gpu/drm/i915/i915_irq.c @@ -771,6 +771,7 @@ int i915_vblank_swap(struct drm_device *dev, void *data, vbl_swap->plane == plane && vbl_swap->sequence == swap->sequence) { spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); + drm_vblank_put(dev, pipe); DRM_DEBUG("Already scheduled\n"); return 0; }