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

Commit cdd4cfb9 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android Git Automerger
Browse files

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

* commit 'd4842c37':
  Avoid deadlock by broadcasting outside lock.
parents 616ae85e d4842c37
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);