Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 174548
b: refs/heads/master
c: 12ca45f
h: refs/heads/master
v: v3
  • Loading branch information
Daniel Vetter authored and Eric Anholt committed Nov 30, 2009
1 parent 2f4f400 commit a82fc37
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 26444877812fb2a2b9301b0b3702fdf9f9e06e4b
refs/heads/master: 12ca45fea91cfbb09df828bea958b47348caee6d
42 changes: 19 additions & 23 deletions trunk/drivers/gpu/drm/i915/intel_overlay.c
Original file line number Diff line number Diff line change
Expand Up @@ -375,12 +375,28 @@ static int intel_overlay_off(struct intel_overlay *overlay)
if (ret != 0)
return ret;

overlay->active = 0;
overlay->hw_wedged = 0;
overlay->last_flip_req = 0;
return ret;
}

static void intel_overlay_off_tail(struct intel_overlay *overlay)
{
struct drm_gem_object *obj;

/* never have the overlay hw on without showing a frame */
BUG_ON(!overlay->vid_bo);
obj = overlay->vid_bo->obj;

i915_gem_object_unpin(obj);
drm_gem_object_unreference(obj);
overlay->vid_bo = NULL;

overlay->crtc->overlay = NULL;
overlay->crtc = NULL;
overlay->active = 0;
}

/* recover from an interruption due to a signal
* We have to be careful not to repeat work forever an make forward progess. */
int intel_overlay_recover_from_interrupt(struct intel_overlay *overlay,
Expand Down Expand Up @@ -438,17 +454,7 @@ int intel_overlay_recover_from_interrupt(struct intel_overlay *overlay,
return ret;

case SWITCH_OFF_STAGE_2:
BUG_ON(!overlay->vid_bo);
obj = overlay->vid_bo->obj;

i915_gem_object_unpin(obj);
drm_gem_object_unreference(obj);
overlay->vid_bo = NULL;

overlay->crtc->overlay = NULL;
overlay->crtc = NULL;

overlay->active = 0;
intel_overlay_off_tail(overlay);
break;
default:
BUG_ON(overlay->hw_wedged != NEEDS_WAIT_FOR_FLIP);
Expand Down Expand Up @@ -831,7 +837,6 @@ int intel_overlay_switch_off(struct intel_overlay *overlay)
{
int ret;
struct overlay_registers *regs;
struct drm_gem_object *obj;
struct drm_device *dev = overlay->dev;

BUG_ON(!mutex_is_locked(&dev->struct_mutex));
Expand All @@ -855,16 +860,7 @@ int intel_overlay_switch_off(struct intel_overlay *overlay)
if (ret != 0)
return ret;

/* never have the overlay hw on without showing a frame */
BUG_ON(!overlay->vid_bo);
obj = overlay->vid_bo->obj;

i915_gem_object_unpin(obj);
drm_gem_object_unreference(obj);
overlay->vid_bo = NULL;

overlay->crtc->overlay = NULL;
overlay->crtc = NULL;
intel_overlay_off_tail(overlay);

return 0;
}
Expand Down

0 comments on commit a82fc37

Please sign in to comment.