Loading services/core/java/com/android/server/audio/AudioDeviceBroker.java +1 −0 Original line number Diff line number Diff line Loading @@ -2214,6 +2214,7 @@ import java.util.concurrent.atomic.AtomicBoolean; mDeviceInventory.removePreferredDevicesForStrategyInt(mAccessibilityStrategyId); } mDeviceInventory.applyConnectedDevicesRoles(); mDeviceInventory.reapplyExternalDevicesRoles(); } else { mDeviceInventory.setPreferredDevicesForStrategyInt( mCommunicationStrategyId, Arrays.asList(preferredCommunicationDevice)); Loading services/core/java/com/android/server/audio/AudioDeviceInventory.java +17 −5 Original line number Diff line number Diff line Loading @@ -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); }); } } Loading Loading @@ -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") Loading Loading
services/core/java/com/android/server/audio/AudioDeviceBroker.java +1 −0 Original line number Diff line number Diff line Loading @@ -2214,6 +2214,7 @@ import java.util.concurrent.atomic.AtomicBoolean; mDeviceInventory.removePreferredDevicesForStrategyInt(mAccessibilityStrategyId); } mDeviceInventory.applyConnectedDevicesRoles(); mDeviceInventory.reapplyExternalDevicesRoles(); } else { mDeviceInventory.setPreferredDevicesForStrategyInt( mCommunicationStrategyId, Arrays.asList(preferredCommunicationDevice)); Loading
services/core/java/com/android/server/audio/AudioDeviceInventory.java +17 −5 Original line number Diff line number Diff line Loading @@ -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); }); } } Loading Loading @@ -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") Loading