Merge "Workaround a robelectric related NPE in SurfaceSyncGroup.addTimer" into udc-dev am: a380a318d3 am: 3e41d5eb98
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23454315
Change-Id: I334bde2db64f893c5d97dc3ddacb19b8b91af4a2
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/core/java/android/window/SurfaceSyncGroup.java b/core/java/android/window/SurfaceSyncGroup.java
index dfdff9e..5d14698 100644
--- a/core/java/android/window/SurfaceSyncGroup.java
+++ b/core/java/android/window/SurfaceSyncGroup.java
@@ -26,6 +26,7 @@
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.Looper;
import android.os.RemoteException;
import android.os.Trace;
import android.util.ArraySet;
@@ -800,22 +801,25 @@
}
private void addTimeout() {
+ Looper looper = null;
synchronized (sHandlerThreadLock) {
if (sHandlerThread == null) {
sHandlerThread = new HandlerThread("SurfaceSyncGroupTimer");
sHandlerThread.start();
}
+
+ looper = sHandlerThread.getLooper();
}
synchronized (mLock) {
- if (mTimeoutAdded || mTimeoutDisabled) {
+ if (mTimeoutAdded || mTimeoutDisabled || looper == null) {
// We only need one timeout for the entire SurfaceSyncGroup since we just want to
// ensure it doesn't stay stuck forever.
return;
}
if (mHandler == null) {
- mHandler = new Handler(sHandlerThread.getLooper());
+ mHandler = new Handler(looper);
}
mTimeoutAdded = true;