Merge pull request #1418 from vector-im/dbkr/dont_open_devices_twice
Remove extra device request on the video preview page
This commit is contained in:
@@ -68,6 +68,9 @@ export const VideoPreview: FC<Props> = ({ matrixInfo, muteStates }) => {
|
|||||||
|
|
||||||
const devices = useMediaDevices();
|
const devices = useMediaDevices();
|
||||||
|
|
||||||
|
// Capture the audio options as they were when we first mounted, because
|
||||||
|
// we're not doing anything with the audio anyway so we don't need to
|
||||||
|
// re-open the devices when they change (see below).
|
||||||
const initialAudioOptions = useRef<CreateLocalTracksOptions["audio"]>();
|
const initialAudioOptions = useRef<CreateLocalTracksOptions["audio"]>();
|
||||||
initialAudioOptions.current ??= muteStates.audio.enabled && {
|
initialAudioOptions.current ??= muteStates.audio.enabled && {
|
||||||
deviceId: devices.audioInput.selectedId,
|
deviceId: devices.audioInput.selectedId,
|
||||||
@@ -79,7 +82,9 @@ export const VideoPreview: FC<Props> = ({ matrixInfo, muteStates }) => {
|
|||||||
// request over with at the same time. But changing the audio settings
|
// request over with at the same time. But changing the audio settings
|
||||||
// shouldn't cause this hook to recreate the track, which is why we
|
// shouldn't cause this hook to recreate the track, which is why we
|
||||||
// reference the initial values here.
|
// reference the initial values here.
|
||||||
audio: initialAudioOptions.current,
|
// We also pass in a clone because livekit mutates the object passed in,
|
||||||
|
// which would cause the devices to be re-opened on the next render.
|
||||||
|
audio: Object.assign({}, initialAudioOptions.current),
|
||||||
video: muteStates.video.enabled && {
|
video: muteStates.video.enabled && {
|
||||||
deviceId: devices.videoInput.selectedId,
|
deviceId: devices.videoInput.selectedId,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user