Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0faca96f authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Avoid deadlock by broadcasting outside lock." into mnc-dev

parents 405eceb2 abc3e85b
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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);