David Liu

Fix track removal by checking by id variable.

Fixes #4. Equals isn't implemented for RtcMediaTrack, so equality checking must be done through checking id.

don't dispose on stop for now
@@ -127,15 +127,6 @@ internal constructor( @@ -127,15 +127,6 @@ internal constructor(
127 Timber.d { "this track was never published." } 127 Timber.d { "this track was never published." }
128 return 128 return
129 } 129 }
130 - track.stop()  
131 - val senders = engine.publisher.peerConnection.senders ?: return  
132 - for (sender in senders) {  
133 - val t = sender.track() ?: continue  
134 - if (t == track.rtcTrack) {  
135 - engine.publisher.peerConnection.removeTrack(sender)  
136 - }  
137 - }  
138 -  
139 val sid = publication.sid 130 val sid = publication.sid
140 tracks.remove(sid) 131 tracks.remove(sid)
141 when (publication.kind) { 132 when (publication.kind) {
@@ -143,6 +134,14 @@ internal constructor( @@ -143,6 +134,14 @@ internal constructor(
143 Track.Kind.VIDEO -> videoTracks.remove(sid) 134 Track.Kind.VIDEO -> videoTracks.remove(sid)
144 else -> {} 135 else -> {}
145 } 136 }
  137 + val senders = engine.publisher.peerConnection.senders ?: return
  138 + for (sender in senders) {
  139 + val t = sender.track() ?: continue
  140 + if (t.id() == track.rtcTrack.id()) {
  141 + engine.publisher.peerConnection.removeTrack(sender)
  142 + }
  143 + }
  144 + track.stop()
146 } 145 }
147 146
148 /** 147 /**
@@ -48,7 +48,6 @@ open class Track( @@ -48,7 +48,6 @@ open class Track(
48 48
49 open fun stop() { 49 open fun stop() {
50 rtcTrack.setEnabled(false) 50 rtcTrack.setEnabled(false)
51 - rtcTrack.dispose()  
52 } 51 }
53 } 52 }
54 53