OSDN Git Service

Do not unminimize after rotate when minimized getting wrong transition
authorMatthew Ng <ngmatthew@google.com>
Thu, 18 May 2017 21:42:51 +0000 (14:42 -0700)
committerMatthew Ng <ngmatthew@google.com>
Thu, 18 May 2017 22:54:28 +0000 (15:54 -0700)
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

services/core/java/com/android/server/wm/WindowSurfacePlacer.java

index ddd1ca5..53fb94e 100644 (file)
@@ -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()