From b3555db9f0da3486ac3d9e894d7fa71657ac4dbb Mon Sep 17 00:00:00 2001 From: Mariia Sandrikova Date: Sat, 25 Dec 2021 01:56:16 +0000 Subject: [PATCH] [6/n] Camera Compat UI: Dispatch pending events in task organiser to ensure state update in UI. Without this change, Task#dispatchTaskInfoChangedIfNeeded led to a pending task event being added in TaskOrganizerController#onTaskInfoChanged but not dispatched which sometimes resulted in the stale state for the camera compat control. Test: manual - no stale state. Bug: 214429446 Change-Id: Ief8891b938ec6116fd3adbc260d3457817ba2e02 --- services/core/java/com/android/server/wm/ActivityRecord.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index c929cbbac2637..bea6b36d23324 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1623,6 +1623,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } // Trigger TaskInfoChanged to update the camera compat UI. getTask().dispatchTaskInfoChangedIfNeeded(true /* force */); + // TaskOrganizerController#onTaskInfoChanged adds pending task events to the queue waiting + // for the surface placement to be ready. So need to trigger surface placement to dispatch + // events to avoid stale state for the camera compat control. + getDisplayContent().setLayoutNeeded(); + mWmService.mWindowPlacerLocked.performSurfacePlacement(); } void updateCameraCompatStateFromUser(@CameraCompatControlState int state) {