Repository navigation
Mesh: keep sound when crossing to a third device - #196
Open
hughesyadaddy wants to merge 1 commit into
Open
hughesyadaddy wants to merge 1 commit into
hughesyadaddy wants to merge 1 commit into
Conversation
Give sound and microphone their own hub route so crossing to a third device no longer tears down an active audio session between two others.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #194
Root cause: In mesh mode, sound and mic use the selection facade. An edge crossing calls
hub.select()(mac/mesh/kvm.js~L671/745,windows/mesh/kvm.js~L526/657), andhub._selectrefreshes that route, which emitsclosedon the old device andwelcome/clienton the new one.mac/audio.js,windows/sound.jsandshared/mic.jsstop send/receive onclosed, so A↔B audio drops as soon as the cursor moves to C.Change: Sound and mic get their own hub route, like
phoneRoute(). While a session is live, the route stays on that device across selection changes; when the session ends, it follows the selected device again. Two-device behaviour is unchanged.Routemoves toshared/hub-route.jsso Mac, Windows and Linux hubs share it.Tests: New three-computer test
shared/test/hub-audio-route.test.js(select(C) doesn't close the A↔B audio route; route follows selection after the session ends), a case inlinux/mesh/test/hub.test.js, andshared/test/mic.jsstill passes.