Browse Source

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.
master
Thorsten Basse 10 years ago
parent
commit
39a358e155
1 changed files with 9 additions and 14 deletions
  1. 9
    14
      JitsiConference.js

+ 9
- 14
JitsiConference.js View File

@@ -256,20 +256,12 @@ JitsiConference.prototype.addTrack = function (track) {
256 256
         if (track.startMuted) {
257 257
             track.mute();
258 258
         }
259
-        var muteHandler = this._fireMuteChangeEvent.bind(this, track);
260
-        var stopHandler = this.removeTrack.bind(this, track);
261
-        var audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
262
-        track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, muteHandler);
263
-        track.addEventListener(JitsiTrackEvents.TRACK_STOPPED, stopHandler);
264
-        track.addEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, audioLevelHandler);
265
-        this.addEventListener(JitsiConferenceEvents.TRACK_REMOVED, function (someTrack) {
266
-            if (someTrack !== track) {
267
-                return;
268
-            }
269
-            track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, muteHandler);
270
-            track.removeEventListener(JitsiTrackEvents.TRACK_STOPPED, stopHandler);
271
-            track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, audioLevelHandler);
272
-        });
259
+        track.muteHandler = this._fireMuteChangeEvent.bind(this, track);
260
+        track.stopHandler = this.removeTrack.bind(this, track);
261
+        track.audioLevelHandler = this._fireAudioLevelChangeEvent.bind(this);
262
+        track.addEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, track.muteHandler);
263
+        track.addEventListener(JitsiTrackEvents.TRACK_STOPPED, track.stopHandler);
264
+        track.addEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, track.audioLevelHandler);
273 265
         this.eventEmitter.emit(JitsiConferenceEvents.TRACK_ADDED, track);
274 266
     }.bind(this));
275 267
 };
@@ -304,6 +296,9 @@ JitsiConference.prototype.removeTrack = function (track) {
304 296
     }
305 297
     this.room.removeStream(track.getOriginalStream(), function(){
306 298
         this.rtc.removeLocalStream(track);
299
+        track.removeEventListener(JitsiTrackEvents.TRACK_MUTE_CHANGED, track.muteHandler);
300
+        track.removeEventListener(JitsiTrackEvents.TRACK_STOPPED, track.stopHandler);
301
+        track.removeEventListener(JitsiTrackEvents.TRACK_AUDIO_LEVEL_CHANGED, track.audioLevelHandler);
307 302
         this.eventEmitter.emit(JitsiConferenceEvents.TRACK_REMOVED, track);
308 303
     }.bind(this));
309 304
 };

Loading…
Cancel
Save