Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8d477f0 authored by Joe Onorato's avatar Joe Onorato Committed by Android (Google) Code Review
Browse files

Merge "Pressing the power button quickly needs to turn the screen on and off...

Merge "Pressing the power button quickly needs to turn the screen on and off correctly." into gingerbread
parents 1f90908c 3d3db601
Loading
Loading
Loading
Loading
+21 −22
Original line number Diff line number Diff line
@@ -1971,8 +1971,8 @@ class PowerManagerService extends IPowerManager.Stub
                    / stepsToTarget;
            if (mSpew) {
                String noticeMe = nominalCurrentValue == curValue ? "" : "  ******************";
                Slog.i(TAG, "Setting target " + mask + ": cur=" + curValue
                        + " target=" + targetValue + " delta=" + delta
                Slog.i(TAG, "setTargetLocked mask=" + mask + " curValue=" + curValue
                        + " target=" + target + " targetValue=" + targetValue + " delta=" + delta
                        + " nominalCurrentValue=" + nominalCurrentValue
                        + noticeMe);
            }
@@ -2010,20 +2010,20 @@ class PowerManagerService extends IPowerManager.Stub
            }
            if (mSpew) Slog.d(TAG, "Animating curIntValue=" + curIntValue + ": " + mask);
            setLightBrightness(mask, curIntValue);
            finishAnimation(more, curIntValue);
            finishAnimationLocked(more, curIntValue);
            return more;
        }

        void jumpToTarget() {
            if (mSpew) Slog.d(TAG, "jumpToTarget targetValue=" + targetValue + ": " + mask);
        void jumpToTargetLocked() {
            if (mSpew) Slog.d(TAG, "jumpToTargetLocked targetValue=" + targetValue + ": " + mask);
            setLightBrightness(mask, targetValue);
            final int tv = targetValue;
            curValue = tv;
            targetValue = -1;
            finishAnimation(false, tv);
            finishAnimationLocked(false, tv);
        }

        private void finishAnimation(boolean more, int curIntValue) {
        private void finishAnimationLocked(boolean more, int curIntValue) {
            animating = more;
            if (!more) {
                if (mask == SCREEN_BRIGHT_BIT && curIntValue == Power.BRIGHTNESS_OFF) {
@@ -2042,21 +2042,18 @@ class PowerManagerService extends IPowerManager.Stub
                    }
                }
            } else {
                boolean animate;
                boolean jump;
                synchronized (mLocks) {
                    jump = animating; // we haven't already run this animation
                    animate = jump && targetValue == Power.BRIGHTNESS_OFF; // we're turning off
                }
                    // we're turning off
                    final boolean animate = animating && targetValue == Power.BRIGHTNESS_OFF;
                    if (animate) {
                    // TODO: I think it's possible that if you sleep & wake multiple times
                    // quickly for different reasons, mScreenOffReason for the first animation
                    // might get stomped on as it starts the second animation.
                        // It's pretty scary to hold mLocks for this long, and we should
                        // redesign this, but it works for now.
                        nativeStartSurfaceFlingerAnimation(
                                mScreenOffReason == WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR
                                ? 0 : mAnimationSetting);
                    }
                mScreenBrightness.jumpToTarget();
                    mScreenBrightness.jumpToTargetLocked();
                }
            }
        }
    }
@@ -2785,8 +2782,10 @@ class PowerManagerService extends IPowerManager.Stub
            }

            // update our animation state
            synchronized (mLocks) {
                mScreenBrightness.targetValue = brightness;
            mScreenBrightness.jumpToTarget();
                mScreenBrightness.jumpToTargetLocked();
            }
        }
    }