mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-15 00:04:59 +08:00
Fix sync loop by adding a 20ms break for the next mute sync (#1742)
* fix sync loop by adding a 20ms break for the next mute sync --------- Signed-off-by: Timo K <toger5@hotmail.de>
This commit is contained in:
parent
94c4b4fd6a
commit
5262af7000
@ -166,6 +166,12 @@ export function useLiveKit(
|
||||
logger.error("Failed to sync audio mute state with LiveKit", e);
|
||||
}
|
||||
audioMuteUpdating.current = false;
|
||||
// await participant.setMicrophoneEnabled can return immediately in some instances,
|
||||
// so that participant.isMicrophoneEnabled !== buttonEnabled.current.audio still holds true.
|
||||
// This happens if the device is still in a pending state
|
||||
// "sleeping" here makes sure we let react do its thing so that participant.isMicrophoneEnabled is updated,
|
||||
// so we do not end up in a recursion loop.
|
||||
await new Promise((r) => setTimeout(r, 20));
|
||||
// Run the check again after the change is done. Because the user
|
||||
// can update the state (presses mute button) while the device is enabling
|
||||
// itself we need might need to update the mute state right away.
|
||||
@ -187,6 +193,8 @@ export function useLiveKit(
|
||||
}
|
||||
videoMuteUpdating.current = false;
|
||||
// see above
|
||||
await new Promise((r) => setTimeout(r, 20));
|
||||
// see above
|
||||
syncMuteStateVideo();
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user