Loading services/core/java/com/android/server/wm/DeferredDisplayUpdater.java +15 −11 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package com.android.server.wm; import static android.view.WindowManager.TRANSIT_CHANGE; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_WINDOW_TRANSITIONS; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_WINDOW_TRANSITIONS_MIN; import static com.android.server.wm.ActivityTaskManagerService.POWER_MODE_REASON_CHANGE_DISPLAY; import static com.android.server.wm.utils.DisplayInfoOverrides.WM_OVERRIDE_FIELDS; import static com.android.server.wm.utils.DisplayInfoOverrides.copyDisplayInfoFields; Loading Loading @@ -140,8 +140,9 @@ class DeferredDisplayUpdater { if (displayInfoDiff == DIFF_EVERYTHING || !mDisplayContent.getLastHasContent() || !mDisplayContent.mTransitionController.isShellTransitionsEnabled()) { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: applying DisplayInfo immediately"); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: applying DisplayInfo(%d x %d) immediately", displayInfo.logicalWidth, displayInfo.logicalHeight); mLastWmDisplayInfo = displayInfo; applyLatestDisplayInfo(); Loading @@ -151,17 +152,23 @@ class DeferredDisplayUpdater { // If there are non WM-specific display info changes, apply only these fields immediately if ((displayInfoDiff & DIFF_NOT_WM_DEFERRABLE) > 0) { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: partially applying DisplayInfo immediately"); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: partially applying DisplayInfo(%d x %d) immediately", displayInfo.logicalWidth, displayInfo.logicalHeight); applyLatestDisplayInfo(); } // If there are WM-specific display info changes, apply them through a Shell transition if ((displayInfoDiff & DIFF_WM_DEFERRABLE) > 0) { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: deferring DisplayInfo update"); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: deferring DisplayInfo(%d x %d) update", displayInfo.logicalWidth, displayInfo.logicalHeight); requestDisplayChangeTransition(physicalDisplayUpdated, () -> { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: applying DisplayInfo(%d x %d) after deferring", displayInfo.logicalWidth, displayInfo.logicalHeight); // Apply deferrable fields to DisplayContent only when the transition // starts collecting, non-deferrable fields are ignored in mLastWmDisplayInfo mLastWmDisplayInfo = displayInfo; Loading Loading @@ -209,9 +216,6 @@ class DeferredDisplayUpdater { try { onStartCollect.run(); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: applied DisplayInfo after deferring"); if (physicalDisplayUpdated) { onDisplayUpdated(transition, fromRotation, startBounds); } else { Loading Loading
services/core/java/com/android/server/wm/DeferredDisplayUpdater.java +15 −11 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package com.android.server.wm; import static android.view.WindowManager.TRANSIT_CHANGE; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_WINDOW_TRANSITIONS; import static com.android.internal.protolog.WmProtoLogGroups.WM_DEBUG_WINDOW_TRANSITIONS_MIN; import static com.android.server.wm.ActivityTaskManagerService.POWER_MODE_REASON_CHANGE_DISPLAY; import static com.android.server.wm.utils.DisplayInfoOverrides.WM_OVERRIDE_FIELDS; import static com.android.server.wm.utils.DisplayInfoOverrides.copyDisplayInfoFields; Loading Loading @@ -140,8 +140,9 @@ class DeferredDisplayUpdater { if (displayInfoDiff == DIFF_EVERYTHING || !mDisplayContent.getLastHasContent() || !mDisplayContent.mTransitionController.isShellTransitionsEnabled()) { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: applying DisplayInfo immediately"); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: applying DisplayInfo(%d x %d) immediately", displayInfo.logicalWidth, displayInfo.logicalHeight); mLastWmDisplayInfo = displayInfo; applyLatestDisplayInfo(); Loading @@ -151,17 +152,23 @@ class DeferredDisplayUpdater { // If there are non WM-specific display info changes, apply only these fields immediately if ((displayInfoDiff & DIFF_NOT_WM_DEFERRABLE) > 0) { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: partially applying DisplayInfo immediately"); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: partially applying DisplayInfo(%d x %d) immediately", displayInfo.logicalWidth, displayInfo.logicalHeight); applyLatestDisplayInfo(); } // If there are WM-specific display info changes, apply them through a Shell transition if ((displayInfoDiff & DIFF_WM_DEFERRABLE) > 0) { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: deferring DisplayInfo update"); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: deferring DisplayInfo(%d x %d) update", displayInfo.logicalWidth, displayInfo.logicalHeight); requestDisplayChangeTransition(physicalDisplayUpdated, () -> { ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS_MIN, "DeferredDisplayUpdater: applying DisplayInfo(%d x %d) after deferring", displayInfo.logicalWidth, displayInfo.logicalHeight); // Apply deferrable fields to DisplayContent only when the transition // starts collecting, non-deferrable fields are ignored in mLastWmDisplayInfo mLastWmDisplayInfo = displayInfo; Loading Loading @@ -209,9 +216,6 @@ class DeferredDisplayUpdater { try { onStartCollect.run(); ProtoLog.d(WM_DEBUG_WINDOW_TRANSITIONS, "DeferredDisplayUpdater: applied DisplayInfo after deferring"); if (physicalDisplayUpdated) { onDisplayUpdated(transition, fromRotation, startBounds); } else { Loading