diff --git a/cat/patches/button_backlights.patch b/cat/patches/button_backlights.patch new file mode 100644 index 0000000..88db03a --- /dev/null +++ b/cat/patches/button_backlights.patch @@ -0,0 +1,60 @@ +diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java +index 7c0f4197363..a46b96ae5fa 100644 +--- a/services/core/java/com/android/server/display/DisplayPowerController.java ++++ b/services/core/java/com/android/server/display/DisplayPowerController.java +@@ -63,6 +63,10 @@ import com.android.server.display.whitebalance.DisplayWhiteBalanceFactory; + import com.android.server.display.whitebalance.DisplayWhiteBalanceSettings; + import com.android.server.policy.WindowManagerPolicy; + ++// Button backlights ++import com.android.server.lights.LightsManager; ++import com.android.server.lights.LogicalLight; ++ + import java.io.PrintWriter; + import java.util.List; + +@@ -258,6 +262,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + // Must only be accessed on the handler thread. + private DisplayPowerState mPowerState; + ++ // Buttons backlight ++ private LightsManager mLightsManager; ++ private LogicalLight mButtonsLight; ++ + // True if the device should wait for negative proximity sensor before + // waking up the screen. This is set to false as soon as a negative + // proximity sensor measurement is observed or when the device is forced to +@@ -686,6 +694,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + mPowerState = new DisplayPowerState(mBlanker, + mColorFadeEnabled ? new ColorFade(Display.DEFAULT_DISPLAY) : null); + ++ mLightsManager = LocalServices.getService(LightsManager.class); ++ mButtonsLight = mLightsManager.getLight(LightsManager.LIGHT_ID_KEYBOARD); ++ + if (mColorFadeEnabled) { + mColorFadeOnAnimator = ObjectAnimator.ofFloat( + mPowerState, DisplayPowerState.COLOR_FADE_LEVEL, 0.0f, 1.0f); +@@ -1154,6 +1165,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_ON) { + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_ON); + mWindowManagerPolicy.screenTurnedOn(); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MAX); + } + + // Grab a wake lock if we have unfinished business. +@@ -1310,6 +1322,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); + unblockScreenOn(); + mWindowManagerPolicy.screenTurnedOff(); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MIN); + } else if (!isOff + && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_TURNING_OFF) { + +@@ -1317,6 +1330,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call + // Complete the full state transition on -> turningOff -> off. + unblockScreenOff(); + mWindowManagerPolicy.screenTurnedOff(); ++ mButtonsLight.setBrightness(PowerManager.BRIGHTNESS_MIN); + setReportedScreenState(REPORTED_TO_POLICY_SCREEN_OFF); + } + if (!isOff && mReportedScreenStateToPolicy == REPORTED_TO_POLICY_SCREEN_OFF) {