Преглед изворни кода

Fixes issues for audio only participants

master
hristoterezov пре 10 година
родитељ
комит
1176390214
3 измењених фајлова са 19 додато и 9 уклоњено
  1. 11
    4
      conference.js
  2. 7
    5
      modules/UI/videolayout/LargeVideo.js
  3. 1
    0
      modules/UI/videolayout/VideoLayout.js

+ 11
- 4
conference.js Прегледај датотеку

@@ -225,7 +225,9 @@ export default {
225 225
 
226 226
         return JitsiMeetJS.init(config).then(() => {
227 227
             return Promise.all([
228
-                this.createLocalTracks('audio', 'video').catch(
228
+                this.createLocalTracks('audio', 'video').catch(()=>{
229
+                    return this.createLocalTracks('audio');
230
+                }).catch(
229 231
                     () => {return [];}),
230 232
                 connect()
231 233
             ]);
@@ -500,7 +502,7 @@ export default {
500 502
             handler(id , mute);
501 503
         });
502 504
         room.on(ConferenceEvents.TRACK_AUDIO_LEVEL_CHANGED, (id, lvl) => {
503
-            if(this.isLocalId(id) && localAudio.isMuted()) {
505
+            if(this.isLocalId(id) && localAudio && localAudio.isMuted()) {
504 506
                 lvl = 0;
505 507
             }
506 508
 
@@ -584,9 +586,13 @@ export default {
584 586
         });
585 587
 
586 588
         APP.UI.addListener(UIEvents.AUDIO_MUTED, (muted) => {
589
+            if(!localAudio)
590
+                return;
587 591
             (muted)? localAudio.mute() : localAudio.unmute();
588 592
         });
589 593
         APP.UI.addListener(UIEvents.VIDEO_MUTED, (muted) => {
594
+            if(!localVideo)
595
+                return;
590 596
             (muted)? localVideo.mute() : localVideo.unmute();
591 597
         });
592 598
 
@@ -794,7 +800,7 @@ export default {
794 800
         APP.desktopsharing.addListener(DSEvents.NEW_STREAM_CREATED,
795 801
             (track, callback) => {
796 802
                 const localCallback = (newTrack) => {
797
-                    if(!newTrack || !newTrack.isLocal() ||
803
+                    if(!newTrack || !localVideo || !newTrack.isLocal() ||
798 804
                         newTrack !== localVideo)
799 805
                         return;
800 806
                     if(localVideo.isMuted() &&
@@ -808,7 +814,8 @@ export default {
808 814
                 if(room) {
809 815
                     room.on(ConferenceEvents.TRACK_ADDED, localCallback);
810 816
                 }
811
-                localVideo.stop();
817
+                if(localVideo)
818
+                    localVideo.stop();
812 819
                 localVideo = track;
813 820
                 addTrack(track);
814 821
                 if(!room)

+ 7
- 5
modules/UI/videolayout/LargeVideo.js Прегледај датотеку

@@ -277,6 +277,9 @@ class VideoContainer extends LargeContainer {
277 277
         this.stream = stream;
278 278
         this.videoType = videoType;
279 279
 
280
+        if(!stream)
281
+            return;
282
+
280 283
         stream.attach(this.$video);
281 284
 
282 285
         let flipX = stream.isLocal() && !this.isScreenSharing();
@@ -421,7 +424,7 @@ export default class LargeVideoManager {
421 424
             // change the avatar url on large
422 425
             this.updateAvatar(Avatar.getAvatarUrl(id));
423 426
 
424
-            let isVideoMuted = stream.isMuted();
427
+            let isVideoMuted = stream? stream.isMuted() : true;
425 428
 
426 429
             // show the avatar on large if needed
427 430
             this.videoContainer.showAvatar(isVideoMuted);
@@ -443,19 +446,18 @@ export default class LargeVideoManager {
443 446
     /**
444 447
      * Update large video.
445 448
      * Switches to large video even if previously other container was visible.
449
+     * @param userID the userID of the participant associated with the stream
446 450
      * @param {JitsiTrack?} stream new stream
447 451
      * @param {string?} videoType new video type
448 452
      * @returns {Promise}
449 453
      */
450
-    updateLargeVideo (stream, videoType) {
451
-        let id = getStreamOwnerId(stream);
452
-
454
+    updateLargeVideo (userID, stream, videoType) {
453 455
         if (this.newStreamData) {
454 456
             this.newStreamData.reject();
455 457
         }
456 458
 
457 459
         this.newStreamData = createDeferred();
458
-        this.newStreamData.id = id;
460
+        this.newStreamData.id = userID;
459 461
         this.newStreamData.stream = stream;
460 462
         this.newStreamData.videoType = videoType;
461 463
 

+ 1
- 0
modules/UI/videolayout/VideoLayout.js Прегледај датотеку

@@ -987,6 +987,7 @@ var VideoLayout = {
987 987
 
988 988
             let videoType = this.getRemoteVideoType(id);
989 989
             largeVideo.updateLargeVideo(
990
+                id,
990 991
                 smallVideo.videoStream,
991 992
                 videoType
992 993
             ).then(function() {

Loading…
Откажи
Сачувај