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

Commit 49d88aa3 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "AudioDeviceInventory: reapply preferred device roles when needed" into udc-dev

parents f4f5ce43 91b5e6f3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2214,6 +2214,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
                mDeviceInventory.removePreferredDevicesForStrategyInt(mAccessibilityStrategyId);
            }
            mDeviceInventory.applyConnectedDevicesRoles();
            mDeviceInventory.reapplyExternalDevicesRoles();
        } else {
            mDeviceInventory.setPreferredDevicesForStrategyInt(
                    mCommunicationStrategyId, Arrays.asList(preferredCommunicationDevice));
+17 −5
Original line number Diff line number Diff line
@@ -361,23 +361,34 @@ public class AudioDeviceInventory {
                        AudioSystem.DEVICE_STATE_AVAILABLE,
                        di.mDeviceCodecFormat);
            }
            mAppliedStrategyRoles.clear();
            mAppliedStrategyRolesInt.clear();
            mAppliedPresetRoles.clear();
            mAppliedPresetRolesInt.clear();
            applyConnectedDevicesRoles_l();
        }
        reapplyExternalDevicesRoles();
    }

    /*package*/ void reapplyExternalDevicesRoles() {
        synchronized (mDevicesLock) {
            mAppliedStrategyRoles.clear();
            mAppliedPresetRoles.clear();
        }
        synchronized (mPreferredDevices) {
            mPreferredDevices.forEach((strategy, devices) -> {
                setPreferredDevicesForStrategy(strategy, devices); });
                setPreferredDevicesForStrategy(strategy, devices);
            });
        }
        synchronized (mNonDefaultDevices) {
            mNonDefaultDevices.forEach((strategy, devices) -> {
                addDevicesRoleForStrategy(strategy, AudioSystem.DEVICE_ROLE_DISABLED,
                        devices, false /* internal */); });
                        devices, false /* internal */);
            });
        }
        synchronized (mPreferredDevicesForCapturePreset) {
            // TODO: call audiosystem to restore
            mPreferredDevicesForCapturePreset.forEach((capturePreset, devices) -> {
                setDevicesRoleForCapturePreset(
                        capturePreset, AudioSystem.DEVICE_ROLE_PREFERRED, devices);
            });
        }
    }

@@ -1163,6 +1174,7 @@ public class AudioDeviceInventory {
            return mAudioSystem.removeDevicesRoleForStrategy(s, r, d); });
        purgeRoles(mAppliedPresetRolesInt, (p, r, d) -> {
            return mAudioSystem.removeDevicesRoleForCapturePreset(p, r, d); });
        reapplyExternalDevicesRoles();
    }

    @GuardedBy("mDevicesLock")