Commit 40ccc72b authored by Mika Kuoppala's avatar Mika Kuoppala Committed by Daniel Vetter

drm/i915: release cursor when crtc is destroyed

crtc is holding a reference to a cursor bo and it needs
to be released when crtc is destroyed so that we don't leak
the cursor bo.

v2: Enhance set and move cursor so that disabled
cursor is handled correctly (Ville Syrjälä)
Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 2e7c8ee7
...@@ -6509,7 +6509,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc, ...@@ -6509,7 +6509,7 @@ static int intel_crtc_cursor_set(struct drm_crtc *crtc,
intel_crtc->cursor_width = width; intel_crtc->cursor_width = width;
intel_crtc->cursor_height = height; intel_crtc->cursor_height = height;
intel_crtc_update_cursor(crtc, true); intel_crtc_update_cursor(crtc, intel_crtc->cursor_bo != NULL);
return 0; return 0;
fail_unpin: fail_unpin:
...@@ -6528,7 +6528,7 @@ static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) ...@@ -6528,7 +6528,7 @@ static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
intel_crtc->cursor_x = x; intel_crtc->cursor_x = x;
intel_crtc->cursor_y = y; intel_crtc->cursor_y = y;
intel_crtc_update_cursor(crtc, true); intel_crtc_update_cursor(crtc, intel_crtc->cursor_bo != NULL);
return 0; return 0;
} }
...@@ -7042,6 +7042,8 @@ static void intel_crtc_destroy(struct drm_crtc *crtc) ...@@ -7042,6 +7042,8 @@ static void intel_crtc_destroy(struct drm_crtc *crtc)
kfree(work); kfree(work);
} }
intel_crtc_cursor_set(crtc, NULL, 0, 0, 0);
drm_crtc_cleanup(crtc); drm_crtc_cleanup(crtc);
kfree(intel_crtc); kfree(intel_crtc);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment