@@ -54,9 +54,12 @@ export class MediaHandler {
54
54
}
55
55
56
56
/**
57
+ * @param audio should have an audio track
58
+ * @param video should have a video track
59
+ * @param reusable is allowed to be reused by the MediaHandler
57
60
* @returns {MediaStream } based on passed parameters
58
61
*/
59
- public async getUserMediaStream ( audio : boolean , video : boolean ) : Promise < MediaStream > {
62
+ public async getUserMediaStream ( audio : boolean , video : boolean , reusable = true ) : Promise < MediaStream > {
60
63
const shouldRequestAudio = audio && await this . hasAudioDevice ( ) ;
61
64
const shouldRequestVideo = video && await this . hasVideoDevice ( ) ;
62
65
@@ -78,7 +81,9 @@ export class MediaHandler {
78
81
stream = await navigator . mediaDevices . getUserMedia ( constraints ) ;
79
82
}
80
83
81
- this . userMediaStreams . push ( stream ) ;
84
+ if ( reusable ) {
85
+ this . userMediaStreams . push ( stream ) ;
86
+ }
82
87
83
88
return stream ;
84
89
}
@@ -101,9 +106,11 @@ export class MediaHandler {
101
106
}
102
107
103
108
/**
109
+ * @param desktopCapturerSourceId sourceId for Electron DesktopCapturer
110
+ * @param reusable is allowed to be reused by the MediaHandler
104
111
* @returns {MediaStream } based on passed parameters
105
112
*/
106
- public async getScreensharingStream ( desktopCapturerSourceId : string ) : Promise < MediaStream | null > {
113
+ public async getScreensharingStream ( desktopCapturerSourceId : string , reusable = true ) : Promise < MediaStream | null > {
107
114
let stream : MediaStream ;
108
115
109
116
if ( this . screensharingStreams . length === 0 ) {
@@ -125,7 +132,9 @@ export class MediaHandler {
125
132
stream = matchingStream . clone ( ) ;
126
133
}
127
134
128
- this . screensharingStreams . push ( stream ) ;
135
+ if ( reusable ) {
136
+ this . screensharingStreams . push ( stream ) ;
137
+ }
129
138
130
139
return stream ;
131
140
}
0 commit comments