Merge "Wait for all windows to draw before turning screen on" into klp-modular-dev

This commit is contained in:
Justin Koh
2014-07-17 00:43:18 +00:00
committed by Android (Google) Code Review

View File

@@ -10930,16 +10930,21 @@ public class WindowManagerService extends IWindowManager.Stub
public void waitForAllWindowsDrawn(IRemoteCallback callback, long timeout) { public void waitForAllWindowsDrawn(IRemoteCallback callback, long timeout) {
synchronized (mWindowMap) { synchronized (mWindowMap) {
mWaitingForDrawnCallback = callback; mWaitingForDrawnCallback = callback;
final WindowList windows = getDefaultWindowListLocked(); 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) { for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
final WindowState win = windows.get(winNdx); final WindowState win = windows.get(winNdx);
if (win.mHasSurface) { if (win.mHasSurface) {
win.mWinAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING; win.mWinAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING;
// Force add to mResizingWindows. // Force add to mResizingWindows.
win.mLastContentInsets.set(-1, -1, -1, -1); win.mLastContentInsets.set(-1, -1, -1, -1);
if (DEBUG_SCREEN_ON) Slog.d(TAG, "waitForAllWindowsDrawn: adding " +
win);
mWaitingForDrawn.add(win); mWaitingForDrawn.add(win);
} }
} }
}
requestTraversalLocked(); requestTraversalLocked();
mH.removeMessages(H.WAITING_FOR_DRAWN_TIMEOUT); mH.removeMessages(H.WAITING_FOR_DRAWN_TIMEOUT);
mH.sendEmptyMessageDelayed(H.WAITING_FOR_DRAWN_TIMEOUT, timeout); mH.sendEmptyMessageDelayed(H.WAITING_FOR_DRAWN_TIMEOUT, timeout);