|
@@ -1029,7 +1029,7 @@ static void vop_crtc_atomic_flush(struct drm_crtc *crtc,
|
|
|
struct drm_crtc_state *old_crtc_state)
|
|
|
{
|
|
|
struct drm_atomic_state *old_state = old_crtc_state->state;
|
|
|
- struct drm_plane_state *old_plane_state;
|
|
|
+ struct drm_plane_state *old_plane_state, *new_plane_state;
|
|
|
struct vop *vop = to_vop(crtc);
|
|
|
struct drm_plane *plane;
|
|
|
int i;
|
|
@@ -1060,11 +1060,12 @@ static void vop_crtc_atomic_flush(struct drm_crtc *crtc,
|
|
|
}
|
|
|
spin_unlock_irq(&crtc->dev->event_lock);
|
|
|
|
|
|
- for_each_plane_in_state(old_state, plane, old_plane_state, i) {
|
|
|
+ for_each_oldnew_plane_in_state(old_state, plane, old_plane_state,
|
|
|
+ new_plane_state, i) {
|
|
|
if (!old_plane_state->fb)
|
|
|
continue;
|
|
|
|
|
|
- if (old_plane_state->fb == plane->state->fb)
|
|
|
+ if (old_plane_state->fb == new_plane_state->fb)
|
|
|
continue;
|
|
|
|
|
|
drm_framebuffer_reference(old_plane_state->fb);
|