summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dianne Hackborn <hackbod@google.com> 2013-06-27 20:25:59 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2013-06-27 20:25:59 +0000
commit97e1d53d36d3ce11fc1b8322c11320cbd614f960 (patch)
tree6ad9c98158394ef95dcefb50b8d0b69a05019f1a
parent8cbafbe6d2b6ea63bc5a4b70c296609ad7e1311c (diff)
parentebe830683e0f6f7fe8615e5b76dbbbb2c6133e67 (diff)
Merge "Fix issue #9586838: Crash after waking up Hammerhead device"
-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 e4b987b94045..e37eec615ea6 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -7578,8 +7578,13 @@ public final class ActivityManagerService extends ActivityManagerNative
}
synchronized(this) {
- mLockScreenShown = shown;
- comeOutOfSleepIfNeededLocked();
+ long ident = Binder.clearCallingIdentity();
+ try {
+ mLockScreenShown = shown;
+ comeOutOfSleepIfNeededLocked();
+ } finally {
+ Binder.restoreCallingIdentity(ident);
+ }
}
}
@@ -7637,33 +7642,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);
}
}