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

Commit e3b8df3a authored by Alex Shabalin's avatar Alex Shabalin Committed by Alexandr Shabalin
Browse files

Remove InfoMediaManager synchronized block on class instance.

The synchronized blocks are unnecessary since the mutable state is
protected by `synchronized (mLock)`

Bug: 428663871
Flag: EXEMPT bugfix
Test: on a physical device
Change-Id: I8b757beea787a4126b67b81f8dd3dffa4ade878d
parent 83b7c110
Loading
Loading
Loading
Loading
+17 −17
Original line number Diff line number Diff line
@@ -210,7 +210,7 @@ public abstract class InfoMediaManager {

    private static final String TAG = "InfoMediaManager";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
    private final Object mLock = new Object();
    protected final Object mLock = new Object();
    protected final List<MediaDevice> mMediaDevices = new CopyOnWriteArrayList<>();
    @NonNull protected final Context mContext;
    @NonNull protected final String mPackageName;
@@ -373,9 +373,7 @@ public abstract class InfoMediaManager {
    protected abstract List<MediaRoute2Info> getTransferableRoutes(@NonNull String packageName);

    protected final void rebuildDeviceList() {
        synchronized (mLock) {
        buildAvailableRoutes();
        }
        updateDeviceSuggestion();
    }

@@ -847,14 +845,15 @@ public abstract class InfoMediaManager {
        return didUpdate;
    }

    protected final synchronized void refreshDevices() {
    protected final void refreshDevices() {
        rebuildDeviceList();
        dispatchDeviceListAdded(mMediaDevices);
    }

    // MediaRoute2Info.getType was made public on API 34, but exists since API 30.
    @SuppressWarnings("NewApi")
    private synchronized void buildAvailableRoutes() {
    private void buildAvailableRoutes() {
        synchronized (mLock) {
            mMediaDevices.clear();
            RoutingSessionInfo activeSession = getActiveRoutingSession();

@@ -868,8 +867,9 @@ public abstract class InfoMediaManager {
                mCurrentConnectedDevice = mMediaDevices.get(0);
            }
        }
    }

    private synchronized List<MediaRoute2Info> getAvailableRoutes(
    private List<MediaRoute2Info> getAvailableRoutes(
            RoutingSessionInfo activeSession) {
        List<MediaRoute2Info> availableRoutes = new ArrayList<>();

@@ -1058,7 +1058,7 @@ public abstract class InfoMediaManager {
    @RequiresApi(34)
    static class Api34Impl {
        @DoNotInline
        static synchronized List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) {
        static List<MediaRoute2Info> filterDuplicatedIds(List<MediaRoute2Info> infos) {
            List<MediaRoute2Info> filteredInfos = new ArrayList<>();
            Set<String> foundDeduplicationIds = new HashSet<>();
            for (MediaRoute2Info mediaRoute2Info : infos) {
+3 −3
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
                public void onSuggestionsRequested() {} // no-op
            };

    @GuardedBy("this")
    @GuardedBy("InfoMediaManager.this.fieldName")
    @Nullable
    private MediaRouter2.ScanToken mScanToken;

@@ -150,7 +150,7 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
    @Override
    protected void startScanOnRouter() {
        if (Flags.enableScreenOffScanning()) {
            synchronized (this) {
            synchronized (super.mLock) {
                if (mScanToken == null) {
                    MediaRouter2.ScanRequest request =
                            new MediaRouter2.ScanRequest.Builder().build();
@@ -182,7 +182,7 @@ public final class RouterInfoMediaManager extends InfoMediaManager {
    @Override
    protected void stopScanOnRouter() {
        if (Flags.enableScreenOffScanning()) {
            synchronized (this) {
            synchronized (super.mLock) {
                if (mScanToken != null) {
                    mRouter.cancelScanRequest(mScanToken);
                    mScanToken = null;