|
|
@@ -83,8 +83,6 @@ JitsiConference.prototype._init = function (options) {
|
|
83
|
83
|
this.room = this.xmpp.createRoom(this.options.name, this.options.config,
|
|
84
|
84
|
this.settings, (this.retries < 4 ? 3 : null));
|
|
85
|
85
|
|
|
86
|
|
- this.eventManager.setupChatRoomListeners();
|
|
87
|
|
-
|
|
88
|
86
|
//restore previous presence options
|
|
89
|
87
|
if(options.roomState) {
|
|
90
|
88
|
this.room.loadState(options.roomState);
|
|
|
@@ -96,7 +94,6 @@ JitsiConference.prototype._init = function (options) {
|
|
96
|
94
|
this.eventManager.setupRTCListeners();
|
|
97
|
95
|
}
|
|
98
|
96
|
|
|
99
|
|
-
|
|
100
|
97
|
if(!this.statistics) {
|
|
101
|
98
|
this.statistics = new Statistics(this.xmpp, {
|
|
102
|
99
|
callStatsID: this.options.config.callStatsID,
|
|
|
@@ -106,6 +103,9 @@ JitsiConference.prototype._init = function (options) {
|
|
106
|
103
|
roomName: this.options.name
|
|
107
|
104
|
});
|
|
108
|
105
|
}
|
|
|
106
|
+
|
|
|
107
|
+ this.eventManager.setupChatRoomListeners();
|
|
|
108
|
+
|
|
109
|
109
|
// Always add listeners because on reload we are executing leave and the
|
|
110
|
110
|
// listeners are removed from statistics module.
|
|
111
|
111
|
this.eventManager.setupStatisticsListeners();
|
|
|
@@ -490,6 +490,30 @@ JitsiConference.prototype._fireMuteChangeEvent = function (track) {
|
|
490
|
490
|
this.eventEmitter.emit(JitsiConferenceEvents.TRACK_MUTE_CHANGED, track);
|
|
491
|
491
|
};
|
|
492
|
492
|
|
|
|
493
|
+/**
|
|
|
494
|
+ * Clear JitsiLocalTrack properties and listeners.
|
|
|
495
|
+ * @param track the JitsiLocalTrack object.
|
|
|
496
|
+ */
|
|
|
497
|
+JitsiConference.prototype.onTrackRemoved = function (track) {
|
|
|
498
|
+ track._setSSRC(null);
|
|
|
499
|
+ track._setConference(null);
|
|
|
500
|
+ this.rtc.removeLocalTrack(track);
|
|
|
501
|
+ track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED,
|
|
|
502
|
+ track.muteHandler);
|
|
|
503
|
+ track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED,
|
|
|
504
|
+ track.audioLevelHandler);
|
|
|
505
|
+ this.room.removeListener(XMPPEvents.SENDRECV_STREAMS_CHANGED,
|
|
|
506
|
+ track.ssrcHandler);
|
|
|
507
|
+
|
|
|
508
|
+ // send event for stopping screen sharing
|
|
|
509
|
+ // FIXME: we assume we have only one screen sharing track
|
|
|
510
|
+ // if we change this we need to fix this check
|
|
|
511
|
+ if (track.isVideoTrack() && track.videoType === "desktop")
|
|
|
512
|
+ this.statistics.sendScreenSharingEvent(false);
|
|
|
513
|
+
|
|
|
514
|
+ this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
|
|
|
515
|
+}
|
|
|
516
|
+
|
|
493
|
517
|
/**
|
|
494
|
518
|
* Removes JitsiLocalTrack object to the conference.
|
|
495
|
519
|
* @param track the JitsiLocalTrack object.
|
|
|
@@ -503,30 +527,13 @@ JitsiConference.prototype.removeTrack = function (track) {
|
|
503
|
527
|
|
|
504
|
528
|
if(!this.room){
|
|
505
|
529
|
if(this.rtc) {
|
|
506
|
|
- this.rtc.removeLocalTrack(track);
|
|
507
|
|
- this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
|
|
|
530
|
+ this.onTrackRemoved(track);
|
|
508
|
531
|
}
|
|
509
|
532
|
return Promise.resolve();
|
|
510
|
533
|
}
|
|
511
|
534
|
return new Promise(function (resolve, reject) {
|
|
512
|
535
|
this.room.removeStream(track.getOriginalStream(), function(){
|
|
513
|
|
- track._setSSRC(null);
|
|
514
|
|
- track._setConference(null);
|
|
515
|
|
- this.rtc.removeLocalTrack(track);
|
|
516
|
|
- track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED,
|
|
517
|
|
- track.muteHandler);
|
|
518
|
|
- track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED,
|
|
519
|
|
- track.audioLevelHandler);
|
|
520
|
|
- this.room.removeListener(XMPPEvents.SENDRECV_STREAMS_CHANGED,
|
|
521
|
|
- track.ssrcHandler);
|
|
522
|
|
-
|
|
523
|
|
- // send event for stopping screen sharing
|
|
524
|
|
- // FIXME: we assume we have only one screen sharing track
|
|
525
|
|
- // if we change this we need to fix this check
|
|
526
|
|
- if (track.isVideoTrack() && track.videoType === "desktop")
|
|
527
|
|
- this.statistics.sendScreenSharingEvent(false);
|
|
528
|
|
-
|
|
529
|
|
- this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
|
|
|
536
|
+ this.onTrackRemoved(track);
|
|
530
|
537
|
resolve();
|
|
531
|
538
|
}.bind(this), function (error) {
|
|
532
|
539
|
reject(error);
|