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 Promise.all([
this.createLocalTracks('audio', 'video'),
this.createLocalTracks('audio', 'video').catch(
() => {return [];}),
connect()
]);
}).then(([tracks, con]) => {
@ -176,7 +177,7 @@ export default {
}).catch(function (err) {
console.error('failed to create local tracks', ...devices, err);
APP.statistics.onGetUserMediaFailed(err);
return [];
return Promise.reject(err);
});
},
isLocalId (id) {
@ -645,6 +646,11 @@ export default {
APP.UI.updateDesktopSharingButtons(isSharingScreen);
});
APP.desktopsharing.addListener(DSEvents.FIREFOX_EXTENSION_NEEDED,
(url) => {
APP.UI.showExtensionRequiredDialog(url);
});
APP.desktopsharing.addListener(DSEvents.NEW_STREAM_CREATED,
(track, callback) => {
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();
};
UI.showExtensionRequiredDialog = function (url) {
APP.UI.messageHandler.openMessageDialog(
"dialog.extensionRequired",
null,
null,
APP.translation.generateTranslationHTML(
"dialog.firefoxExtensionPrompt", {url: url}));
}
module.exports = UI;

View File

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

View File

@ -97,17 +97,18 @@ module.exports = {
} else {
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 (type === 'desktop') {
getDesktopStreamFailed();
} else {
getVideoStreamFailed();
}
fail();
return;
}
let stream = tracks[0];
// We now use screen stream
@ -115,13 +116,16 @@ module.exports = {
if (isUsingScreenStream) {
stream.on(TrackEvents.TRACK_STOPPED, onEndedHandler);
}
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
}
};