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

Commit 9e345b68 authored by baik.han's avatar baik.han Committed by Eric Jeong
Browse files

Prevent the thread unsafe operation during the user switching

- Prevent accessing a variable that controls brightness
  at the same time through different threads.

Bug: 262663423
Test: Manual
Change-Id: I7ffeb83e664e058a9b3e9f4f8a59d65936c43a6b
parent 02a850b6
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    private static final int MSG_UPDATE_RBC = 11;
    private static final int MSG_BRIGHTNESS_RAMP_DONE = 12;
    private static final int MSG_STATSD_HBM_BRIGHTNESS = 13;
    private static final int MSG_SWITCH_USER = 14;

    private static final int PROXIMITY_UNKNOWN = -1;
    private static final int PROXIMITY_NEGATIVE = 0;
@@ -714,6 +715,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call

    @Override
    public void onSwitchUser(@UserIdInt int newUserId) {
        Message msg = mHandler.obtainMessage(MSG_SWITCH_USER, newUserId);
        mHandler.sendMessage(msg);
    }

    private void handleOnSwitchUser(@UserIdInt int newUserId) {
        handleSettingsChange(true /* userSwitch */);
        handleBrightnessModeChange();
        if (mBrightnessTracker != null) {
@@ -3073,6 +3079,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                case MSG_STATSD_HBM_BRIGHTNESS:
                    logHbmBrightnessStats(Float.intBitsToFloat(msg.arg1), msg.arg2);
                    break;

                case MSG_SWITCH_USER:
                    handleOnSwitchUser(msg.arg1);
                    break;
            }
        }
    }
+10 −0
Original line number Diff line number Diff line
@@ -135,6 +135,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
    private static final int MSG_UPDATE_RBC = 9;
    private static final int MSG_BRIGHTNESS_RAMP_DONE = 10;
    private static final int MSG_STATSD_HBM_BRIGHTNESS = 11;
    private static final int MSG_SWITCH_USER = 12;

    private static final int BRIGHTNESS_CHANGE_STATSD_REPORT_INTERVAL_MS = 500;

@@ -605,6 +606,11 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal

    @Override
    public void onSwitchUser(@UserIdInt int newUserId) {
        Message msg = mHandler.obtainMessage(MSG_SWITCH_USER, newUserId);
        mHandler.sendMessage(msg);
    }

    private void handleOnSwitchUser(@UserIdInt int newUserId) {
        handleSettingsChange(true /* userSwitch */);
        handleBrightnessModeChange();
        if (mBrightnessTracker != null) {
@@ -2573,6 +2579,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                case MSG_STATSD_HBM_BRIGHTNESS:
                    logHbmBrightnessStats(Float.intBitsToFloat(msg.arg1), msg.arg2);
                    break;

                case MSG_SWITCH_USER:
                    handleOnSwitchUser(msg.arg1);
                    break;
            }
        }
    }