Merge "Fix stuck screen from display change timeout"

This commit is contained in:
Nick Chameyev
2023-04-28 12:50:45 +00:00
committed by Gerrit Code Review

View File

@@ -114,10 +114,16 @@ public class RemoteDisplayChangeController {
// timed-out, so run all continue callbacks and clear the list // timed-out, so run all continue callbacks and clear the list
synchronized (mService.mGlobalLock) { synchronized (mService.mGlobalLock) {
for (int i = 0; i < mCallbacks.size(); ++i) { for (int i = 0; i < mCallbacks.size(); ++i) {
mCallbacks.get(i).onContinueRemoteDisplayChange(null /* transaction */); final ContinueRemoteDisplayChangeCallback callback = mCallbacks.get(i);
} if (i == mCallbacks.size() - 1) {
// Clear all callbacks before calling the last one, so that if the callback
// itself calls {@link #isWaitingForRemoteDisplayChange()}, it will get
// {@code false}. After all, there is nothing pending after this one.
mCallbacks.clear(); mCallbacks.clear();
} }
callback.onContinueRemoteDisplayChange(null /* transaction */);
}
}
} }
private void continueDisplayChange(@NonNull ContinueRemoteDisplayChangeCallback callback, private void continueDisplayChange(@NonNull ContinueRemoteDisplayChangeCallback callback,