fix(calls): screen-share stage never engaged on the receiver (LC-408) #425
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/lc-408-screenshare-receiver-pin"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up fix to LC-408: the presenter's tile spanned correctly (after #423), but on every other participant the sharer's tile stayed small - the stage never engaged on the receiver.
Cause
The "stuck pin" fallback I added in #423:
updateTileMediacleareddata-screenon any remote tile that had no live video. On the RECEIVER thevoice_screen=trueWS signal lands before the screen video track is live (the signal beats the media renegotiation), andupdateTileMediaruns from the screen handler /ontrack/onmuteduring that window - so it stripped thedata-screenthat had just been set, and.lc-voice-grid:has([data-screen])never matched. The presenter never hit it because it pins against its own already-live screen track. (Not the two-accounts-in-one-browser setup.)Fix
Remove that fallback. The pin is now owned solely by the explicit
voice_screensignal:voice_screen=false(broadcast_to_room) reliably clears it,VoiceLeftremoves the tile entirely.The
updateTileMedia(userId)nudge in the screen handler still reverts the video on stop; it just no longer touchesdata-screen.Scope
Frontend only: a one-block deletion in
assets/voice.js. No Rust, CSS, template, or schema change.Tests
just check,just test,just test-saasall pass.voice.jssyntax-checked.