in app/src/main/java/com/amazon/ivs/broadcast/ui/fragments/main/MainViewModel.kt [261:292]
fun reloadDevices() {
Timber.d("Reloading devices")
val cameraToAttach = if (isCameraOff) cameraOffDevice?.descriptor else cameraDevice?.descriptor
if (isCameraOff) {
session?.mixer?.removeSlot(SLOT_DEFAULT)
} else {
if (isScreenCaptureEnabled()) {
session?.mixer?.addSlot(configurationViewModel.screenShareSlots[0])
} else {
session?.mixer?.addSlot(configurationViewModel.defaultSlot)
}
}
session?.listAttachedDevices()?.forEach { device ->
Timber.d("Detaching device: ${device.descriptor.deviceId}, ${device.descriptor.friendlyName}, ${device.descriptor.type}")
session?.detachDevice(device)
}
session?.awaitDeviceChanges {
Timber.d("Devices detached")
cameraToAttach?.run {
attachCamera(deviceId) { device ->
displayCameraOutput(device)
}
}
microphoneDevice?.run {
attachMic(deviceId)
}
session?.listAttachedDevices()?.forEach {
Timber.d("Attached device: ${it.descriptor.deviceId}, ${it.descriptor.friendlyName}, ${it.descriptor.type}")
}
onDevicesReloaded.postConsumable(Unit)
}
}