am cdd4cfb9: am d4842c37: am 0faca96f: Merge "Avoid deadlock by broadcasting outside lock." into mnc-dev

* commit 'cdd4cfb95616c725d483d265e1aecd740ef0a8a5':
  Avoid deadlock by broadcasting outside lock.
This commit is contained in:
Jeff Sharkey
2015-08-04 01:17:29 +00:00
committed by Android Git Automerger

View File

@@ -559,6 +559,7 @@ class MountService extends IMountService.Stub
private static final int H_FSTRIM = 4; private static final int H_FSTRIM = 4;
private static final int H_VOLUME_MOUNT = 5; private static final int H_VOLUME_MOUNT = 5;
private static final int H_VOLUME_BROADCAST = 6; private static final int H_VOLUME_BROADCAST = 6;
private static final int H_INTERNAL_BROADCAST = 7;
class MountServiceHandler extends Handler { class MountServiceHandler extends Handler {
public MountServiceHandler(Looper looper) { public MountServiceHandler(Looper looper) {
@@ -655,6 +656,13 @@ class MountService extends IMountService.Stub
} }
break; 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.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
intent.putExtra(DiskInfo.EXTRA_DISK_ID, disk.id); intent.putExtra(DiskInfo.EXTRA_DISK_ID, disk.id);
intent.putExtra(DiskInfo.EXTRA_VOLUME_COUNT, volumeCount); intent.putExtra(DiskInfo.EXTRA_VOLUME_COUNT, volumeCount);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL, mHandler.obtainMessage(H_INTERNAL_BROADCAST, intent).sendToTarget();
android.Manifest.permission.WRITE_MEDIA_STORAGE);
final CountDownLatch latch = mDiskScanLatches.remove(disk.id); final CountDownLatch latch = mDiskScanLatches.remove(disk.id);
if (latch != null) { if (latch != null) {
@@ -1239,8 +1246,7 @@ class MountService extends IMountService.Stub
intent.putExtra(VolumeInfo.EXTRA_VOLUME_STATE, newState); intent.putExtra(VolumeInfo.EXTRA_VOLUME_STATE, newState);
intent.putExtra(VolumeRecord.EXTRA_FS_UUID, vol.fsUuid); intent.putExtra(VolumeRecord.EXTRA_FS_UUID, vol.fsUuid);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL, mHandler.obtainMessage(H_INTERNAL_BROADCAST, intent).sendToTarget();
android.Manifest.permission.WRITE_MEDIA_STORAGE);
} }
final String oldStateEnv = VolumeInfo.getEnvironmentForState(oldState); final String oldStateEnv = VolumeInfo.getEnvironmentForState(oldState);