Merge "Catch RejectedExecutionException for DisplayChanged from WM" into 24D1-dev
diff --git a/core/java/android/app/servertransaction/ClientTransactionListenerController.java b/core/java/android/app/servertransaction/ClientTransactionListenerController.java
index 1a8136e..53cec08 100644
--- a/core/java/android/app/servertransaction/ClientTransactionListenerController.java
+++ b/core/java/android/app/servertransaction/ClientTransactionListenerController.java
@@ -23,9 +23,12 @@
 import android.annotation.NonNull;
 import android.app.ActivityThread;
 import android.hardware.display.DisplayManagerGlobal;
+import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.util.concurrent.RejectedExecutionException;
+
 /**
  * Singleton controller to manage listeners to individual {@link ClientTransaction}.
  *
@@ -33,6 +36,8 @@
  */
 public class ClientTransactionListenerController {
 
+    private static final String TAG = "ClientTransactionListenerController";
+
     private static ClientTransactionListenerController sController;
 
     private final DisplayManagerGlobal mDisplayManager;
@@ -73,6 +78,10 @@
             // Not enable for system server.
             return;
         }
-        mDisplayManager.handleDisplayChangeFromWindowManager(displayId);
+        try {
+            mDisplayManager.handleDisplayChangeFromWindowManager(displayId);
+        } catch (RejectedExecutionException e) {
+            Log.w(TAG, "Failed to notify DisplayListener because the Handler is shutting down");
+        }
     }
 }