Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9bc5f2f4 authored by Koji Fukui's avatar Koji Fukui Committed by Sascha Prueter
Browse files

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 39f7068e)

Change-Id: I1354c193c04db394a21a11c174e10c8e7da17a0e

Fixes bug: b/13632129
parent b78dc69c
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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);