From 26a1cecd2f9e99d7024d80748f165762a82df1e1 Mon Sep 17 00:00:00 2001 From: Matthew Ng Date: Thu, 18 May 2017 14:42:51 -0700 Subject: [PATCH] Do not unminimize after rotate when minimized getting wrong transition Docked divider was launching recents (which would unminimize) after rotation if there was more than 1 app window token in WindowManagerService.mOpeningApps and therefore this occurred intermittently. Also the app transition was incorrect WindowSurfacePlacer.handleAppTransitionReadyLocked() taking TRANSIT_NONE and converting it to something else (maybeUpdateTransitToWallpaper). Therefore pass through TRANSIT_NONE to prevent recents to run after rotating the screen even if more than 1 app window token is in mOpeningApps. Test: manual - play around with split screen then minimize and rotate Fixes: 38393264 Change-Id: Ifd536a8ce19f27c9244d68e3a63cad31e0b5d775 --- .../java/com/android/server/wm/WindowSurfacePlacer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java index ddd1ca5c1aecd..53fb94e8d57e9 100644 --- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java +++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java @@ -15,6 +15,7 @@ import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AW import static com.android.server.wm.AppTransition.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_WALLPAPER; import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_GOING_AWAY; import static com.android.server.wm.AppTransition.TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPER; +import static com.android.server.wm.AppTransition.TRANSIT_NONE; import static com.android.server.wm.AppTransition.TRANSIT_TASK_CLOSE; import static com.android.server.wm.AppTransition.TRANSIT_TASK_IN_PLACE; import static com.android.server.wm.AppTransition.TRANSIT_TASK_OPEN; @@ -579,6 +580,11 @@ class WindowSurfacePlacer { private int maybeUpdateTransitToWallpaper(int transit, boolean openingAppHasWallpaper, boolean closingAppHasWallpaper) { + // Given no app transition pass it through instead of a wallpaper transition + if (transit == TRANSIT_NONE) { + return TRANSIT_NONE; + } + // if wallpaper is animating in or out set oldWallpaper to null else to wallpaper final WindowState wallpaperTarget = mWallpaperControllerLocked.getWallpaperTarget(); final WindowState oldWallpaper = mWallpaperControllerLocked.isWallpaperTargetAnimating()