From e157e9447d38044c12c3ba22b2cf9cce04ce5859 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Sat, 29 Mar 2025 16:52:45 +0900 Subject: [PATCH] fix(YouTube): Playback speed sometimes changes to 1.0x in Shorts (Unpatched YouTube bug) --- .../utils/PlaybackSpeedWhilePlayingPatch.java | 16 ++++++++++------ .../PlaybackSpeedWhilePlayingPatch.kt | 2 ++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaybackSpeedWhilePlayingPatch.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaybackSpeedWhilePlayingPatch.java index 67e65bd5c..00990e95c 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaybackSpeedWhilePlayingPatch.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/utils/PlaybackSpeedWhilePlayingPatch.java @@ -1,20 +1,24 @@ package app.revanced.extension.youtube.patches.utils; import app.revanced.extension.shared.utils.Logger; +import app.revanced.extension.youtube.shared.EngagementPanel; import app.revanced.extension.youtube.shared.PlayerType; +import app.revanced.extension.youtube.shared.ShortsPlayerState; @SuppressWarnings("unused") public class PlaybackSpeedWhilePlayingPatch { private static final float DEFAULT_YOUTUBE_PLAYBACK_SPEED = 1.0f; public static boolean playbackSpeedChanged(float playbackSpeed) { - PlayerType playerType = PlayerType.getCurrent(); - if (playbackSpeed == DEFAULT_YOUTUBE_PLAYBACK_SPEED && - playerType.isMaximizedOrFullscreenOrPiP()) { + if (playbackSpeed == DEFAULT_YOUTUBE_PLAYBACK_SPEED) { + if (PlayerType.getCurrent().isMaximizedOrFullscreenOrPiP() + // Since RVX has a default playback speed setting for Shorts, + // Playback speed reset should also be prevented in Shorts. + || ShortsPlayerState.getCurrent().isOpen() && EngagementPanel.isOpen()) { + Logger.printDebug(() -> "Ignore changing playback speed, as it is invalid request"); - Logger.printDebug(() -> "Ignore changing playback speed, as it is invalid request: " + playerType.name()); - - return true; + return true; + } } return false; diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/playbackspeed/PlaybackSpeedWhilePlayingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/playbackspeed/PlaybackSpeedWhilePlayingPatch.kt index 26e4b110e..ee5ab2ead 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/playbackspeed/PlaybackSpeedWhilePlayingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/utils/fix/playbackspeed/PlaybackSpeedWhilePlayingPatch.kt @@ -4,6 +4,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWith import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.youtube.utils.engagement.engagementPanelHookPatch import app.revanced.patches.youtube.utils.extension.Constants.UTILS_PATH import app.revanced.patches.youtube.utils.extension.sharedExtensionPatch import app.revanced.patches.youtube.utils.playertype.playerTypeHookPatch @@ -22,6 +23,7 @@ val playbackSpeedWhilePlayingPatch = bytecodePatch( ) { dependsOn( sharedExtensionPatch, + engagementPanelHookPatch, playerTypeHookPatch, versionCheckPatch, )