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

This commit is contained in:
Eric Laurent
2023-06-07 14:15:01 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 5 deletions

View File

@@ -2214,6 +2214,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
mDeviceInventory.removePreferredDevicesForStrategyInt(mAccessibilityStrategyId); mDeviceInventory.removePreferredDevicesForStrategyInt(mAccessibilityStrategyId);
} }
mDeviceInventory.applyConnectedDevicesRoles(); mDeviceInventory.applyConnectedDevicesRoles();
mDeviceInventory.reapplyExternalDevicesRoles();
} else { } else {
mDeviceInventory.setPreferredDevicesForStrategyInt( mDeviceInventory.setPreferredDevicesForStrategyInt(
mCommunicationStrategyId, Arrays.asList(preferredCommunicationDevice)); mCommunicationStrategyId, Arrays.asList(preferredCommunicationDevice));

View File

@@ -361,23 +361,34 @@ public class AudioDeviceInventory {
AudioSystem.DEVICE_STATE_AVAILABLE, AudioSystem.DEVICE_STATE_AVAILABLE,
di.mDeviceCodecFormat); di.mDeviceCodecFormat);
} }
mAppliedStrategyRoles.clear();
mAppliedStrategyRolesInt.clear(); mAppliedStrategyRolesInt.clear();
mAppliedPresetRoles.clear();
mAppliedPresetRolesInt.clear(); mAppliedPresetRolesInt.clear();
applyConnectedDevicesRoles_l(); applyConnectedDevicesRoles_l();
} }
reapplyExternalDevicesRoles();
}
/*package*/ void reapplyExternalDevicesRoles() {
synchronized (mDevicesLock) {
mAppliedStrategyRoles.clear();
mAppliedPresetRoles.clear();
}
synchronized (mPreferredDevices) { synchronized (mPreferredDevices) {
mPreferredDevices.forEach((strategy, devices) -> { mPreferredDevices.forEach((strategy, devices) -> {
setPreferredDevicesForStrategy(strategy, devices); }); setPreferredDevicesForStrategy(strategy, devices);
});
} }
synchronized (mNonDefaultDevices) { synchronized (mNonDefaultDevices) {
mNonDefaultDevices.forEach((strategy, devices) -> { mNonDefaultDevices.forEach((strategy, devices) -> {
addDevicesRoleForStrategy(strategy, AudioSystem.DEVICE_ROLE_DISABLED, addDevicesRoleForStrategy(strategy, AudioSystem.DEVICE_ROLE_DISABLED,
devices, false /* internal */); }); devices, false /* internal */);
});
} }
synchronized (mPreferredDevicesForCapturePreset) { 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); }); return mAudioSystem.removeDevicesRoleForStrategy(s, r, d); });
purgeRoles(mAppliedPresetRolesInt, (p, r, d) -> { purgeRoles(mAppliedPresetRolesInt, (p, r, d) -> {
return mAudioSystem.removeDevicesRoleForCapturePreset(p, r, d); }); return mAudioSystem.removeDevicesRoleForCapturePreset(p, r, d); });
reapplyExternalDevicesRoles();
} }
@GuardedBy("mDevicesLock") @GuardedBy("mDevicesLock")