Skip to content

Commit 6c4627a

Browse files
authored
Properly clean up event listeners in getNewAudioContext() (#1660)
1 parent fda6583 commit 6c4627a

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

.changeset/fix-audio-context.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"livekit-client": patch
3+
---
4+
5+
Properly clean up event listeners in getNewAudioContext()

src/room/track/LocalAudioTrack.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export default class LocalAudioTrack extends LocalTrack<Track.Kind.Audio> {
244244
const trackIsSilent = await detectSilence(this);
245245
if (trackIsSilent) {
246246
if (!this.isMuted) {
247-
this.log.warn('silence detected on local audio track', this.logContext);
247+
this.log.debug('silence detected on local audio track', this.logContext);
248248
}
249249
this.emit(TrackEvent.AudioSilenceDetected);
250250
}

src/room/track/utils.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,18 @@ export function getNewAudioContext(): AudioContext | void {
147147
}
148148
} catch (e) {
149149
console.warn('Error trying to auto-resume audio context', e);
150+
} finally {
151+
window.document.body?.removeEventListener('click', handleResume);
150152
}
151-
152-
window.document.body?.removeEventListener('click', handleResume);
153153
};
154+
155+
// https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/statechange_event
156+
audioContext.addEventListener('statechange', () => {
157+
if (audioContext.state === 'closed') {
158+
window.document.body?.removeEventListener('click', handleResume);
159+
}
160+
});
161+
154162
window.document.body.addEventListener('click', handleResume);
155163
}
156164
return audioContext;

0 commit comments

Comments
 (0)