Skip to content

Commit 6b0ef96

Browse files
committed
fix(YouTube - VideoInformation): Extend PlaybackController lifecycle, fix SponsorBlock not working under high memory pressure
1 parent f99281d commit 6b0ef96

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

app/src/main/java/io/github/chsbuffer/revancedxposed/youtube/video/information/VideoInformationPatch.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import app.revanced.extension.youtube.patches.VideoInformation
55
import com.google.android.libraries.youtube.innertube.model.media.VideoQuality
66
import de.robv.android.xposed.XC_MethodHook
77
import de.robv.android.xposed.XposedBridge
8+
import de.robv.android.xposed.XposedHelpers
89
import io.github.chsbuffer.revancedxposed.findFirstFieldByExactType
910
import io.github.chsbuffer.revancedxposed.getStaticObjectField
1011
import io.github.chsbuffer.revancedxposed.scopedHook
@@ -15,6 +16,7 @@ import io.github.chsbuffer.revancedxposed.youtube.video.playerresponse.playerRes
1516
import io.github.chsbuffer.revancedxposed.youtube.video.videoid.VideoId
1617
import io.github.chsbuffer.revancedxposed.youtube.video.videoid.videoIdHooks
1718
import org.luckypray.dexkit.wrap.DexClass
19+
import java.lang.ref.WeakReference
1820
import java.lang.reflect.Field
1921
import java.lang.reflect.Method
2022

@@ -34,6 +36,7 @@ val videoTimeHooks = mutableListOf<(Long) -> Unit>()
3436
* Hook when the video speed is changed for any reason _except when the user manually selects a new speed_.
3537
* */
3638
val videoSpeedChangedHook = mutableListOf<(Float) -> Unit>()
39+
3740
/**
3841
* Hook the video speed selected by the user.
3942
*/
@@ -56,17 +59,23 @@ fun doOverridePlaybackSpeed(speedOverride: Float) {
5659
}
5760

5861
class PlaybackController(
59-
private val obj: Any,
62+
obj: Any,
6063
private val seekTo: Method,
6164
private val seekToRelative: Method,
6265
val seekSourceNone: Any
6366
) : VideoInformation.PlaybackController {
67+
val obj = WeakReference(obj)
68+
69+
init {
70+
XposedHelpers.setAdditionalInstanceField(obj, "patch_controller", this)
71+
}
72+
6473
override fun patch_seekTo(videoTime: Long): Boolean {
65-
return seekTo.invoke(obj, videoTime, seekSourceNone) as Boolean
74+
return seekTo.invoke(obj.get(), videoTime, seekSourceNone) as Boolean
6675
}
6776

6877
override fun patch_seekToRelative(videoTimeOffset: Long) {
69-
seekToRelative.invoke(obj)
78+
seekToRelative.invoke(obj.get())
7079
}
7180
}
7281

0 commit comments

Comments
 (0)