diff --git a/app/src/main/java/app/revanced/integrations/patches/HDRMaxBrightnessPatch.java b/app/src/main/java/app/revanced/integrations/patches/HDRMaxBrightnessPatch.java index 119af5e6..ab33b750 100644 --- a/app/src/main/java/app/revanced/integrations/patches/HDRMaxBrightnessPatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/HDRMaxBrightnessPatch.java @@ -1,14 +1,41 @@ package app.revanced.integrations.patches; +import android.view.WindowManager; + import app.revanced.integrations.settings.SettingsEnum; +import app.revanced.integrations.swipecontrols.views.SwipeControlsHostLayout; +/** + * Patch class for 'hdr-max-brightness' patch + * + * @usedBy app/revanced/patches/youtube/misc/hdrbrightness/patch/HDRBrightnessPatch + * @smali app/revanced/integrations/patches/HDRMaxBrightnessPatch + */ public class HDRMaxBrightnessPatch { - - //Used by app/revanced/patches/youtube/misc/hdrbrightness/patch/HDRBrightnessPatch + /** + * get brightness override for HDR brightness + * + * @param original brightness youtube would normally set + * @return brightness to set on HRD video + * @smali getHDRBrightness(F)F + */ public static float getHDRBrightness(float original) { - if (!SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.getBoolean()) return original; - //return SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getBoolean() ? BrightnessHelper.getBrightness() : -1.0f; - return -1; - } + // do nothing if disabled + if (!SettingsEnum.USE_HDR_AUTO_BRIGHTNESS_BOOLEAN.getBoolean()) { + return original; + } + // override with brightness set by swipe-controls + // only when swipe-controls is active and has overridden the brightness + final SwipeControlsHostLayout swipeControlsHost = SwipeControlsPatch.CURRENT_HOST.get(); + if (swipeControlsHost != null + && swipeControlsHost.getScreen() != null + && swipeControlsHost.getConfig().getEnableBrightnessControl() + && !swipeControlsHost.getScreen().isDefaultBrightness()) { + return swipeControlsHost.getScreen().getRawScreenBrightness(); + } + + // otherwise, set the brightness to auto + return WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE; + } } diff --git a/app/src/main/java/app/revanced/integrations/patches/SwipeControlsPatch.java b/app/src/main/java/app/revanced/integrations/patches/SwipeControlsPatch.java index 8af3d818..f543b3c5 100644 --- a/app/src/main/java/app/revanced/integrations/patches/SwipeControlsPatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/SwipeControlsPatch.java @@ -2,8 +2,11 @@ package app.revanced.integrations.patches; import android.app.Activity; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import java.lang.ref.WeakReference; + import app.revanced.integrations.swipecontrols.views.SwipeControlsHostLayout; /** @@ -14,6 +17,14 @@ import app.revanced.integrations.swipecontrols.views.SwipeControlsHostLayout; */ @SuppressWarnings("unused") public class SwipeControlsPatch { + + /** + * the currently active swipe controls host. + * the reference may be null! + */ + @NonNull + public static WeakReference CURRENT_HOST = new WeakReference<>(null); + /** * Hook into the main activity lifecycle * (using onStart here, but really anything up until onResume should be fine) @@ -24,7 +35,8 @@ public class SwipeControlsPatch { public static void WatchWhileActivity_onStartHookEX(@Nullable Object thisRef) { if (thisRef == null) return; if (thisRef instanceof Activity) { - SwipeControlsHostLayout.attachTo((Activity) thisRef, false); + SwipeControlsHostLayout swipeControlsHost = SwipeControlsHostLayout.attachTo((Activity) thisRef, false); + CURRENT_HOST = new WeakReference<>(swipeControlsHost); } } } diff --git a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java index 6895af02..297e777c 100644 --- a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java +++ b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java @@ -60,7 +60,7 @@ public enum SettingsEnum { //Misc. Settings AUTOREPEAT_BUTTON_SHOWN_BOOLEAN("revanced_pref_auto_repeat_button", false), PREFERRED_AUTO_REPEAT_BOOLEAN("revanced_pref_auto_repeat", true), - USE_HDR_BRIGHTNESS_BOOLEAN("revanced_pref_hdr_autobrightness", true), + USE_HDR_AUTO_BRIGHTNESS_BOOLEAN("revanced_pref_hdr_autobrightness", true), TAP_SEEKING_ENABLED_BOOLEAN("revanced_enable_tap_seeking", true), //Swipe controls diff --git a/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java b/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java index 3fab1f4f..8776c772 100644 --- a/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java +++ b/app/src/main/java/app/revanced/integrations/settingsmenu/ReVancedSettingsFragment.java @@ -159,8 +159,8 @@ public class ReVancedSettingsFragment extends PreferenceFragment { editTextPreference5.setSummary(editTextPreference5.getText()); SettingsEnum.MAX_PLAYBACK_BUFFER_AFTER_REBUFFER_INTEGER.setValue(Integer.parseInt(editTextPreference5.getText())); } - } else if (str.equals(SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.getPath())) { - SettingsEnum.USE_HDR_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) miscsPreferenceScreen.findPreference(str)).isChecked()); + } else if (str.equals(SettingsEnum.USE_HDR_AUTO_BRIGHTNESS_BOOLEAN.getPath())) { + SettingsEnum.USE_HDR_AUTO_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) miscsPreferenceScreen.findPreference(str)).isChecked()); } else if (str.equals(SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.getPath())) { SettingsEnum.ENABLE_SWIPE_BRIGHTNESS_BOOLEAN.setValue(((SwitchPreference) xSwipeControlPreferenceScreen.findPreference(str)).isChecked()); } else if (str.equals(SettingsEnum.ENABLE_SWIPE_VOLUME_BOOLEAN.getPath())) { diff --git a/app/src/main/java/app/revanced/integrations/swipecontrols/controller/ScreenBrightnessController.kt b/app/src/main/java/app/revanced/integrations/swipecontrols/controller/ScreenBrightnessController.kt index 44769984..238229c1 100644 --- a/app/src/main/java/app/revanced/integrations/swipecontrols/controller/ScreenBrightnessController.kt +++ b/app/src/main/java/app/revanced/integrations/swipecontrols/controller/ScreenBrightnessController.kt @@ -33,11 +33,17 @@ class ScreenBrightnessController( rawScreenBrightness = WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE } + /** + * is the screen brightness set to device- default? + */ + val isDefaultBrightness + get() = (rawScreenBrightness == WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE) + /** * save the current screen brightness, to be brought back using [restore] */ fun save() { - if(savedScreenBrightness == null) { + if (savedScreenBrightness == null) { savedScreenBrightness = rawScreenBrightness } } @@ -55,9 +61,9 @@ class ScreenBrightnessController( /** * wrapper for the raw screen brightness in [WindowManager.LayoutParams.screenBrightness] */ - private var rawScreenBrightness: Float + var rawScreenBrightness: Float get() = host.window.attributes.screenBrightness - set(value) { + private set(value) { val attr = host.window.attributes attr.screenBrightness = value host.window.attributes = attr diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e1c16377..82cb866c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -25,9 +25,9 @@ Default codec Tap to join ReVanced on Discord Discord server - Video brightness will follow your device\'s brightness on HDR landscape videos - Video brightness is set to max on HDR landscape videos - HDR max brightness + Video brightness will follow your device\'s brightness on HDR landscape videos + Video brightness is set to max on HDR landscape videos + Override HDR Video Brightness Info cards are hidden Info cards are shown Info cards