Loading core/java/android/window/flags/windowing_frontend.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,16 @@ flag { bug: "232195501" } flag { name: "wait_for_transition_on_display_switch" namespace: "windowing_frontend" description: "Waits for Shell transition to start before unblocking the screen after display switch" bug: "301420598" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "edge_to_edge_by_default" namespace: "windowing_frontend" Loading services/core/java/com/android/server/display/DisplayManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -730,6 +730,7 @@ public final class DisplayManagerService extends SystemService { mContext.getSystemService(DeviceStateManager.class).registerCallback( new HandlerExecutor(mHandler), new DeviceStateListener()); mLogicalDisplayMapper.onWindowManagerReady(); scheduleTraversalLocked(false); } } Loading services/core/java/com/android/server/display/LogicalDisplayMapper.java +15 −0 Original line number Diff line number Diff line Loading @@ -41,10 +41,12 @@ import android.view.DisplayInfo; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.foldables.FoldGracePeriodProvider; import com.android.server.LocalServices; import com.android.server.display.feature.DisplayManagerFlags; import com.android.server.display.layout.DisplayIdProducer; import com.android.server.display.layout.Layout; import com.android.server.display.utils.DebugUtils; import com.android.server.policy.WindowManagerPolicy; import com.android.server.utils.FoldSettingProvider; import java.io.PrintWriter; Loading Loading @@ -189,6 +191,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { * #updateLogicalDisplaysLocked} to establish which Virtual Devices own which Virtual Displays. */ private final ArrayMap<String, Integer> mVirtualDeviceDisplayMapping = new ArrayMap<>(); private WindowManagerPolicy mWindowManagerPolicy; private int mNextNonDefaultGroupId = Display.DEFAULT_DISPLAY_GROUP + 1; private final DisplayIdProducer mIdProducer = (isDefault) -> Loading Loading @@ -273,6 +276,10 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { mListener.onTraversalRequested(); } public void onWindowManagerReady() { mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class); } public LogicalDisplay getDisplayLocked(int displayId) { return getDisplayLocked(displayId, /* includeDisabled= */ true); } Loading Loading @@ -1114,14 +1121,22 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { final int logicalDisplayId = displayLayout.getLogicalDisplayId(); LogicalDisplay newDisplay = getDisplayLocked(logicalDisplayId); boolean newDisplayCreated = false; if (newDisplay == null) { newDisplay = createNewLogicalDisplayLocked( null /*displayDevice*/, logicalDisplayId); newDisplayCreated = true; } // Now swap the underlying display devices between the old display and the new display final LogicalDisplay oldDisplay = getDisplayLocked(device); if (newDisplay != oldDisplay) { // Display is swapping, notify WindowManager, so it can prepare for // the display switch if (!newDisplayCreated && mWindowManagerPolicy != null) { mWindowManagerPolicy.onDisplaySwitchStart(newDisplay.getDisplayIdLocked()); } newDisplay.swapDisplaysLocked(oldDisplay); } DisplayDeviceConfig config = device.getDisplayDeviceConfig(); Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +7 −0 Original line number Diff line number Diff line Loading @@ -5658,6 +5658,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } @Override public void onDisplaySwitchStart(int displayId) { if (displayId == DEFAULT_DISPLAY) { mDefaultDisplayPolicy.onDisplaySwitchStart(); } } private long getKeyguardDrawnTimeout() { final boolean bootCompleted = LocalServices.getService(SystemServiceManager.class).isBootCompleted(); Loading services/core/java/com/android/server/policy/WindowManagerPolicy.java +3 −0 Original line number Diff line number Diff line Loading @@ -895,6 +895,9 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { void onScreenOff(); } /** Called when the physical display starts to switch, e.g. fold/unfold. */ void onDisplaySwitchStart(int displayId); /** * Return whether the default display is on and not blocked by a black surface. */ Loading Loading
core/java/android/window/flags/windowing_frontend.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,16 @@ flag { bug: "232195501" } flag { name: "wait_for_transition_on_display_switch" namespace: "windowing_frontend" description: "Waits for Shell transition to start before unblocking the screen after display switch" bug: "301420598" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "edge_to_edge_by_default" namespace: "windowing_frontend" Loading
services/core/java/com/android/server/display/DisplayManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -730,6 +730,7 @@ public final class DisplayManagerService extends SystemService { mContext.getSystemService(DeviceStateManager.class).registerCallback( new HandlerExecutor(mHandler), new DeviceStateListener()); mLogicalDisplayMapper.onWindowManagerReady(); scheduleTraversalLocked(false); } } Loading
services/core/java/com/android/server/display/LogicalDisplayMapper.java +15 −0 Original line number Diff line number Diff line Loading @@ -41,10 +41,12 @@ import android.view.DisplayInfo; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.foldables.FoldGracePeriodProvider; import com.android.server.LocalServices; import com.android.server.display.feature.DisplayManagerFlags; import com.android.server.display.layout.DisplayIdProducer; import com.android.server.display.layout.Layout; import com.android.server.display.utils.DebugUtils; import com.android.server.policy.WindowManagerPolicy; import com.android.server.utils.FoldSettingProvider; import java.io.PrintWriter; Loading Loading @@ -189,6 +191,7 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { * #updateLogicalDisplaysLocked} to establish which Virtual Devices own which Virtual Displays. */ private final ArrayMap<String, Integer> mVirtualDeviceDisplayMapping = new ArrayMap<>(); private WindowManagerPolicy mWindowManagerPolicy; private int mNextNonDefaultGroupId = Display.DEFAULT_DISPLAY_GROUP + 1; private final DisplayIdProducer mIdProducer = (isDefault) -> Loading Loading @@ -273,6 +276,10 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { mListener.onTraversalRequested(); } public void onWindowManagerReady() { mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class); } public LogicalDisplay getDisplayLocked(int displayId) { return getDisplayLocked(displayId, /* includeDisabled= */ true); } Loading Loading @@ -1114,14 +1121,22 @@ class LogicalDisplayMapper implements DisplayDeviceRepository.Listener { final int logicalDisplayId = displayLayout.getLogicalDisplayId(); LogicalDisplay newDisplay = getDisplayLocked(logicalDisplayId); boolean newDisplayCreated = false; if (newDisplay == null) { newDisplay = createNewLogicalDisplayLocked( null /*displayDevice*/, logicalDisplayId); newDisplayCreated = true; } // Now swap the underlying display devices between the old display and the new display final LogicalDisplay oldDisplay = getDisplayLocked(device); if (newDisplay != oldDisplay) { // Display is swapping, notify WindowManager, so it can prepare for // the display switch if (!newDisplayCreated && mWindowManagerPolicy != null) { mWindowManagerPolicy.onDisplaySwitchStart(newDisplay.getDisplayIdLocked()); } newDisplay.swapDisplaysLocked(oldDisplay); } DisplayDeviceConfig config = device.getDisplayDeviceConfig(); Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +7 −0 Original line number Diff line number Diff line Loading @@ -5658,6 +5658,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } @Override public void onDisplaySwitchStart(int displayId) { if (displayId == DEFAULT_DISPLAY) { mDefaultDisplayPolicy.onDisplaySwitchStart(); } } private long getKeyguardDrawnTimeout() { final boolean bootCompleted = LocalServices.getService(SystemServiceManager.class).isBootCompleted(); Loading
services/core/java/com/android/server/policy/WindowManagerPolicy.java +3 −0 Original line number Diff line number Diff line Loading @@ -895,6 +895,9 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { void onScreenOff(); } /** Called when the physical display starts to switch, e.g. fold/unfold. */ void onDisplaySwitchStart(int displayId); /** * Return whether the default display is on and not blocked by a black surface. */ Loading