Make sure that when the screen is off, we don't try to turn the buttons on too.

Bug: 3117801
Change-Id: I763f114a2b0426660d29bbda04ea7db12c1137e8
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 638bd45..fadbb34 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -1794,8 +1794,12 @@
 
     private void updateLightsLocked(int newState, int forceState) {
         final int oldState = mPowerState;
-        newState = applyButtonState(newState);
-        newState = applyKeyboardState(newState);
+        if ((newState & SCREEN_ON_BIT) != 0) {
+            // Only turn on the buttons or keyboard if the screen is also on.
+            // We should never see the buttons on but not the screen.
+            newState = applyButtonState(newState);
+            newState = applyKeyboardState(newState);
+        }
         final int realDifference = (newState ^ oldState);
         final int difference = realDifference | forceState;
         if (difference == 0) {
@@ -1898,6 +1902,16 @@
                     INITIAL_SCREEN_BRIGHTNESS, nominalCurrentValue);
         }
 
+        if (mSpew) {
+            Slog.d(TAG, "offMask=0x" + Integer.toHexString(offMask)
+                    + " dimMask=0x" + Integer.toHexString(dimMask)
+                    + " onMask=0x" + Integer.toHexString(onMask)
+                    + " difference=0x" + Integer.toHexString(difference)
+                    + " realDifference=0x" + Integer.toHexString(realDifference)
+                    + " forceState=0x" + Integer.toHexString(forceState)
+                    );
+        }
+
         if (offMask != 0) {
             if (mSpew) Slog.i(TAG, "Setting brightess off: " + offMask);
             setLightBrightness(offMask, Power.BRIGHTNESS_OFF);