summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Agatha Man <agathaman@google.com> 2020-08-07 16:33:41 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-08-07 16:33:41 +0000
commit3ad9fe90d3c9537535e8588ad302d0cf6804280e (patch)
tree64975a58a4459e293bc5ddea788e80aae9539142
parent0f60ef818f0ab8fb21233117daafcc3cd7fa3543 (diff)
parent3a17ba2f2560405ee8415d2d652eb3dd3c7449fc (diff)
Merge "system server watchdog caused by deadlock"
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java18
1 files changed, 10 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 627361d780a2..31a9c5d4242c 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -2999,13 +2999,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
@Override
public void stopLockTaskModeByToken(IBinder token) {
- synchronized (mGlobalLock) {
- final ActivityRecord r = ActivityRecord.forTokenLocked(token);
- if (r == null) {
- return;
- }
- stopLockTaskModeInternal(r.getTask(), false /* isSystemCaller */);
- }
+ stopLockTaskModeInternal(token, false /* isSystemCaller */);
}
/**
@@ -3047,11 +3041,19 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
}
}
- private void stopLockTaskModeInternal(@Nullable Task task, boolean isSystemCaller) {
+ private void stopLockTaskModeInternal(@Nullable IBinder token, boolean isSystemCaller) {
final int callingUid = Binder.getCallingUid();
long ident = Binder.clearCallingIdentity();
try {
synchronized (mGlobalLock) {
+ Task task = null;
+ if (token != null) {
+ final ActivityRecord r = ActivityRecord.forTokenLocked(token);
+ if (r == null) {
+ return;
+ }
+ task = r.getTask();
+ }
getLockTaskController().stopLockTaskMode(task, isSystemCaller, callingUid);
}
// Launch in-call UI if a call is ongoing. This is necessary to allow stopping the lock