From 0e810e9a7b39ca1b6c8fa38023b1f5808d424fb6 Mon Sep 17 00:00:00 2001 From: polymorphicshade Date: Sat, 5 Sep 2020 22:53:22 -0600 Subject: [PATCH] SponsorBlock: Fixed infinite skip loop Fixed an issue where having "Use fast inexact seek" enabled causes an infinite segment skip loop. --- .../main/java/org/schabi/newpipe/player/BasePlayer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java b/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java index 02c13a06b..28624695d 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java @@ -42,6 +42,7 @@ import com.google.android.exoplayer2.LoadControl; import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.RenderersFactory; +import com.google.android.exoplayer2.SeekParameters; import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.source.BehindLiveWindowException; @@ -752,8 +753,14 @@ public abstract class BasePlayer implements final int skipTo = (int) Math.ceil((segment.endTime)); + // temporarily force EXACT seek parameters to prevent infinite skip looping + final SeekParameters seekParams = simpleExoPlayer.getSeekParameters(); + simpleExoPlayer.setSeekParameters(SeekParameters.EXACT); + seekTo(skipTo); + simpleExoPlayer.setSeekParameters(seekParams); + if (mPrefs.getBoolean( context.getString(R.string.sponsor_block_notifications_key), false)) { String toastText = "";