diff --git a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt index cf72a35b..b6350f31 100644 --- a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt +++ b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt @@ -662,6 +662,7 @@ class PlaybackController( val position = queueRepository.cursor().coerceIn(0, snapshot.size - 1) lastSavedPositionMs = queueRepository.cursorPositionMs().coerceAtLeast(0) loadWindow(position, autoplay = false, startPositionMs = lastSavedPositionMs) + player?.prepare() } private suspend fun stop() = startLock.withLock { stopLocked() } diff --git a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt index be87c516..d596fbb7 100644 --- a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt +++ b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt @@ -144,18 +144,20 @@ class PlaybackControllerTest { } @Test - fun togglingPlayOnARestoredQueuePreparesBeforePlaying() { + fun aRestoredQueueIsPreparedBeforeTheFirstPlay() { seedAlbum(5, sourceId = 1) runBlocking { queues.replace(listOf(queues.albumEntry(1, "al1"))) } controller.connect() await { handle.items.isNotEmpty() } + await { handle.operations.contains("prepare") } + handle.operations.clear() controller.togglePlayPause() await { handle.operations.contains("play") } - assertEquals(listOf("prepare", "play"), handle.operations) + assertEquals(listOf("play"), handle.operations) } @Test