Bladeren bron

fix(tracks): mute tracks before using when created on device list change

master
Leonard Kim 7 jaren geleden
bovenliggende
commit
3b754fa219
1 gewijzigde bestanden met toevoegingen van 17 en 6 verwijderingen
  1. 17
    6
      conference.js

+ 17
- 6
conference.js Bestand weergeven

2375
                     createLocalTracksF,
2375
                     createLocalTracksF,
2376
                     newDevices.videoinput,
2376
                     newDevices.videoinput,
2377
                     newDevices.audioinput)
2377
                     newDevices.audioinput)
2378
-                .then(tracks =>
2379
-                    Promise.all(this._setLocalAudioVideoStreams(tracks)))
2378
+                .then(tracks => {
2379
+                    // If audio or video muted before, or we unplugged current
2380
+                    // device and selected new one, then mute new track.
2381
+                    const muteSyncPromises = tracks.map(track => {
2382
+                        if ((track.isVideoTrack() && videoWasMuted)
2383
+                            || (track.isAudioTrack() && audioWasMuted)) {
2384
+                            return track.mute();
2385
+                        }
2386
+
2387
+                        return Promise.resolve();
2388
+                    });
2389
+
2390
+                    return Promise.all(muteSyncPromises)
2391
+                        .then(() => Promise.all(
2392
+                            this._setLocalAudioVideoStreams(tracks)));
2393
+                })
2380
                 .then(() => {
2394
                 .then(() => {
2381
-                    // If audio was muted before, or we unplugged current device
2382
-                    // and selected new one, then mute new audio track.
2395
+                    // Log and sync known mute state.
2383
                     if (audioWasMuted) {
2396
                     if (audioWasMuted) {
2384
                         sendAnalytics(createTrackMutedEvent(
2397
                         sendAnalytics(createTrackMutedEvent(
2385
                             'audio',
2398
                             'audio',
2388
                         muteLocalAudio(true);
2401
                         muteLocalAudio(true);
2389
                     }
2402
                     }
2390
 
2403
 
2391
-                    // If video was muted before, or we unplugged current device
2392
-                    // and selected new one, then mute new video track.
2393
                     if (!this.isSharingScreen && videoWasMuted) {
2404
                     if (!this.isSharingScreen && videoWasMuted) {
2394
                         sendAnalytics(createTrackMutedEvent(
2405
                         sendAnalytics(createTrackMutedEvent(
2395
                             'video',
2406
                             'video',

Laden…
Annuleren
Opslaan