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;