From 0a589b929e18d05d1345d97283c3025058ddca18 Mon Sep 17 00:00:00 2001 From: Craig Mautner Date: Wed, 16 Jul 2014 16:07:26 -0700 Subject: Wait for all windows to draw before turning screen on Was previously only waiting for windows on the primary display to draw which meant that windows on ActivityViews had not yet drawn. This fix checks redraws all outstanding Surfaces before unblanking the screen. Fixes bug 15092354. Change-Id: Id550db003a5f56931eb68464085596e47d25481d --- .../com/android/server/wm/WindowManagerService.java | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'services') diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 5626c7a..e3e79f0 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -10930,14 +10930,19 @@ public class WindowManagerService extends IWindowManager.Stub public void waitForAllWindowsDrawn(IRemoteCallback callback, long timeout) { synchronized (mWindowMap) { mWaitingForDrawnCallback = callback; - final WindowList windows = getDefaultWindowListLocked(); - for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) { - final WindowState win = windows.get(winNdx); - if (win.mHasSurface) { - win.mWinAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING; - // Force add to mResizingWindows. - win.mLastContentInsets.set(-1, -1, -1, -1); - mWaitingForDrawn.add(win); + for (int displayNdx = mDisplayContents.size() - 1; displayNdx >= 0; --displayNdx) { + final WindowList windows = + mDisplayContents.valueAt(displayNdx).getWindowList(); + for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) { + final WindowState win = windows.get(winNdx); + if (win.mHasSurface) { + win.mWinAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING; + // Force add to mResizingWindows. + win.mLastContentInsets.set(-1, -1, -1, -1); + if (DEBUG_SCREEN_ON) Slog.d(TAG, "waitForAllWindowsDrawn: adding " + + win); + mWaitingForDrawn.add(win); + } } } requestTraversalLocked(); -- cgit v1.1