summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Iris Yang <irisykyang@google.com> 2022-09-06 10:29:43 +0800
committer Iris Yang <irisykyang@google.com> 2022-09-06 10:29:43 +0800
commitfebe3f029d8fdade050406786a7ff4a3e5bdce4c (patch)
treec0bd8060986021146901f0eda4469c87a809b359
parentcd1952c848f7bacf6d131eb2bd7356c1830804bb (diff)
Post callback onSecureWindowShown on the main thread
onSecureWindowShown will trigger a toast showing and might cause deadlock since showing a toast will acquire ActivityManagerService lock. Post onSecureWindowShown on the main thread, so it doesn't block activity launching. Bug: 244139910 Test: Manually test with Exo on multi-display environment Change-Id: Idf29b534a3657a265a5f389e0b388bc3af19c04e
-rw-r--r--services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java b/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java
index 593a63c2f0c9..fc628cfdced2 100644
--- a/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java
+++ b/services/companion/java/com/android/server/companion/virtual/GenericWindowPolicyController.java
@@ -250,7 +250,9 @@ public class GenericWindowPolicyController extends DisplayWindowPolicyController
// The callback is fired only when windowFlags are changed. To let VirtualDevice owner
// aware that the virtual display has a secure window on top.
if ((windowFlags & FLAG_SECURE) != 0) {
- mSecureWindowCallback.onSecureWindowShown(mDisplayId, activityInfo.applicationInfo.uid);
+ // Post callback on the main thread, so it doesn't block activity launching.
+ mHandler.post(() -> mSecureWindowCallback.onSecureWindowShown(mDisplayId,
+ activityInfo.applicationInfo.uid));
}
if (!canContainActivity(activityInfo, windowFlags, systemWindowFlags)) {