fun reloadDevices()

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)
        }
    }