diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index fb2bb5ff045d2..c7406bffc8625 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4108,6 +4108,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); } @@ -7926,8 +7928,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(); } @@ -9089,10 +9095,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 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; }