From bc07ad5909f9749c37018d31f6ec73641f39256f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Brandner?= Date: Mon, 2 Aug 2021 21:25:55 +0200 Subject: [PATCH] Make localScreenSharingStream into a getter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Šimon Brandner --- src/webrtc/call.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/webrtc/call.ts b/src/webrtc/call.ts index 257f30c9b..c7a3fed2b 100644 --- a/src/webrtc/call.ts +++ b/src/webrtc/call.ts @@ -278,8 +278,6 @@ export class MatrixCall extends EventEmitter { private sentEndOfCandidates: boolean; private peerConn: RTCPeerConnection; private feeds: Array; - private localScreenSharingStream: MediaStream; - // TODO: Rename to usermedia rather than AV for consistency private localUsermediaStream: MediaStream; private usermediaSenders: Array; private screensharingSenders: Array; @@ -402,6 +400,14 @@ export class MatrixCall extends EventEmitter { return this.getLocalFeeds().find((feed) => feed.purpose === SDPStreamMetadataPurpose.Usermedia); } + public get localScreenSharingFeed(): CallFeed { + return this.getLocalFeeds().find((feed) => feed.purpose === SDPStreamMetadataPurpose.Screenshare); + } + + private get localScreenSharingStream(): MediaStream { + return this.localScreenSharingFeed?.stream; + } + private getFeedByStreamId(streamId: string): CallFeed { return this.getFeeds().find((feed) => feed.stream.id === streamId); } @@ -818,9 +824,9 @@ export class MatrixCall extends EventEmitter { logger.debug(`Set screensharing enabled? ${enabled}`); if (enabled) { try { - this.localScreenSharingStream = await getScreensharingStream(selectDesktopCapturerSource); - if (!this.localScreenSharingStream) return false; - this.pushLocalFeed(this.localScreenSharingStream, SDPStreamMetadataPurpose.Screenshare); + const stream = await getScreensharingStream(selectDesktopCapturerSource); + if (!stream) return false; + this.pushLocalFeed(stream, SDPStreamMetadataPurpose.Screenshare); return true; } catch (err) { this.emit(CallEvent.Error, @@ -836,7 +842,6 @@ export class MatrixCall extends EventEmitter { for (const track of this.localScreenSharingStream.getTracks()) { track.stop(); } - this.localScreenSharingStream = null; return false; } } @@ -855,10 +860,10 @@ export class MatrixCall extends EventEmitter { logger.debug(`Set screensharing enabled? ${enabled} using replaceTrack()`); if (enabled) { try { - this.localScreenSharingStream = await getScreensharingStream(selectDesktopCapturerSource); - if (!this.localScreenSharingStream) return false; + const stream = await getScreensharingStream(selectDesktopCapturerSource); + if (!stream) return false; - const track = this.localScreenSharingStream.getTracks().find((track) => { + const track = stream.getTracks().find((track) => { return track.kind === "video"; }); const sender = this.usermediaSenders.find((sender) => { @@ -866,7 +871,7 @@ export class MatrixCall extends EventEmitter { }); sender.replaceTrack(track); - this.pushLocalFeed(this.localScreenSharingStream, SDPStreamMetadataPurpose.Screenshare, false); + this.pushLocalFeed(stream, SDPStreamMetadataPurpose.Screenshare, false); return true; } catch (err) { @@ -888,7 +893,6 @@ export class MatrixCall extends EventEmitter { for (const track of this.localScreenSharingStream.getTracks()) { track.stop(); } - this.localScreenSharingStream = null; return false; }