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

Commit 523316b6 authored by Pawit Pornkitprasan's avatar Pawit Pornkitprasan
Browse files

Fix automatic brightness when filtering is disabled

(Broke in I9c88704484f4a23b3d643597f35b55d74cf36b56)

- Do not mHandler.removeCallbacks(mAutoBrightnessTask) every time
  a value is received from the sensor because that will ensure that
  the task ever get ran! (We schedule it 2 seconds into the future
  but receives a value from the sensor every second.)
- Replace the algorithm for brightness change (non-filtering) with
  the original algorithm before the patch. (Not sure why the patch
  changed it.)

Change-Id: I71f6f23c53974fbb763d46ea4023623d2bbeb250
parent f9d6bed4
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -3465,7 +3465,7 @@ public class PowerManagerService extends IPowerManager.Stub
                if (mDebugLightSensor) {
                    Slog.d(TAG, "onSensorChanged: light value: " + value);
                }
                mHandler.removeCallbacks(mAutoBrightnessTask);

                mLightFilterSample = value;
                if (mAutoBrightessEnabled && mLightFilterEnabled) {
                    if (mLightFilterRunning && mLightSensorValue != -1) {
@@ -3501,12 +3501,18 @@ public class PowerManagerService extends IPowerManager.Stub
                    return;
                }

                if (mLightSensorValue != value) {
                if (mLightSensorValue == -1 ||
                        milliseconds < mLastScreenOnTime + mLightSensorWarmupTime) {
                    // process the value immediately if screen has just turned on
                    mHandler.removeCallbacks(mAutoBrightnessTask);
                    mLightSensorPendingDecrease = false;
                    mLightSensorPendingIncrease = false;
                    lightSensorChangedLocked(value);
                } else {
                    if ((value > mLightSensorValue && mLightSensorPendingDecrease) ||
                            (value < mLightSensorValue && mLightSensorPendingIncrease) ||
                            (value == mLightSensorValue) ||
                            (!mLightSensorPendingDecrease && !mLightSensorPendingIncrease)) {
                        // delay processing to debounce the sensor
                        mHandler.removeCallbacks(mAutoBrightnessTask);
                        mLightSensorPendingDecrease = (value < mLightSensorValue);
@@ -3515,12 +3521,12 @@ public class PowerManagerService extends IPowerManager.Stub
                            mLightSensorPendingValue = value;
                            mHandler.postDelayed(mAutoBrightnessTask, LIGHT_SENSOR_DELAY);
                        }
                    }                    
                    } else {
                        mLightSensorPendingValue = value;
                    }
                }
            }
        }

        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // ignore