Browse Source

Fixed screensharing bye message in conference mode.

pull/13/merge
Simon Eisenmann 11 years ago
parent
commit
5ee0330366
  1. 57
      static/js/directives/screenshare.js

57
static/js/directives/screenshare.js

@ -33,7 +33,6 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials @@ -33,7 +33,6 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials
$scope.layout.screenshare = false;
$scope.usermedia = null;
$scope.connected = false;
$scope.screenshare = null;
$scope.hideOptionsBar = true;
$scope.fitScreen = true;
@ -162,12 +161,17 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials @@ -162,12 +161,17 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials
$scope.doScreenshare = function() {
if ($scope.layout.screenshare) {
$scope.stopScreenshare();
};
$scope.layout.screenshare = true;
// Create userMedia with screen share type.
var usermedia = mediaStream.webrtc.doScreenshare();
var handler;
var peers = {};
var screenshares = [];
var connector = function(token, peercall) {
if (peers.hasOwnProperty(peercall.id)) {
@ -185,10 +189,12 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials @@ -185,10 +189,12 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials
usermedia.e.one("mediasuccess", function(event, usermedia) {
$scope.$apply(function(scope) {
scope.usermedia = usermedia;
// Create token to register with us and send token out to all peers.
// Peers when connect to us with the token and we answer.
var token = "screenshare_"+scope.id+"_"+(screenCount++);
// Updater function to bring in new calls.
var updater = function(event, state, currentcall) {
switch (state) {
@ -198,27 +204,42 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials @@ -198,27 +204,42 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials
break;
}
};
// Create callbacks are called for each incoming connections.
handler = mediaStream.tokens.create(token, function(event, currenttoken, to, data, type, to2, from, peerscreenshare) {
//console.log("Screen share create", currenttoken, data, type, peerscreenshare);
$scope.screenshare = peerscreenshare;
usermedia.e.one("stopped", function() {
mediaStream.tokens.off(token, handler);
mediaStream.webrtc.e.off("statechange", updater);
handler = null;
updated = null;
peers = {};
safeApply(scope, function(scope) {
scope.stopScreenshare();
});
});
console.log("Screen share create", currenttoken, data, type, peerscreenshare);
screenshares.push(peerscreenshare);
usermedia.addToPeerConnection(peerscreenshare.peerconnection);
}, "screenshare");
// Connect all current calls.
mediaStream.webrtc.callForEachCall(function(peercall) {
connector(token, peercall);
});
// Catch later calls too.
mediaStream.webrtc.e.on("statechange", updater);
// Cleanup on stop of media.
usermedia.e.one("stopped", function() {
mediaStream.tokens.off(token, handler);
mediaStream.webrtc.e.off("statechange", updater);
handler = null;
updated = null;
// Send by to all connected peers.
_.each(screenshares, function(peerscreenshare) {
peerscreenshare.send({m: "bye"});
$timeout(function() {
peerscreenshare.close();
}, 0);
});
peers = {};
screenshares = [];
// Make sure to clean up.
safeApply(scope, function(scope) {
scope.stopScreenshare();
});
});
});
});
@ -235,16 +256,6 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials @@ -235,16 +256,6 @@ define(['jquery', 'underscore', 'text!partials/screenshare.html', 'text!partials
$scope.stopScreenshare = function() {
if ($scope.screenshare) {
$scope.screenshare.send({m: "bye"});
(function(screenshare) {
$timeout(function() {
screenshare.close();
}, 0);
}($scope.screenshare));
$scope.screenshare = null;
}
if ($scope.usermedia) {
$scope.usermedia.stop()
$scope.usermedia = null;

Loading…
Cancel
Save