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

Commit 85658a1b authored by linpeter's avatar linpeter
Browse files

Allow to apply first brightness as -1

The initial brightness is -1 in DisplayDevice. It won't apply
the brightness(-1) for the first brightness. This allow an
caller to set the brightness to -1

Bug: 254657816
test: atest libsurfaceflinger_unittest:SetDisplayBrightnessTest
Change-Id: I3a87d0b505b8bf8ce411c86a061376aadba42a88
Merged-In: I3a87d0b505b8bf8ce411c86a061376aadba42a88
parent 3dd864dd
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ auto DisplayDevice::getInputInfo() const -> InputInfo {

void DisplayDevice::setPowerMode(hal::PowerMode mode) {
    if (mode == hal::PowerMode::OFF || mode == hal::PowerMode::ON) {
        if (mStagedBrightness && mBrightness != *mStagedBrightness) {
        if (mStagedBrightness && mBrightness != mStagedBrightness) {
            getCompositionDisplay()->setNextBrightness(*mStagedBrightness);
            mBrightness = *mStagedBrightness;
        }
@@ -336,7 +336,7 @@ void DisplayDevice::stageBrightness(float brightness) {
}

void DisplayDevice::persistBrightness(bool needsComposite) {
    if (mStagedBrightness && mBrightness != *mStagedBrightness) {
    if (mStagedBrightness && mBrightness != mStagedBrightness) {
        if (needsComposite) {
            getCompositionDisplay()->setNextBrightness(*mStagedBrightness);
        }
+2 −2
Original line number Diff line number Diff line
@@ -284,8 +284,8 @@ private:
     // allow initial power mode as null.
    std::optional<hardware::graphics::composer::hal::PowerMode> mPowerMode;
    DisplayModePtr mActiveMode;
    std::optional<float> mStagedBrightness = std::nullopt;
    float mBrightness = -1.f;
    std::optional<float> mStagedBrightness;
    std::optional<float> mBrightness;
    const DisplayModes mSupportedModes;

    std::atomic<nsecs_t> mLastHwVsync = 0;
+18 −0
Original line number Diff line number Diff line
@@ -96,5 +96,23 @@ TEST_F(SetDisplayBrightnessTest, persistDisplayBrightnessWithCompositeShortCircu
    EXPECT_EQ(std::nullopt, displayDevice->getCompositionDisplay()->getState().displayBrightness);
}

TEST_F(SetDisplayBrightnessTest, firstDisplayBrightnessWithComposite) {
    ftl::FakeGuard guard(kMainThreadContext);
    sp<DisplayDevice> displayDevice = getDisplayDevice();

    EXPECT_EQ(std::nullopt, displayDevice->getStagedBrightness());

    constexpr float kDisplayBrightness = -1.0f;
    displayDevice->stageBrightness(kDisplayBrightness);

    EXPECT_EQ(-1.0f, displayDevice->getStagedBrightness());

    displayDevice->persistBrightness(true);

    EXPECT_EQ(std::nullopt, displayDevice->getStagedBrightness());
    EXPECT_EQ(kDisplayBrightness,
              displayDevice->getCompositionDisplay()->getState().displayBrightness);
}

} // namespace
} // namespace android