From d25f29b4c1c19d17c8b085a8336946eea207e272 Mon Sep 17 00:00:00 2001 From: Christophe Henry Date: Mon, 23 Jan 2023 13:11:06 +0100 Subject: [PATCH] Prevent IllegalSeekPositionException when initializing the player --- .../funkwhale/ffa/playback/PlayerService.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt index 81908aa..0dc544e 100644 --- a/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt +++ b/app/src/main/java/audio/funkwhale/ffa/playback/PlayerService.kt @@ -33,6 +33,7 @@ import audio.funkwhale.ffa.utils.maybeNormalizeUrl import audio.funkwhale.ffa.utils.onApi import com.google.android.exoplayer2.C import com.google.android.exoplayer2.ExoPlayer +import com.google.android.exoplayer2.IllegalSeekPositionException import com.google.android.exoplayer2.PlaybackException import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.Tracks @@ -154,12 +155,17 @@ class PlayerService : Service() { player.setMediaSource(queue.dataSources) player.prepare() + + FFACache.getLine(this, "progress")?.let { - player.seekTo(queue.current, it.toLong()) - - val (current, duration, percent) = getProgress(true) - - ProgressBus.send(current, duration, percent) + try { + player.seekTo(queue.current, it.toLong()) + val (current, duration, percent) = getProgress(true) + ProgressBus.send(current, duration, percent) + } catch (e: IllegalSeekPositionException) { + // The app remembered an incorrect position, let's reset it + FFACache.set(this, "current", "-1") + } } }