Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07da3c78 authored by Russell King's avatar Russell King
Browse files

drm/armada: wait for previous work when moving overlay window



We must wait for the previous plane work to complete before moving
the overlay window, as it could overwrite our positioning update.

Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 65843e9a
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -239,16 +239,16 @@ armada_ovl_plane_update(struct drm_plane *plane, struct drm_crtc *crtc,
	if (!dplane->base.state.changed)
		return 0;

	/* Wait for pending work to complete */
	if (armada_drm_plane_work_wait(&dplane->base, HZ / 25) == 0)
		armada_drm_plane_work_cancel(dcrtc, &dplane->base);

	/* Just updating the position/size? */
	if (!dplane->base.state.vsync_update) {
		armada_ovl_plane_work(dcrtc, work);
		return 0;
	}

	/* Wait for pending work to complete */
	if (armada_drm_plane_work_wait(&dplane->base, HZ / 25) == 0)
		armada_drm_plane_work_cancel(dcrtc, &dplane->base);

	if (!dcrtc->plane) {
		dcrtc->plane = plane;
		armada_ovl_update_attr(&dplane->prop, dcrtc);