Merge "Call WindowManagerInternal#waitForAllWindowsDrawn for secondary displays" into sc-dev

This commit is contained in:
Sean Stout
2021-05-01 04:20:14 +00:00
committed by Android (Google) Code Review

View File

@@ -413,13 +413,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
volatile boolean mBootAnimationDismissable;
private KeyguardServiceDelegate mKeyguardDelegate;
private boolean mKeyguardBound;
final Runnable mWindowManagerDrawCallback = new Runnable() {
@Override
public void run() {
if (DEBUG_WAKEUP) Slog.i(TAG, "All windows ready for display!");
mHandler.sendEmptyMessage(MSG_WINDOW_MANAGER_DRAWN_COMPLETE);
}
};
final DrawnListener mKeyguardDrawnCallback = new DrawnListener() {
@Override
public void onDrawn() {
@@ -646,7 +639,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
case MSG_WINDOW_MANAGER_DRAWN_COMPLETE:
if (DEBUG_WAKEUP) Slog.w(TAG, "Setting mWindowManagerDrawComplete");
finishWindowsDrawn();
finishWindowsDrawn(msg.arg1);
break;
case MSG_HIDE_BOOT_MESSAGE:
handleHideBootMessage();
@@ -4308,8 +4301,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
// ... eventually calls finishWindowsDrawn which will finalize our screen turn on
// as well as enabling the orientation change logic/sensor.
mWindowManagerInternal.waitForAllWindowsDrawn(mWindowManagerDrawCallback,
WAITING_FOR_DRAWN_TIMEOUT, INVALID_DISPLAY);
mWindowManagerInternal.waitForAllWindowsDrawn(() -> {
if (DEBUG_WAKEUP) Slog.i(TAG, "All windows ready for every display");
mHandler.sendMessage(mHandler.obtainMessage(MSG_WINDOW_MANAGER_DRAWN_COMPLETE,
INVALID_DISPLAY, 0));
}, WAITING_FOR_DRAWN_TIMEOUT, INVALID_DISPLAY);
}
// Called on the DisplayManager's DisplayPowerController thread.
@@ -4369,6 +4365,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
} else {
mScreenOnListeners.put(displayId, screenOnListener);
mWindowManagerInternal.waitForAllWindowsDrawn(() -> {
if (DEBUG_WAKEUP) Slog.i(TAG, "All windows ready for display: " + displayId);
mHandler.sendMessage(mHandler.obtainMessage(MSG_WINDOW_MANAGER_DRAWN_COMPLETE,
displayId, 0));
}, WAITING_FOR_DRAWN_TIMEOUT, displayId);
}
}
@@ -4409,7 +4410,15 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mVrManagerInternal.onScreenStateChanged(isScreenOn);
}
private void finishWindowsDrawn() {
private void finishWindowsDrawn(int displayId) {
if (displayId != DEFAULT_DISPLAY && displayId != INVALID_DISPLAY) {
final ScreenOnListener screenOnListener = mScreenOnListeners.removeReturnOld(displayId);
if (screenOnListener != null) {
screenOnListener.onScreenOn();
}
return;
}
if (!mDefaultDisplayPolicy.finishWindowsDrawn()) {
return;
}
@@ -4453,14 +4462,6 @@ public class PhoneWindowManager implements WindowManagerPolicy {
if (listener != null) {
listener.onScreenOn();
}
for (int i = mScreenOnListeners.size() - 1; i >= 0; i--) {
final ScreenOnListener screenOnListener = mScreenOnListeners.valueAt(i);
if (screenOnListener != null) {
screenOnListener.onScreenOn();
}
}
mScreenOnListeners.clear();
}
if (enableScreen) {