From e6a70e3841f302e448e9621ff18d99d01cf934ce Mon Sep 17 00:00:00 2001 From: Thorsten Basse Date: Wed, 13 Jan 2016 17:35:29 +1100 Subject: [PATCH] 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. --- JitsiConference.js | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/JitsiConference.js b/JitsiConference.js index 7c97fdcd8..79ea2be69 100644 --- a/JitsiConference.js +++ b/JitsiConference.js @@ -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)); };