Stop adding TRACK_REMOVED listener to the conference every time a track is added

As TRACK_REMOVED are never removed from the conference and add up over time.
Might be better to just remove the tracks listeners inside JitsiConference.prototype.removeTrack.
This commit is contained in:
Thorsten Basse 2016-01-13 17:35:29 +11:00
parent e206054b2d
commit e6a70e3841
1 changed files with 9 additions and 14 deletions

View File

@ -256,20 +256,12 @@ JitsiConference.prototype.addTrack = function (track) {
if (track.startMuted) {
track.mute();
}
var muteHandler = this._fireMuteChangeEvent.bind(this, track);
var stopHandler = this.removeTrack.bind(this, track);
var audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, muteHandler);
track.addEventListener(JitsiTrackEvents.TRACK_STOPPED, stopHandler);
track.addEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, audioLevelHandler);
this.addEventListener(JitsiConferenceEvents.TRACK_REMOVED, function (someTrack) {
if (someTrack !== track) {
return;
}
track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, muteHandler);
track.removeEventListener(JitsiTrackEvents.TRACK_STOPPED, stopHandler);
track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, audioLevelHandler);
});
track.muteHandler = this._fireMuteChangeEvent.bind(this, track);
track.stopHandler = this.removeTrack.bind(this, track);
track.audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, track.muteHandler);
track.addEventListener(JitsiTrackEvents.TRACK_STOPPED, track.stopHandler);
track.addEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, track.audioLevelHandler);
this.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, track);
}.bind(this));
};
@ -304,6 +296,9 @@ JitsiConference.prototype.removeTrack = function (track) {
}
this.room.removeStream(track.getOriginalStream(), function(){
this.rtc.removeLocalStream(track);
track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, track.muteHandler);
track.removeEventListener(JitsiTrackEvents.TRACK_STOPPED, track.stopHandler);
track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, track.audioLevelHandler);
this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
}.bind(this));
};