Fixes desktop streaming for FF

This commit is contained in:
hristoterezov 2016-01-20 18:17:22 -06:00
parent 27d509332a
commit 8787723330
5 changed files with 263 additions and 481 deletions

View File

@ -153,7 +153,8 @@ export default {
return JitsiMeetJS.init(config).then(() => { return JitsiMeetJS.init(config).then(() => {
return Promise.all([ return Promise.all([
this.createLocalTracks('audio', 'video'), this.createLocalTracks('audio', 'video').catch(
() => {return [];}),
connect() connect()
]); ]);
}).then(([tracks, con]) => { }).then(([tracks, con]) => {
@ -176,7 +177,7 @@ export default {
}).catch(function (err) { }).catch(function (err) {
console.error('failed to create local tracks', ...devices, err); console.error('failed to create local tracks', ...devices, err);
APP.statistics.onGetUserMediaFailed(err); APP.statistics.onGetUserMediaFailed(err);
return []; return Promise.reject(err);
}); });
}, },
isLocalId (id) { isLocalId (id) {
@ -645,6 +646,11 @@ export default {
APP.UI.updateDesktopSharingButtons(isSharingScreen); APP.UI.updateDesktopSharingButtons(isSharingScreen);
}); });
APP.desktopsharing.addListener(DSEvents.FIREFOX_EXTENSION_NEEDED,
(url) => {
APP.UI.showExtensionRequiredDialog(url);
});
APP.desktopsharing.addListener(DSEvents.NEW_STREAM_CREATED, APP.desktopsharing.addListener(DSEvents.NEW_STREAM_CREATED,
(track, callback) => { (track, callback) => {
const localCallback = (newTrack) => { const localCallback = (newTrack) => {

File diff suppressed because it is too large Load Diff

View File

@ -802,4 +802,13 @@ UI.getLargeVideoID = function () {
return VideoLayout.getLargeVideoID(); return VideoLayout.getLargeVideoID();
}; };
UI.showExtensionRequiredDialog = function (url) {
APP.UI.messageHandler.openMessageDialog(
"dialog.extensionRequired",
null,
null,
APP.translation.generateTranslationHTML(
"dialog.firefoxExtensionPrompt", {url: url}));
}
module.exports = UI; module.exports = UI;

View File

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

View File

@ -97,17 +97,18 @@ module.exports = {
} else { } else {
type = "video"; type = "video";
} }
APP.conference.createLocalTracks(type).then(function (tracks) { var fail = () => {
if (type === 'desktop') {
getDesktopStreamFailed();
} else {
getVideoStreamFailed();
}
};
APP.conference.createLocalTracks(type).then((tracks) => {
if (!tracks.length) { if (!tracks.length) {
if (type === 'desktop') { fail();
getDesktopStreamFailed();
} else {
getVideoStreamFailed();
}
return; return;
} }
let stream = tracks[0]; let stream = tracks[0];
// We now use screen stream // We now use screen stream
@ -115,13 +116,16 @@ module.exports = {
if (isUsingScreenStream) { if (isUsingScreenStream) {
stream.on(TrackEvents.TRACK_STOPPED, onEndedHandler); stream.on(TrackEvents.TRACK_STOPPED, onEndedHandler);
} }
newStreamCreated(stream); newStreamCreated(stream);
}).catch((error) => {
if(error === JitsiMeetJS.errors.track.FIREFOX_EXTENSION_NEEDED)
{
eventEmitter.emit(
DSEvents.FIREFOX_EXTENSION_NEEDED,
config.desktopSharingFirefoxExtensionURL)
return;
}
fail();
}); });
}, }
/*
* Exports the event emitter to allow use by ScreenObtainer. Not for outside
* use.
*/
eventEmitter: eventEmitter
}; };