manage screen share preview lifecycle
This commit is contained in:
1 parent
f2d62ac142
commit
1fc8f0d469
1 file changed
+21
@@ -869,9 +869,26 @@ function onRemoteTrack(peer, ev) {
|
|||||||
track.addEventListener('ended', () => {
|
track.addEventListener('ended', () => {
|
||||||
if (peer.screenStreams.get(stream.id) === stream) {
|
if (peer.screenStreams.get(stream.id) === stream) {
|
||||||
peer.screenStreams.delete(stream.id);
|
peer.screenStreams.delete(stream.id);
|
||||||
|
if (!peer.screenStreams.size) {
|
||||||
|
peer.state = { ...peer.state, sharing: false };
|
||||||
|
captureRumIssue('Remote screen share ended', 'INFO', {
|
||||||
|
peerId: peer.id,
|
||||||
|
peerName: peer.name,
|
||||||
|
streamId: stream.id,
|
||||||
|
});
|
||||||
|
}
|
||||||
renderScreens();
|
renderScreens();
|
||||||
|
renderTiles();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
stream.addEventListener('inactive', () => {
|
||||||
|
if (peer.screenStreams.get(stream.id) === stream) {
|
||||||
|
peer.screenStreams.delete(stream.id);
|
||||||
|
peer.state = { ...peer.state, sharing: false };
|
||||||
|
renderScreens();
|
||||||
|
renderTiles();
|
||||||
|
}
|
||||||
|
}, { once: true });
|
||||||
renderScreens();
|
renderScreens();
|
||||||
if (isNewScreenShare) playRetroCue('share');
|
if (isNewScreenShare) playRetroCue('share');
|
||||||
console.log('remote screen share from', peer.name);
|
console.log('remote screen share from', peer.name);
|
||||||
@@ -993,6 +1010,10 @@ async function startScreenShare() {
|
|||||||
videoTrack.addEventListener('ended', () => stopScreenShare(stream));
|
videoTrack.addEventListener('ended', () => stopScreenShare(stream));
|
||||||
}
|
}
|
||||||
renderScreens();
|
renderScreens();
|
||||||
|
// Open a desktop preview automatically; mobile keeps the in-page preview.
|
||||||
|
if (window.matchMedia('(min-width: 700px)').matches) {
|
||||||
|
popOutShare({ key: `me:${stream.id}`, name: `${S.name} (you)`, stream, local: true });
|
||||||
|
}
|
||||||
renderTiles();
|
renderTiles();
|
||||||
for (const btn of shareButtons) btn.classList.add('active');
|
for (const btn of shareButtons) btn.classList.add('active');
|
||||||
toast('You are sharing your screen', 'ok');
|
toast('You are sharing your screen', 'ok');
|
||||||
|
|||||||
Reference in new issue
Block a user