From 2ab909fab16ad2019794317ee3b2dffde2e01717 Mon Sep 17 00:00:00 2001 From: Timo <16718859+toger5@users.noreply.github.com> Date: Tue, 30 Apr 2024 19:57:36 +0200 Subject: [PATCH] Fix mute flickering. (#2350) Use `useMeme` to not change the parameters that are used to call usePreviewDevice. Signed-off-by: Timo K --- src/room/VideoPreview.tsx | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/room/VideoPreview.tsx b/src/room/VideoPreview.tsx index 602ca5e5..547db7f8 100644 --- a/src/room/VideoPreview.tsx +++ b/src/room/VideoPreview.tsx @@ -68,8 +68,8 @@ export const VideoPreview: FC = ({ deviceId: devices.audioInput.selectedId, }; - const tracks = usePreviewTracks( - { + const deviceConfig = useMemo(() => { + return { // The only reason we request audio here is to get the audio permission // 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 @@ -80,13 +80,15 @@ export const VideoPreview: FC = ({ video: muteStates.video.enabled && { deviceId: devices.videoInput.selectedId, }, - }, - (error) => { - logger.error("Error while creating preview Tracks:", error); - muteStates.audio.setEnabled?.(false); - muteStates.video.setEnabled?.(false); - }, - ); + }; + }, [devices.videoInput.selectedId, muteStates.video.enabled]); + + const tracks = usePreviewTracks(deviceConfig, (error) => { + logger.error("Error while creating preview Tracks:", error); + muteStates.audio.setEnabled?.(false); + muteStates.video.setEnabled?.(false); + }); + const videoTrack = useMemo( () => tracks?.find((t) => t.kind === Track.Kind.Video) as