Committed by
GitHub
Send UpdateTrackSettings after resume (#51)
* Send UpdateTrackSettings after resume * pr comment fixes
正在显示
3 个修改的文件
包含
23 行增加
和
12 行删除
| @@ -18,7 +18,6 @@ import livekit.LivekitRtc | @@ -18,7 +18,6 @@ import livekit.LivekitRtc | ||
| 18 | import org.webrtc.* | 18 | import org.webrtc.* |
| 19 | import java.net.ConnectException | 19 | import java.net.ConnectException |
| 20 | import java.nio.ByteBuffer | 20 | import java.nio.ByteBuffer |
| 21 | -import java.util.concurrent.TimeUnit | ||
| 22 | import javax.inject.Inject | 21 | import javax.inject.Inject |
| 23 | import javax.inject.Named | 22 | import javax.inject.Named |
| 24 | import javax.inject.Singleton | 23 | import javax.inject.Singleton |
| @@ -380,14 +379,12 @@ internal constructor( | @@ -380,14 +379,12 @@ internal constructor( | ||
| 380 | } | 379 | } |
| 381 | 380 | ||
| 382 | if (connectionState == ConnectionState.CONNECTED) { | 381 | if (connectionState == ConnectionState.CONNECTED) { |
| 383 | - if (isFullReconnect) { | ||
| 384 | - listener?.onFullReconnect() | ||
| 385 | - } | 382 | + listener?.onPostReconnect(isFullReconnect) |
| 386 | return@launch | 383 | return@launch |
| 387 | } | 384 | } |
| 388 | 385 | ||
| 389 | val curReconnectTime = SystemClock.elapsedRealtime() - reconnectStartTime | 386 | val curReconnectTime = SystemClock.elapsedRealtime() - reconnectStartTime |
| 390 | - if(curReconnectTime > MAX_RECONNECT_TIMEOUT){ | 387 | + if (curReconnectTime > MAX_RECONNECT_TIMEOUT) { |
| 391 | break | 388 | break |
| 392 | } | 389 | } |
| 393 | } | 390 | } |
| @@ -516,9 +513,9 @@ internal constructor( | @@ -516,9 +513,9 @@ internal constructor( | ||
| 516 | fun onStreamStateUpdate(streamStates: List<LivekitRtc.StreamStateInfo>) | 513 | fun onStreamStateUpdate(streamStates: List<LivekitRtc.StreamStateInfo>) |
| 517 | fun onSubscribedQualityUpdate(subscribedQualityUpdate: LivekitRtc.SubscribedQualityUpdate) | 514 | fun onSubscribedQualityUpdate(subscribedQualityUpdate: LivekitRtc.SubscribedQualityUpdate) |
| 518 | fun onSubscriptionPermissionUpdate(subscriptionPermissionUpdate: LivekitRtc.SubscriptionPermissionUpdate) | 515 | fun onSubscriptionPermissionUpdate(subscriptionPermissionUpdate: LivekitRtc.SubscriptionPermissionUpdate) |
| 519 | - fun onSignalConnected(isReconnect: Boolean) | 516 | + fun onSignalConnected(isResume: Boolean) |
| 520 | fun onFullReconnecting() | 517 | fun onFullReconnecting() |
| 521 | - suspend fun onFullReconnect() | 518 | + suspend fun onPostReconnect(isFullReconnect: Boolean) |
| 522 | } | 519 | } |
| 523 | 520 | ||
| 524 | companion object { | 521 | companion object { |
| @@ -23,6 +23,7 @@ import io.livekit.android.room.track.* | @@ -23,6 +23,7 @@ import io.livekit.android.room.track.* | ||
| 23 | import io.livekit.android.util.FlowObservable | 23 | import io.livekit.android.util.FlowObservable |
| 24 | import io.livekit.android.util.LKLog | 24 | import io.livekit.android.util.LKLog |
| 25 | import io.livekit.android.util.flowDelegate | 25 | import io.livekit.android.util.flowDelegate |
| 26 | +import io.livekit.android.util.invoke | ||
| 26 | import kotlinx.coroutines.* | 27 | import kotlinx.coroutines.* |
| 27 | import livekit.LivekitModels | 28 | import livekit.LivekitModels |
| 28 | import livekit.LivekitRtc | 29 | import livekit.LivekitRtc |
| @@ -616,9 +617,9 @@ constructor( | @@ -616,9 +617,9 @@ constructor( | ||
| 616 | /** | 617 | /** |
| 617 | * @suppress | 618 | * @suppress |
| 618 | */ | 619 | */ |
| 619 | - override fun onSignalConnected(isReconnect: Boolean) { | ||
| 620 | - if (state == State.RECONNECTING && isReconnect) { | ||
| 621 | - // during reconnection, need to send sync state upon signal connection. | 620 | + override fun onSignalConnected(isResume: Boolean) { |
| 621 | + if (state == State.RECONNECTING && isResume) { | ||
| 622 | + // during resume reconnection, need to send sync state upon signal connection. | ||
| 622 | sendSyncState() | 623 | sendSyncState() |
| 623 | } | 624 | } |
| 624 | } | 625 | } |
| @@ -635,8 +636,21 @@ constructor( | @@ -635,8 +636,21 @@ constructor( | ||
| 635 | /** | 636 | /** |
| 636 | * @suppress | 637 | * @suppress |
| 637 | */ | 638 | */ |
| 638 | - override suspend fun onFullReconnect() { | 639 | + override suspend fun onPostReconnect(isFullReconnect: Boolean) { |
| 640 | + if (isFullReconnect) { | ||
| 639 | localParticipant.republishTracks() | 641 | localParticipant.republishTracks() |
| 642 | + } else { | ||
| 643 | + val remoteParticipants = remoteParticipants.values.toList() | ||
| 644 | + for (participant in remoteParticipants) { | ||
| 645 | + val pubs = participant.tracks.values.toList() | ||
| 646 | + for (pub in pubs) { | ||
| 647 | + val remotePub = pub as? RemoteTrackPublication ?: continue | ||
| 648 | + if(remotePub.subscribed) { | ||
| 649 | + remotePub.sendUpdateTrackSettings.invoke() | ||
| 650 | + } | ||
| 651 | + } | ||
| 652 | + } | ||
| 653 | + } | ||
| 640 | } | 654 | } |
| 641 | 655 | ||
| 642 | //------------------------------- ParticipantListener --------------------------------// | 656 | //------------------------------- ParticipantListener --------------------------------// |
| @@ -173,7 +173,7 @@ class RemoteTrackPublication( | @@ -173,7 +173,7 @@ class RemoteTrackPublication( | ||
| 173 | } | 173 | } |
| 174 | 174 | ||
| 175 | // Debounce just in case multiple settings get changed at once. | 175 | // Debounce just in case multiple settings get changed at once. |
| 176 | - private val sendUpdateTrackSettings = debounce<Unit, Unit>(100L, CoroutineScope(ioDispatcher)) { | 176 | + internal val sendUpdateTrackSettings = debounce<Unit, Unit>(100L, CoroutineScope(ioDispatcher)) { |
| 177 | sendUpdateTrackSettingsImpl() | 177 | sendUpdateTrackSettingsImpl() |
| 178 | } | 178 | } |
| 179 | 179 |
-
请 注册 或 登录 后发表评论