From b73acf01cb7add8c5c5410b303e55753ebafccf6 Mon Sep 17 00:00:00 2001 From: Duncan McNamara Date: Wed, 8 Jan 2025 11:28:37 +0100 Subject: [PATCH] ABRepeat: add seek margin with fast seek Because fast seek is not precise, it will usually seek before the requested time when seeking with abrepeat, causing the abrepeat to seek again, and stucks the player in a loop. Adding a small margin of time in which the seek is considered acceptable when fast seek is enabled stops it from looping. --- .../src/org/videolan/vlc/media/PlaylistManager.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt index 952a90aa0..44f9c3105 100644 --- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt +++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt @@ -1185,8 +1185,11 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList } MediaPlayer.Event.TimeChanged -> { abRepeat.value?.let { + val fastSeek = settings.getBoolean("always_fast_seek", false) if (it.stop != -1L && player.getCurrentTime() > it.stop) service.setTime(it.start, false) - if (player.getCurrentTime() < it.start) service.setTime(it.start, false) + if ((fastSeek && player.getCurrentTime() < it.start - 30000L) + || (!fastSeek && player.getCurrentTime() < it.start)) + service.setTime(it.start, false) } if (player.getCurrentTime() % 10 == 0L) savePosition() val now = System.currentTimeMillis()