Fixes call to undefined method(which fixes crash on lastN switch and when clicking contact on the contactlist).
This commit is contained in:
parent
2b103288c2
commit
420bbe136c
|
@ -22,7 +22,7 @@
|
||||||
<script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
|
<script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
|
||||||
<script src="libs/toastr.js?v=1"></script><!-- notifications lib -->
|
<script src="libs/toastr.js?v=1"></script><!-- notifications lib -->
|
||||||
<script src="interface_config.js?v=5"></script>
|
<script src="interface_config.js?v=5"></script>
|
||||||
<script src="libs/app.bundle.js?v=101"></script>
|
<script src="libs/app.bundle.js?v=102"></script>
|
||||||
<script src="analytics.js?v=1"></script><!-- google analytics plugin -->
|
<script src="analytics.js?v=1"></script><!-- google analytics plugin -->
|
||||||
<link rel="stylesheet" href="css/font.css?v=7"/>
|
<link rel="stylesheet" href="css/font.css?v=7"/>
|
||||||
<link rel="stylesheet" href="css/toastr.css?v=1">
|
<link rel="stylesheet" href="css/toastr.css?v=1">
|
||||||
|
|
|
@ -9511,6 +9511,37 @@ RemoteVideo.prototype.removeRemoteStreamElement = function (stream, isVideo, id)
|
||||||
this.VideoLayout.updateRemovedVideo(this.resourceJid);
|
this.VideoLayout.updateRemovedVideo(this.resourceJid);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RemoteVideo.prototype.waitForPlayback = function (stream) {
|
||||||
|
|
||||||
|
var isVideo = stream.getVideoTracks().length > 0;
|
||||||
|
if (!isVideo || stream.id === 'mixedmslabel') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
var sel = this.VideoLayout.getPeerVideoSel(this.resourceJid);
|
||||||
|
|
||||||
|
// Register 'onplaying' listener to trigger 'videoactive' on VideoLayout
|
||||||
|
// when video playback starts
|
||||||
|
var onPlayingHandler = function () {
|
||||||
|
// FIXME: why do i have to do this for FF?
|
||||||
|
if (RTCBrowserType.isFirefox()) {
|
||||||
|
APP.RTC.attachMediaStream(sel, stream);
|
||||||
|
}
|
||||||
|
if (RTCBrowserType.isTemasysPluginUsed()) {
|
||||||
|
sel = $('#' + newElementId);
|
||||||
|
}
|
||||||
|
self.VideoLayout.videoactive(sel, self.resourceJid);
|
||||||
|
sel[0].onplaying = null;
|
||||||
|
if (RTCBrowserType.isTemasysPluginUsed()) {
|
||||||
|
// 'currentTime' is used to check if the video has started
|
||||||
|
// and the value is not set by the plugin, so we do it
|
||||||
|
sel[0].currentTime = 1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
sel[0].onplaying = onPlayingHandler;
|
||||||
|
};
|
||||||
|
|
||||||
RemoteVideo.prototype.addRemoteStreamElement = function (sid, stream, thessrc) {
|
RemoteVideo.prototype.addRemoteStreamElement = function (sid, stream, thessrc) {
|
||||||
if (!this.container)
|
if (!this.container)
|
||||||
return;
|
return;
|
||||||
|
@ -9526,35 +9557,12 @@ RemoteVideo.prototype.addRemoteStreamElement = function (sid, stream, thessrc) {
|
||||||
sel.hide();
|
sel.hide();
|
||||||
|
|
||||||
// If the container is currently visible we attach the stream.
|
// If the container is currently visible we attach the stream.
|
||||||
if (!isVideo
|
if (!isVideo || (this.container.offsetParent !== null && isVideo)) {
|
||||||
|| (this.container.offsetParent !== null && isVideo)) {
|
waitForPlayback(stream);
|
||||||
|
|
||||||
// Register 'onplaying' listener to trigger 'videoactive' on VideoLayout
|
|
||||||
// when video playback starts
|
|
||||||
if (isVideo && stream.id !== 'mixedmslabel') {
|
|
||||||
var onPlayingHandler = function () {
|
|
||||||
// FIXME: why do i have to do this for FF?
|
|
||||||
if (RTCBrowserType.isFirefox()) {
|
|
||||||
APP.RTC.attachMediaStream(sel, stream);
|
|
||||||
}
|
|
||||||
if (RTCBrowserType.isTemasysPluginUsed()) {
|
|
||||||
sel = $('#' + newElementId);
|
|
||||||
}
|
|
||||||
self.VideoLayout.videoactive(sel, self.resourceJid);
|
|
||||||
sel[0].onplaying = null;
|
|
||||||
if (RTCBrowserType.isTemasysPluginUsed()) {
|
|
||||||
// 'currentTime' is used to check if the video has started
|
|
||||||
// and the value is not set by the plugin, so we do it
|
|
||||||
sel[0].currentTime = 1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
sel[0].onplaying = onPlayingHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
APP.RTC.attachMediaStream(sel, stream);
|
APP.RTC.attachMediaStream(sel, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
|
||||||
stream.onended = function () {
|
stream.onended = function () {
|
||||||
console.log('stream ended', this);
|
console.log('stream ended', this);
|
||||||
|
|
||||||
|
@ -10595,7 +10603,7 @@ var VideoLayout = (function (my) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var resource = Strophe.getResourceFromJid(jid);
|
var resource = Strophe.getResourceFromJid(jid);
|
||||||
var videoSel = VideoLayout.getVideoSelector(resource);
|
var videoSel = VideoLayout.getPeerVideoSel(resource);
|
||||||
if (videoSel.length > 0) {
|
if (videoSel.length > 0) {
|
||||||
var videoThumb = videoSel[0];
|
var videoThumb = videoSel[0];
|
||||||
// It is not always the case that a videoThumb exists (if there is
|
// It is not always the case that a videoThumb exists (if there is
|
||||||
|
@ -10833,7 +10841,7 @@ var VideoLayout = (function (my) {
|
||||||
|
|
||||||
updateLargeVideo = false;
|
updateLargeVideo = false;
|
||||||
}
|
}
|
||||||
remoteVideos[resourceJid].waitForRemoteVideo(sel, mediaStream.ssrc, mediaStream.stream);
|
remoteVideos[resourceJid].waitForPlayback(mediaStream.stream);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -14370,15 +14378,6 @@ JingleSession.prototype._modifySources = function (successCallback, queueCallbac
|
||||||
});
|
});
|
||||||
this.removessrc = [];
|
this.removessrc = [];
|
||||||
|
|
||||||
// FIXME:
|
|
||||||
// this was a hack for the situation when only one peer exists
|
|
||||||
// in the conference.
|
|
||||||
// check if still required and remove
|
|
||||||
if (sdp.media[0])
|
|
||||||
sdp.media[0] = sdp.media[0].replace('a=recvonly', 'a=sendrecv');
|
|
||||||
if (sdp.media[1])
|
|
||||||
sdp.media[1] = sdp.media[1].replace('a=recvonly', 'a=sendrecv');
|
|
||||||
|
|
||||||
sdp.raw = sdp.session + sdp.media.join('');
|
sdp.raw = sdp.session + sdp.media.join('');
|
||||||
this.peerconnection.setRemoteDescription(new RTCSessionDescription({type: 'offer', sdp: sdp.raw}),
|
this.peerconnection.setRemoteDescription(new RTCSessionDescription({type: 'offer', sdp: sdp.raw}),
|
||||||
function() {
|
function() {
|
||||||
|
|
|
@ -165,6 +165,37 @@ RemoteVideo.prototype.removeRemoteStreamElement = function (stream, isVideo, id)
|
||||||
this.VideoLayout.updateRemovedVideo(this.resourceJid);
|
this.VideoLayout.updateRemovedVideo(this.resourceJid);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
RemoteVideo.prototype.waitForPlayback = function (stream) {
|
||||||
|
|
||||||
|
var isVideo = stream.getVideoTracks().length > 0;
|
||||||
|
if (!isVideo || stream.id === 'mixedmslabel') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var self = this;
|
||||||
|
var sel = this.VideoLayout.getPeerVideoSel(this.resourceJid);
|
||||||
|
|
||||||
|
// Register 'onplaying' listener to trigger 'videoactive' on VideoLayout
|
||||||
|
// when video playback starts
|
||||||
|
var onPlayingHandler = function () {
|
||||||
|
// FIXME: why do i have to do this for FF?
|
||||||
|
if (RTCBrowserType.isFirefox()) {
|
||||||
|
APP.RTC.attachMediaStream(sel, stream);
|
||||||
|
}
|
||||||
|
if (RTCBrowserType.isTemasysPluginUsed()) {
|
||||||
|
sel = $('#' + newElementId);
|
||||||
|
}
|
||||||
|
self.VideoLayout.videoactive(sel, self.resourceJid);
|
||||||
|
sel[0].onplaying = null;
|
||||||
|
if (RTCBrowserType.isTemasysPluginUsed()) {
|
||||||
|
// 'currentTime' is used to check if the video has started
|
||||||
|
// and the value is not set by the plugin, so we do it
|
||||||
|
sel[0].currentTime = 1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
sel[0].onplaying = onPlayingHandler;
|
||||||
|
};
|
||||||
|
|
||||||
RemoteVideo.prototype.addRemoteStreamElement = function (sid, stream, thessrc) {
|
RemoteVideo.prototype.addRemoteStreamElement = function (sid, stream, thessrc) {
|
||||||
if (!this.container)
|
if (!this.container)
|
||||||
return;
|
return;
|
||||||
|
@ -180,35 +211,12 @@ RemoteVideo.prototype.addRemoteStreamElement = function (sid, stream, thessrc) {
|
||||||
sel.hide();
|
sel.hide();
|
||||||
|
|
||||||
// If the container is currently visible we attach the stream.
|
// If the container is currently visible we attach the stream.
|
||||||
if (!isVideo
|
if (!isVideo || (this.container.offsetParent !== null && isVideo)) {
|
||||||
|| (this.container.offsetParent !== null && isVideo)) {
|
waitForPlayback(stream);
|
||||||
|
|
||||||
// Register 'onplaying' listener to trigger 'videoactive' on VideoLayout
|
|
||||||
// when video playback starts
|
|
||||||
if (isVideo && stream.id !== 'mixedmslabel') {
|
|
||||||
var onPlayingHandler = function () {
|
|
||||||
// FIXME: why do i have to do this for FF?
|
|
||||||
if (RTCBrowserType.isFirefox()) {
|
|
||||||
APP.RTC.attachMediaStream(sel, stream);
|
|
||||||
}
|
|
||||||
if (RTCBrowserType.isTemasysPluginUsed()) {
|
|
||||||
sel = $('#' + newElementId);
|
|
||||||
}
|
|
||||||
self.VideoLayout.videoactive(sel, self.resourceJid);
|
|
||||||
sel[0].onplaying = null;
|
|
||||||
if (RTCBrowserType.isTemasysPluginUsed()) {
|
|
||||||
// 'currentTime' is used to check if the video has started
|
|
||||||
// and the value is not set by the plugin, so we do it
|
|
||||||
sel[0].currentTime = 1;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
sel[0].onplaying = onPlayingHandler;
|
|
||||||
}
|
|
||||||
|
|
||||||
APP.RTC.attachMediaStream(sel, stream);
|
APP.RTC.attachMediaStream(sel, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
var self = this;
|
|
||||||
stream.onended = function () {
|
stream.onended = function () {
|
||||||
console.log('stream ended', this);
|
console.log('stream ended', this);
|
||||||
|
|
||||||
|
|
|
@ -475,7 +475,7 @@ var VideoLayout = (function (my) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var resource = Strophe.getResourceFromJid(jid);
|
var resource = Strophe.getResourceFromJid(jid);
|
||||||
var videoSel = VideoLayout.getVideoSelector(resource);
|
var videoSel = VideoLayout.getPeerVideoSel(resource);
|
||||||
if (videoSel.length > 0) {
|
if (videoSel.length > 0) {
|
||||||
var videoThumb = videoSel[0];
|
var videoThumb = videoSel[0];
|
||||||
// It is not always the case that a videoThumb exists (if there is
|
// It is not always the case that a videoThumb exists (if there is
|
||||||
|
@ -713,7 +713,7 @@ var VideoLayout = (function (my) {
|
||||||
|
|
||||||
updateLargeVideo = false;
|
updateLargeVideo = false;
|
||||||
}
|
}
|
||||||
remoteVideos[resourceJid].waitForRemoteVideo(sel, mediaStream.ssrc, mediaStream.stream);
|
remoteVideos[resourceJid].waitForPlayback(mediaStream.stream);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue