diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/WindowManagerService.java | 20 | 
1 files changed, 12 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index a25a84c091ea..7b389f5600ba 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4095,6 +4095,8 @@ public class WindowManagerService extends IWindowManager.Stub                  mAppTransition.prepare();                  mStartingIconInTransition = false;                  mSkipAppTransitionAnimation = false; +            } +            if (mAppTransition.isTransitionSet()) {                  mH.removeMessages(H.APP_TRANSITION_TIMEOUT);                  mH.sendEmptyMessageDelayed(H.APP_TRANSITION_TIMEOUT, 5000);              } @@ -7906,8 +7908,12 @@ public class WindowManagerService extends IWindowManager.Stub                  case APP_TRANSITION_TIMEOUT: {                      synchronized (mWindowMap) { -                        if (mAppTransition.isTransitionSet()) { -                            if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** APP TRANSITION TIMEOUT"); +                        if (mAppTransition.isTransitionSet() || !mOpeningApps.isEmpty() +                                    || !mClosingApps.isEmpty()) { +                            if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, "*** APP TRANSITION TIMEOUT." +                                    + " isTransitionSet()=" + mAppTransition.isTransitionSet() +                                    + " mOpeningApps.size()=" + mOpeningApps.size() +                                    + " mClosingApps.size()=" + mClosingApps.size());                              mAppTransition.setTimeout();                              performLayoutAndPlaceSurfacesLocked();                          } @@ -9069,10 +9075,7 @@ public class WindowManagerService extends IWindowManager.Stub                  "Checking " + NN + " opening apps (frozen="                  + mDisplayFrozen + " timeout="                  + mAppTransition.isTimeout() + ")..."); -        if (!mDisplayFrozen && !mAppTransition.isTimeout()) { -            // If the display isn't frozen, wait to do anything until -            // all of the apps are ready.  Otherwise just go because -            // we'll unfreeze the display when everyone is ready. +        if (!mAppTransition.isTimeout()) {              for (i=0; i<NN && goodToGo; i++) {                  AppWindowToken wtoken = mOpeningApps.valueAt(i);                  if (DEBUG_APP_TRANSITIONS) Slog.v(TAG, @@ -10706,12 +10709,13 @@ public class WindowManagerService extends IWindowManager.Stub          }          if (mWaitingForConfig || mAppsFreezingScreen > 0 || mWindowsFreezingScreen -                || mClientFreezingScreen) { +                || mClientFreezingScreen || !mOpeningApps.isEmpty()) {              if (DEBUG_ORIENTATION) Slog.d(TAG,                  "stopFreezingDisplayLocked: Returning mWaitingForConfig=" + mWaitingForConfig                  + ", mAppsFreezingScreen=" + mAppsFreezingScreen                  + ", mWindowsFreezingScreen=" + mWindowsFreezingScreen -                + ", mClientFreezingScreen=" + mClientFreezingScreen); +                + ", mClientFreezingScreen=" + mClientFreezingScreen +                + ", mOpeningApps.size()=" + mOpeningApps.size());              return;          }  |