diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt index 305b5d2e13..7951352312 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/Fingerprints.kt @@ -26,6 +26,11 @@ import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef +internal val BytecodePatchContext.newAdvancedQualityMenuStyleFlyoutMethodMatch by composingFirstMethod { + accessFlags(AccessFlags.PUBLIC, AccessFlags.FINAL) + instructions(45712556L()) +} + internal val BytecodePatchContext.currentVideoFormatToStringMethod by gettingFirstImmutableMethodDeclaratively( "currentVideoFormat=" ) { diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt index 72e94e3a61..c97eb807cf 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/video/quality/VideoQualityPatch.kt @@ -4,7 +4,9 @@ import app.revanced.patcher.patch.bytecodePatch import app.revanced.patches.shared.misc.settings.preference.BasePreference import app.revanced.patches.shared.misc.settings.preference.PreferenceCategory import app.revanced.patches.shared.misc.settings.preference.PreferenceScreenPreference.Sorting +import app.revanced.patches.youtube.misc.playservice.is_20_40_or_greater import app.revanced.patches.youtube.misc.settings.PreferenceScreen +import app.revanced.util.insertLiteralOverride /** * Video quality settings. Used to organize all speed related settings together. @@ -46,5 +48,13 @@ val videoQualityPatch = bytecodePatch( preferences = settingsMenuVideoQualityGroup, ), ) + + if (is_20_40_or_greater) { + // Flag breaks opening advanced quality menu. + // Alternatively can be fixed by using a delay when simulating the UI click. + newAdvancedQualityMenuStyleFlyoutMethodMatch.let { + it.method.insertLiteralOverride(it[0], false) + } + } } }