summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorCraig Mautner <cmautner@google.com>2014-07-16 16:07:26 -0700
committerCraig Mautner <cmautner@google.com>2014-07-16 17:03:36 -0700
commit0a589b929e18d05d1345d97283c3025058ddca18 (patch)
tree1d17bd275b3ca6acc72604878746e726c8edaf8e /services
parent575537759222e0277c3979e33342407aa7ca1a78 (diff)
downloadframeworks_base-0a589b929e18d05d1345d97283c3025058ddca18.zip
frameworks_base-0a589b929e18d05d1345d97283c3025058ddca18.tar.gz
frameworks_base-0a589b929e18d05d1345d97283c3025058ddca18.tar.bz2
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
Diffstat (limited to 'services')
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java21
1 files changed, 13 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 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();