diff options
-rw-r--r-- | ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc index e387c1b..29ed57e 100644 --- a/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc +++ b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc @@ -34,6 +34,20 @@ bool HardwareDisplayPlaneManagerAtomic::Commit( HardwareDisplayPlaneList* plane_list, bool is_sync, bool test_only) { + for (HardwareDisplayPlane* plane : plane_list->old_plane_list) { + bool found = + std::find(plane_list->plane_list.begin(), plane_list->plane_list.end(), + plane) != plane_list->plane_list.end(); + if (!found) { + // This plane is being released, so we need to zero it. + plane->set_in_use(false); + HardwareDisplayPlaneAtomic* atomic_plane = + static_cast<HardwareDisplayPlaneAtomic*>(plane); + atomic_plane->SetPlaneData(plane_list->atomic_property_set.get(), 0, 0, + gfx::Rect(), gfx::Rect()); + } + } + std::vector<base::WeakPtr<CrtcController>> crtcs; for (HardwareDisplayPlane* plane : plane_list->plane_list) { HardwareDisplayPlaneAtomic* atomic_plane = @@ -56,7 +70,6 @@ bool HardwareDisplayPlaneManagerAtomic::Commit( PLOG(ERROR) << "Failed to commit properties"; return false; } - plane_list->atomic_property_set.reset(drmModePropertySetAlloc()); return true; } |