|
@@ -369,13 +369,18 @@ export default class JitsiLocalTrack extends JitsiTrack {
|
369
|
369
|
// A function that will print info about muted status transition
|
370
|
370
|
const logMuteInfo = () => logger.info(`Mute ${this}: ${muted}`);
|
371
|
371
|
|
|
372
|
+ // In React Native we mute the camera by setting track.enabled but that doesn't
|
|
373
|
+ // work for screen-share tracks, so do the remove-as-mute for those.
|
|
374
|
+ const doesVideoMuteByStreamRemove
|
|
375
|
+ = browser.isReactNative() ? this.videoType === VideoType.DESKTOP : browser.doesVideoMuteByStreamRemove();
|
|
376
|
+
|
372
|
377
|
// In the multi-stream mode, desktop tracks are muted from jitsi-meet instead of being removed from the
|
373
|
378
|
// conference. This is needed because we don't want the client to signal a source-remove to the remote peer for
|
374
|
379
|
// the desktop track when screenshare is stopped. Later when screenshare is started again, the same sender will
|
375
|
380
|
// be re-used without the need for signaling a new ssrc through source-add.
|
376
|
381
|
if (this.isAudioTrack()
|
377
|
382
|
|| (this.videoType === VideoType.DESKTOP && !FeatureFlags.isMultiStreamSendSupportEnabled())
|
378
|
|
- || !browser.doesVideoMuteByStreamRemove()) {
|
|
383
|
+ || !doesVideoMuteByStreamRemove) {
|
379
|
384
|
logMuteInfo();
|
380
|
385
|
|
381
|
386
|
// If we have a stream effect that implements its own mute functionality, prioritize it before
|