playback: keep detached fallback out of published position

This commit is contained in:
austinried
2026-11-14 12:05:28 +00:00
parent fd0eb0a9a0
commit 4b5d02f17b
2 changed files with 4 additions and 2 deletions
@@ -1863,6 +1863,7 @@ class PlaybackController(
private fun refresh(position: Long? = currentQueuePosition()) {
val player = player ?: return
val publishedPosition = if (detachedWindow && currentPosition() == null) lastPosition ?: detachedPosition else position
updateBuffering()
val durationMs =
player.durationMs.takeIf { it > 0 }
@@ -1871,8 +1872,8 @@ class PlaybackController(
_state.value =
PlaybackState(
item = player.currentItem,
context = contextAt(position),
position = position,
context = contextAt(publishedPosition),
position = publishedPosition,
isBuffering = showBuffering,
isPlaying = player.playWhenReady && !player.isIdle && !player.isEnded,
durationMs = durationMs,
@@ -4286,6 +4286,7 @@ class PlaybackControllerTest {
runBlocking { queues.resetChangedOrigins(setOf(QueueOrigin(QueueKind.Playlist, 1, "p1")), point) }
await { handle.items.map { it.id } == listOf("s2") && controller.state.value.position == null }
controller.cycleRepeat()
assertNull(controller.state.value.position)
assertEquals(RepeatMode.All, controller.state.value.repeat)
}