Procházet zdrojové kódy

Fixes desktop streaming for FF

j8
hristoterezov před 9 roky
rodič
revize
8787723330

+ 8
- 2
conference.js Zobrazit soubor

@@ -153,7 +153,8 @@ export default {
153 153
 
154 154
         return JitsiMeetJS.init(config).then(() => {
155 155
             return Promise.all([
156
-                this.createLocalTracks('audio', 'video'),
156
+                this.createLocalTracks('audio', 'video').catch(
157
+                    () => {return [];}),
157 158
                 connect()
158 159
             ]);
159 160
         }).then(([tracks, con]) => {
@@ -176,7 +177,7 @@ export default {
176 177
         }).catch(function (err) {
177 178
             console.error('failed to create local tracks', ...devices, err);
178 179
             APP.statistics.onGetUserMediaFailed(err);
179
-            return [];
180
+            return Promise.reject(err);
180 181
         });
181 182
     },
182 183
     isLocalId (id) {
@@ -645,6 +646,11 @@ export default {
645 646
             APP.UI.updateDesktopSharingButtons(isSharingScreen);
646 647
         });
647 648
 
649
+        APP.desktopsharing.addListener(DSEvents.FIREFOX_EXTENSION_NEEDED,
650
+            (url) => {
651
+                APP.UI.showExtensionRequiredDialog(url);
652
+            });
653
+
648 654
         APP.desktopsharing.addListener(DSEvents.NEW_STREAM_CREATED,
649 655
             (track, callback) => {
650 656
                 const localCallback = (newTrack) => {

+ 226
- 463
libs/lib-jitsi-meet.js
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 9
- 0
modules/UI/UI.js Zobrazit soubor

@@ -802,4 +802,13 @@ UI.getLargeVideoID = function () {
802 802
     return VideoLayout.getLargeVideoID();
803 803
 };
804 804
 
805
+UI.showExtensionRequiredDialog = function (url) {
806
+    APP.UI.messageHandler.openMessageDialog(
807
+        "dialog.extensionRequired",
808
+        null,
809
+        null,
810
+        APP.translation.generateTranslationHTML(
811
+            "dialog.firefoxExtensionPrompt", {url: url}));
812
+}
813
+
805 814
 module.exports = UI;

+ 1
- 1
modules/UI/videolayout/LocalVideo.js Zobrazit soubor

@@ -194,7 +194,7 @@ LocalVideo.prototype.changeVideo = function (stream) {
194 194
     let endedHandler = () => {
195 195
         localVideo = $('#' + localVideo.id)[0];
196 196
         localVideoContainer.removeChild(localVideo);
197
-        self.VideoLayout.updateRemovedVideo(self.id);
197
+        this.VideoLayout.updateRemovedVideo(this.id);
198 198
         stream.off(TrackEvents.TRACK_STOPPED, endedHandler);
199 199
     };
200 200
     stream.on(TrackEvents.TRACK_STOPPED, endedHandler);

+ 19
- 15
modules/desktopsharing/desktopsharing.js Zobrazit soubor

@@ -97,17 +97,18 @@ module.exports = {
97 97
         } else {
98 98
             type = "video";
99 99
         }
100
-        APP.conference.createLocalTracks(type).then(function (tracks) {
100
+        var fail = () => {
101
+            if (type === 'desktop') {
102
+                getDesktopStreamFailed();
103
+            } else {
104
+                getVideoStreamFailed();
105
+            }
106
+        };
107
+        APP.conference.createLocalTracks(type).then((tracks) => {
101 108
             if (!tracks.length) {
102
-                if (type === 'desktop') {
103
-                    getDesktopStreamFailed();
104
-                } else {
105
-                    getVideoStreamFailed();
106
-                }
107
-
109
+                fail();
108 110
                 return;
109 111
             }
110
-
111 112
             let stream = tracks[0];
112 113
 
113 114
             // We now use screen stream
@@ -115,13 +116,16 @@ module.exports = {
115 116
             if (isUsingScreenStream) {
116 117
                 stream.on(TrackEvents.TRACK_STOPPED, onEndedHandler);
117 118
             }
118
-
119 119
             newStreamCreated(stream);
120
+        }).catch((error) => {
121
+            if(error === JitsiMeetJS.errors.track.FIREFOX_EXTENSION_NEEDED)
122
+            {
123
+                eventEmitter.emit(
124
+                    DSEvents.FIREFOX_EXTENSION_NEEDED,
125
+                    config.desktopSharingFirefoxExtensionURL)
126
+                return;
127
+            }
128
+            fail();
120 129
         });
121
-    },
122
-    /*
123
-     * Exports the event emitter to allow use by ScreenObtainer. Not for outside
124
-     * use.
125
-     */
126
-    eventEmitter: eventEmitter
130
+    }
127 131
 };

Načítá se…
Zrušit
Uložit