diff options
| author | 2015-07-15 23:30:49 +0000 | |
|---|---|---|
| committer | 2015-07-15 23:31:02 +0000 | |
| commit | 67e02e60ca58db95b397fde7bfeeebb012e8aff8 (patch) | |
| tree | 0b5766d29e0ed5ac2588f7075d9b3337c1ad4472 | |
| parent | c4e2bcd4dca0401ca38a45dce04d29b92231d677 (diff) | |
| parent | 16f3671620bab310f5ed4f9222d4a36a8dcef562 (diff) | |
Merge "Fix issue #22487155: Device unresponsive (deadlock in system_server)" into mnc-dev
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 24 | 
1 files changed, 14 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 37aa40847ff1..1582037ad4b0 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -10801,6 +10801,8 @@ public final class ActivityManagerService extends ActivityManagerNative          }          // We are now ready to launch the assist activity. +        IResultReceiver sendReceiver = null; +        Bundle sendBundle = null;          synchronized (this) {              buildAssistBundleLocked(pae, extras);              boolean exists = mPendingAssistExtras.remove(pae); @@ -10809,19 +10811,21 @@ public final class ActivityManagerService extends ActivityManagerNative                  // Timed out.                  return;              } -            if (pae.receiver != null) { +            if ((sendReceiver=pae.receiver) != null) {                  // Caller wants result sent back to them. -                Bundle topBundle = new Bundle(); -                topBundle.putBundle("data", pae.extras); -                topBundle.putParcelable("structure", pae.structure); -                topBundle.putParcelable("content", pae.content); -                try { -                    pae.receiver.send(0, topBundle); -                } catch (RemoteException e) { -                } -                return; +                sendBundle = new Bundle(); +                sendBundle.putBundle("data", pae.extras); +                sendBundle.putParcelable("structure", pae.structure); +                sendBundle.putParcelable("content", pae.content);              }          } +        if (sendReceiver != null) { +            try { +                sendReceiver.send(0, sendBundle); +            } catch (RemoteException e) { +            } +            return; +        }          long ident = Binder.clearCallingIdentity();          try {  |