summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAgatha Man <agathaman@google.com>2020-08-19 16:37:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-08-19 16:37:48 +0000
commite48401c14788af367cddf7c8830fe92dcf6c1ee0 (patch)
tree11eb7afac10b6f8a821dae712466339b0b8737fa
parent5d713e00684d18c4cc26a76e040a7562b58d09b9 (diff)
parentcb4dbb8b80a52997e179e6f26943aecdd971b3ed (diff)
Merge "system server watchdog caused by deadlock" into rvc-qpr-dev
-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 5992ff74dfa2..52d4b6fc78df 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -2997,13 +2997,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 */);
}
/**
@@ -3045,11 +3039,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