Merge "AudioDeviceInventory: reapply preferred device roles when needed" into udc-dev
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user