From 85f89ec799ce6367268da5dcb6fa761e8c735ab2 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Mon, 27 Jun 2022 21:59:01 +0200 Subject: [PATCH] Cancel radio job when starting a new radio --- .../kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt index 9bbc80a..5fb4b5b 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt @@ -500,6 +500,8 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback val sleepTimerMillisLeft: StateFlow? get() = timerJob?.millisLeft + private var radioJob: Job? = null + fun startSleepTimer(delayMillis: Long) { timerJob?.cancel() @@ -532,6 +534,7 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback startRadio(endpoint= endpoint, justAdd = false) private fun startRadio(endpoint: NavigationEndpoint.Endpoint.Watch?, justAdd: Boolean) { + radioJob?.cancel() radio = null YoutubePlayer.Radio( endpoint?.videoId, @@ -539,7 +542,7 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback endpoint?.playlistSetVideoId, endpoint?.params ).let { - coroutineScope.launch(Dispatchers.Main) { + radioJob = coroutineScope.launch(Dispatchers.Main) { if (justAdd) { player.addMediaItems(it.process().drop(1)) } else { @@ -551,6 +554,7 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback } fun stopRadio() { + radioJob?.cancel() radio = null } }