summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dianne Hackborn <hackbod@google.com> 2013-06-27 12:42:13 -0700
committer Dianne Hackborn <hackbod@google.com> 2013-06-27 12:42:13 -0700
commitebe830683e0f6f7fe8615e5b76dbbbb2c6133e67 (patch)
tree93b2f8828fff8a70eb702df065fb62cd94d5e568
parent9b43a604059a8d8dc8186862bddbf12082d67e93 (diff)
Fix issue #9586838: Crash after waking up Hammerhead device
Change-Id: I114306871f02b2461619e8a1cc9652f343edd117
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java62
1 files changed, 35 insertions, 27 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 475092aa26dd..34703723c16b 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -7575,8 +7575,13 @@ public final class ActivityManagerService extends ActivityManagerNative
}
synchronized(this) {
- mLockScreenShown = shown;
- comeOutOfSleepIfNeededLocked();
+ long ident = Binder.clearCallingIdentity();
+ try {
+ mLockScreenShown = shown;
+ comeOutOfSleepIfNeededLocked();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
}
@@ -7634,33 +7639,36 @@ public final class ActivityManagerService extends ActivityManagerNative
enforceCallingPermission(android.Manifest.permission.SET_DEBUG_APP,
"setDebugApp()");
- // Note that this is not really thread safe if there are multiple
- // callers into it at the same time, but that's not a situation we
- // care about.
- if (persistent) {
- final ContentResolver resolver = mContext.getContentResolver();
- Settings.Global.putString(
- resolver, Settings.Global.DEBUG_APP,
- packageName);
- Settings.Global.putInt(
- resolver, Settings.Global.WAIT_FOR_DEBUGGER,
- waitForDebugger ? 1 : 0);
- }
+ long ident = Binder.clearCallingIdentity();
+ try {
+ // Note that this is not really thread safe if there are multiple
+ // callers into it at the same time, but that's not a situation we
+ // care about.
+ if (persistent) {
+ final ContentResolver resolver = mContext.getContentResolver();
+ Settings.Global.putString(
+ resolver, Settings.Global.DEBUG_APP,
+ packageName);
+ Settings.Global.putInt(
+ resolver, Settings.Global.WAIT_FOR_DEBUGGER,
+ waitForDebugger ? 1 : 0);
+ }
- synchronized (this) {
- if (!persistent) {
- mOrigDebugApp = mDebugApp;
- mOrigWaitForDebugger = mWaitForDebugger;
- }
- mDebugApp = packageName;
- mWaitForDebugger = waitForDebugger;
- mDebugTransient = !persistent;
- if (packageName != null) {
- final long origId = Binder.clearCallingIdentity();
- forceStopPackageLocked(packageName, -1, false, false, true, true,
- UserHandle.USER_ALL, "set debug app");
- Binder.restoreCallingIdentity(origId);
+ synchronized (this) {
+ if (!persistent) {
+ mOrigDebugApp = mDebugApp;
+ mOrigWaitForDebugger = mWaitForDebugger;
+ }
+ mDebugApp = packageName;
+ mWaitForDebugger = waitForDebugger;
+ mDebugTransient = !persistent;
+ if (packageName != null) {
+ forceStopPackageLocked(packageName, -1, false, false, true, true,
+ UserHandle.USER_ALL, "set debug app");
+ }
}
+ } finally {
+ Binder.restoreCallingIdentity(ident);
}
}