Fix: Remove blocking cleanup from video-moq disconnectedCallback #65
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When removing a
<video-moq>element from the DOM, the browser would freeze for 5+ seconds, causing:Root Cause
The
disconnectedCallback()was callingdestroy(), which internally callsAudioContext.close(). This Web Audio API method performs expensive cleanup that blocks the main thread for several seconds while releasing audio resources.Reproduction
Solution
Skip cleanup in
disconnectedCallback()and rely on JavaScript's garbage collection to clean up resources asynchronously:This is safe because the Web Audio API is designed to handle this - when an AudioContext becomes unreachable, the browser cleans it up in the background.
Testing
After this fix:
Alternative Considered
We considered deferring cleanup with
setTimeout()orrequestAnimationFrame(), but those still caused issues. The cleanest solution is to let the browser handle cleanup through garbage collection.