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
正在显示
2 个修改的文件
包含
8 行增加
和
10 行删除
| @@ -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 | /** |
-
请 注册 或 登录 后发表评论