Repository navigation
Conversation
tommaso-ascani
left a comment
There was a problem hiding this comment.
See inline comments.
| callback({ video: { id: source.id, name: source.name } }) | ||
| } else { | ||
| Log.info('SCREEN SHARE request cancelled') | ||
| callback(null as unknown as Electron.Streams) |
There was a problem hiding this comment.
callback(null) surfaces as NotReadableError; phone-island doesn't clean up the Janus room/handle on that path.
There was a problem hiding this comment.
Confirmed, but the root cause is in phone-island and predates this PR. The createOffer error callback in VideoView only resets the store and never calls plugin.detach(), so the videoroom handle and the created room leak on any getDisplayMedia failure, including Cancel in the browser picker on CTI web (the rejection type, NotReadableError vs NotAllowedError, makes no difference there). This PR turns Cancel into a regular path in NethLink, so it shows up more often. We will open a dedicated issue to fix it in phone-island (release the handle on that error path) and then bump phone-island here. Working around it from NethLink with phone-island-screen-share-stop is not viable: stopScreenShare() sends screenSharingStop to the remote user, whose island would switch to the video view for a share that never started.
There was a problem hiding this comment.
Tracked in NethServer/dev#8237 and fixed in nethesis/phone-island#292 (c5f4cfc): when the publisher createOffer fails (picker cancelled or capture error), phone-island now destroys the room it created and detaches the videoroom handle. We will bump phone-island in NethLink once it is released; leaving this thread open until then.
tommaso-ascani
left a comment
There was a problem hiding this comment.
Fullscreen and focus fixed, thanks. Two left inline.
| callback({ video: { id: source.id, name: source.name } }) | ||
| } else { | ||
| Log.info('SCREEN SHARE request cancelled') | ||
| callback(null as unknown as Electron.Streams) |
There was a problem hiding this comment.
Cancel still leaves the Janus room/publisher open in phone-island.
There was a problem hiding this comment.
This is the same root cause discussed in the thread above: the createOffer error callback in phone-island VideoView resets the store but never releases the videoroom handle and the room. It predates this PR and also happens on CTI web when the user cancels the browser picker, so it cannot be fixed from NethLink without side effects (phone-island-screen-share-stop would send screenSharingStop to the remote user). We will track it in a dedicated phone-island issue and bump phone-island here once it is released; we would prefer not to block this PR on it.
There was a problem hiding this comment.
Tracked in NethServer/dev#8237 and fixed in nethesis/phone-island#292 (c5f4cfc): when the publisher createOffer fails (picker cancelled or capture error), phone-island now destroys the room it created and detaches the videoroom handle. We will bump phone-island in NethLink once it is released; leaving this thread open until then.
Reference: