diff options
| author | Jeff Sharkey <jsharkey@google.com> | 2015-08-04 00:59:58 +0000 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-04 00:59:58 +0000 |
| commit | d4842c374ab8f5578c8faca5a7e3f8d90bd7fab3 (patch) | |
| tree | f1ceea0d974f687f9d8f9ca29cfa86c6f1af3b08 | |
| parent | 126973d460a90c5cac90cf6dffee002e6248122c (diff) | |
| parent | 0faca96f939b8530e5387a30e317d852f39f689f (diff) | |
| download | frameworks_base-d4842c374ab8f5578c8faca5a7e3f8d90bd7fab3.zip frameworks_base-d4842c374ab8f5578c8faca5a7e3f8d90bd7fab3.tar.gz frameworks_base-d4842c374ab8f5578c8faca5a7e3f8d90bd7fab3.tar.bz2 | |
am 0faca96f: Merge "Avoid deadlock by broadcasting outside lock." into mnc-dev
* commit '0faca96f939b8530e5387a30e317d852f39f689f':
Avoid deadlock by broadcasting outside lock.
| -rw-r--r-- | services/core/java/com/android/server/MountService.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java index 7d26a8f..7fa1d09 100644 --- a/services/core/java/com/android/server/MountService.java +++ b/services/core/java/com/android/server/MountService.java @@ -559,6 +559,7 @@ class MountService extends IMountService.Stub private static final int H_FSTRIM = 4; private static final int H_VOLUME_MOUNT = 5; private static final int H_VOLUME_BROADCAST = 6; + private static final int H_INTERNAL_BROADCAST = 7; class MountServiceHandler extends Handler { public MountServiceHandler(Looper looper) { @@ -655,6 +656,13 @@ class MountService extends IMountService.Stub } break; } + case H_INTERNAL_BROADCAST: { + // Internal broadcasts aimed at system components, not for + // third-party apps. + final Intent intent = (Intent) msg.obj; + mContext.sendBroadcastAsUser(intent, UserHandle.ALL, + android.Manifest.permission.WRITE_MEDIA_STORAGE); + } } } } @@ -1126,8 +1134,7 @@ class MountService extends IMountService.Stub intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); intent.putExtra(DiskInfo.EXTRA_DISK_ID, disk.id); intent.putExtra(DiskInfo.EXTRA_VOLUME_COUNT, volumeCount); - mContext.sendBroadcastAsUser(intent, UserHandle.ALL, - android.Manifest.permission.WRITE_MEDIA_STORAGE); + mHandler.obtainMessage(H_INTERNAL_BROADCAST, intent).sendToTarget(); final CountDownLatch latch = mDiskScanLatches.remove(disk.id); if (latch != null) { @@ -1239,8 +1246,7 @@ class MountService extends IMountService.Stub intent.putExtra(VolumeInfo.EXTRA_VOLUME_STATE, newState); intent.putExtra(VolumeRecord.EXTRA_FS_UUID, vol.fsUuid); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); - mContext.sendBroadcastAsUser(intent, UserHandle.ALL, - android.Manifest.permission.WRITE_MEDIA_STORAGE); + mHandler.obtainMessage(H_INTERNAL_BROADCAST, intent).sendToTarget(); } final String oldStateEnv = VolumeInfo.getEnvironmentForState(oldState); |
