summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoji Fukui <koji.fukui@sonymobile.com>2014-03-14 21:20:21 +0900
committerSascha Prueter <saschap@google.com>2014-03-25 17:04:27 +0000
commit9bc5f2f457844bd75747be40bd4593a2378d7c3d (patch)
tree8ac43ddd1c953ea5a6acf543fb8490364b8a9084
parentb78dc69c2be43852dcd7150db2b545f9b4110232 (diff)
downloadbase-9bc5f2f457844bd75747be40bd4593a2378d7c3d.tar.gz
Don't wait for finishing animation when second display is disconnected
Basically WindowManagerService wait for finishing animation when a window is removed. But when second display is disconnected, windows on second display can't be shown even if animation is waited for. On the contrary, it keeps on waiting for finishing the animation in special case. With this fix windows are immediately removed without waiting for animation when second display is disconnected. (Cherry picked from aosp 39f7068ed903f747d6885117dc1bac69f626ae91) Change-Id: I1354c193c04db394a21a11c174e10c8e7da17a0e Fixes bug: b/13632129
-rw-r--r--services/java/com/android/server/wm/WindowManagerService.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 3ed507656fd6..f4b4db9164bb 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -2373,6 +2373,11 @@ public class WindowManagerService extends IWindowManager.Stub
}
public void removeWindowLocked(Session session, WindowState win) {
+ removeWindowLocked(session, win, false);
+ }
+
+ private void removeWindowLocked(Session session, WindowState win,
+ boolean forceRemove) {
if (win.mAttrs.type == TYPE_APPLICATION_STARTING) {
if (DEBUG_STARTING_WINDOW) Slog.d(TAG, "Starting window removed " + win);
removeStartingWindowTimeout(win.mAppToken);
@@ -2423,7 +2428,7 @@ public class WindowManagerService extends IWindowManager.Stub
mDisplayMagnifier.onWindowTransitionLocked(win, transit);
}
}
- if (win.mExiting || win.mWinAnimator.isAnimating()) {
+ if (!forceRemove && (win.mExiting || win.mWinAnimator.isAnimating())) {
// The exit animation is running... wait for it!
//Slog.i(TAG, "*** Running exit animation...");
win.mExiting = true;
@@ -10840,7 +10845,7 @@ public class WindowManagerService extends IWindowManager.Stub
WindowList windows = displayContent.getWindowList();
while (!windows.isEmpty()) {
final WindowState win = windows.get(windows.size() - 1);
- removeWindowLocked(win.mSession, win);
+ removeWindowLocked(win.mSession, win, true);
}
}
mAnimator.removeDisplayLocked(displayId);