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

Commit ec207e8e authored by Dennis Kiilerich's avatar Dennis Kiilerich
Browse files

Rename setPowerModeInternal to setPhysicalDisplayPowerMode

Bug: 342681202

Flag: EXEMPT refactor

Test: built
Change-Id: Ib562fdc672f09e92c646583840c324ad50e2fa39
parent d0503fa4
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -4164,7 +4164,7 @@ void SurfaceFlinger::processDisplayChanged(const wp<IBinder>& displayToken,
        if (currentState.physical) {
            const auto display = getDisplayDeviceLocked(displayToken);
            if (!mSkipPowerOnForQuiescent) {
                setPowerModeInternal(display, hal::PowerMode::ON);
                setPhysicalDisplayPowerMode(display, hal::PowerMode::ON);
            }

            if (display->getPhysicalId() == mActiveDisplayId) {
@@ -5655,7 +5655,7 @@ void SurfaceFlinger::initializeDisplays() {

        // In case of a restart, ensure all displays are off.
        for (const auto& [id, display] : mPhysicalDisplays) {
            setPowerModeInternal(getDisplayDeviceLocked(id), hal::PowerMode::OFF);
            setPhysicalDisplayPowerMode(getDisplayDeviceLocked(id), hal::PowerMode::OFF);
        }

        // Power on all displays. The primary display is first, so becomes the active display. Also,
@@ -5664,13 +5664,14 @@ void SurfaceFlinger::initializeDisplays() {
        // Additionally, do not turn on displays if the boot should be quiescent.
        if (!mSkipPowerOnForQuiescent) {
            for (const auto& [id, display] : mPhysicalDisplays) {
                setPowerModeInternal(getDisplayDeviceLocked(id), hal::PowerMode::ON);
                setPhysicalDisplayPowerMode(getDisplayDeviceLocked(id), hal::PowerMode::ON);
            }
        }
    }
}

void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& display, hal::PowerMode mode) {
void SurfaceFlinger::setPhysicalDisplayPowerMode(const sp<DisplayDevice>& display,
                                                 hal::PowerMode mode) {
    if (display->isVirtual()) {
        // TODO(b/241285876): This code path should not be reachable, so enforce this at compile
        // time.
@@ -5846,7 +5847,7 @@ void SurfaceFlinger::setPowerMode(const sp<IBinder>& displayToken, int mode) {
            }
        } else {
            ftl::FakeGuard guard(mStateLock);
            setPowerModeInternal(display, static_cast<hal::PowerMode>(mode));
            setPhysicalDisplayPowerMode(display, static_cast<hal::PowerMode>(mode));
        }
    });

+1 −1
Original line number Diff line number Diff line
@@ -733,7 +733,7 @@ private:
    void applyActiveMode(PhysicalDisplayId) REQUIRES(kMainThreadContext);

    // Called on the main thread in response to setPowerMode()
    void setPowerModeInternal(const sp<DisplayDevice>& display, hal::PowerMode mode)
    void setPhysicalDisplayPowerMode(const sp<DisplayDevice>& display, hal::PowerMode mode)
            REQUIRES(mStateLock, kMainThreadContext);

    // Returns the preferred mode for PhysicalDisplayId if the Scheduler has selected one for that
+1 −1
Original line number Diff line number Diff line
@@ -143,7 +143,7 @@ TEST_F(SchedulerTest, registerDisplay) FTL_FAKE_GUARD(kMainThreadContext) {
                                                                      kDisplay1Mode60->getId()));

    // TODO(b/241285191): Restore once VsyncSchedule::getPendingHardwareVsyncState is called by
    // Scheduler::setDisplayPowerMode rather than SF::setPowerModeInternal.
    // Scheduler::setDisplayPowerMode rather than SF::setPhysicalDisplayPowerMode.
#if 0
    // Hardware VSYNC should be disabled for newly registered displays.
    EXPECT_CALL(mSchedulerCallback, requestHardwareVsync(kDisplayId2, false)).Times(1);
+12 −12
Original line number Diff line number Diff line
@@ -415,8 +415,8 @@ TEST_F(DisplayModeSwitchingTest, innerXorOuterDisplay) {
    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId60));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId120));

    mFlinger.setPowerModeInternal(outerDisplay, hal::PowerMode::OFF);
    mFlinger.setPowerModeInternal(innerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(outerDisplay, hal::PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(innerDisplay, hal::PowerMode::ON);

    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId60));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId120));
@@ -446,8 +446,8 @@ TEST_F(DisplayModeSwitchingTest, innerXorOuterDisplay) {
    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId90));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId60));

    mFlinger.setPowerModeInternal(innerDisplay, hal::PowerMode::OFF);
    mFlinger.setPowerModeInternal(outerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(innerDisplay, hal::PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(outerDisplay, hal::PowerMode::ON);

    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId90));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId60));
@@ -479,8 +479,8 @@ TEST_F(DisplayModeSwitchingTest, innerAndOuterDisplay) {
    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId60));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId120));

    mFlinger.setPowerModeInternal(innerDisplay, hal::PowerMode::ON);
    mFlinger.setPowerModeInternal(outerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(innerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(outerDisplay, hal::PowerMode::ON);

    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId60));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId120));
@@ -522,7 +522,7 @@ TEST_F(DisplayModeSwitchingTest, powerOffDuringModeSet) {
    EXPECT_THAT(mDisplay, ModeSwitchingTo(&mFlinger, kModeId90));

    // Power off the display before the mode has been set.
    mFlinger.setPowerModeInternal(mDisplay, hal::PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mDisplay, hal::PowerMode::OFF);

    const VsyncPeriodChangeTimeline timeline{.refreshRequired = true};
    EXPECT_SET_ACTIVE_CONFIG(kInnerDisplayHwcId, kModeId90);
@@ -547,8 +547,8 @@ TEST_F(DisplayModeSwitchingTest, powerOffDuringConcurrentModeSet) {
    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId60));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId120));

    mFlinger.setPowerModeInternal(innerDisplay, hal::PowerMode::ON);
    mFlinger.setPowerModeInternal(outerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(innerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(outerDisplay, hal::PowerMode::ON);

    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId60));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId120));
@@ -565,7 +565,7 @@ TEST_F(DisplayModeSwitchingTest, powerOffDuringConcurrentModeSet) {
    EXPECT_THAT(outerDisplay, ModeSwitchingTo(&mFlinger, kModeId60));

    // Power off the outer display before the mode has been set.
    mFlinger.setPowerModeInternal(outerDisplay, hal::PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(outerDisplay, hal::PowerMode::OFF);

    const VsyncPeriodChangeTimeline timeline{.refreshRequired = true};
    EXPECT_SET_ACTIVE_CONFIG(kInnerDisplayHwcId, kModeId90);
@@ -582,8 +582,8 @@ TEST_F(DisplayModeSwitchingTest, powerOffDuringConcurrentModeSet) {
    EXPECT_THAT(innerDisplay, ModeSettledTo(&dmc(), kModeId90));
    EXPECT_THAT(outerDisplay, ModeSettledTo(&dmc(), kModeId60));

    mFlinger.setPowerModeInternal(innerDisplay, hal::PowerMode::OFF);
    mFlinger.setPowerModeInternal(outerDisplay, hal::PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(innerDisplay, hal::PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(outerDisplay, hal::PowerMode::ON);

    EXPECT_EQ(NO_ERROR,
              mFlinger.setDesiredDisplayModeSpecs(outerDisplay->getDisplayToken().promote(),
+27 −27
Original line number Diff line number Diff line
@@ -38,30 +38,30 @@ TEST_F(FoldableTest, promotesPacesetterOnBoot) {
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kInnerDisplayId);

    // ...and should still be after powering on.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kInnerDisplayId);
}

TEST_F(FoldableTest, promotesPacesetterOnFoldUnfold) {
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);

    // The outer display should become the pacesetter after folding.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::OFF);
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kOuterDisplayId);

    // The inner display should become the pacesetter after unfolding.
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::OFF);
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kInnerDisplayId);
}

TEST_F(FoldableTest, promotesPacesetterOnConcurrentPowerOn) {
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);

    // The inner display should stay the pacesetter if both are powered on.
    // TODO(b/255635821): The pacesetter should depend on the displays' refresh rates.
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kInnerDisplayId);

    // The outer display should become the pacesetter if designated.
@@ -74,20 +74,20 @@ TEST_F(FoldableTest, promotesPacesetterOnConcurrentPowerOn) {
}

TEST_F(FoldableTest, promotesPacesetterOnConcurrentPowerOff) {
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);

    // The outer display should become the pacesetter if the inner display powers off.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::OFF);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kOuterDisplayId);

    // The outer display should stay the pacesetter if both are powered on.
    // TODO(b/255635821): The pacesetter should depend on the displays' refresh rates.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kOuterDisplayId);

    // The inner display should become the pacesetter if the outer display powers off.
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::OFF);
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kInnerDisplayId);
}

@@ -114,8 +114,8 @@ TEST_F(FoldableTest, requestsHardwareVsyncForInnerDisplay) {
            .Times(0);

    // The injected VsyncSchedule uses TestableScheduler::mockRequestHardwareVsync, so no calls to
    // ISchedulerCallback::requestHardwareVsync are expected during setPowerModeInternal.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    // ISchedulerCallback::requestHardwareVsync are expected during setPhysicalDisplayPowerMode.
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);

    EXPECT_TRUE(mInnerDisplay->isPoweredOn());
    EXPECT_FALSE(mOuterDisplay->isPoweredOn());
@@ -133,10 +133,10 @@ TEST_F(FoldableTest, requestsHardwareVsyncForOuterDisplay) {
            .Times(1);

    // The injected VsyncSchedule uses TestableScheduler::mockRequestHardwareVsync, so no calls to
    // ISchedulerCallback::requestHardwareVsync are expected during setPowerModeInternal.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::OFF);
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    // ISchedulerCallback::requestHardwareVsync are expected during setPhysicalDisplayPowerMode.
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);

    EXPECT_FALSE(mInnerDisplay->isPoweredOn());
    EXPECT_TRUE(mOuterDisplay->isPoweredOn());
@@ -154,9 +154,9 @@ TEST_F(FoldableTest, requestsHardwareVsyncForBothDisplays) {
            .Times(1);

    // The injected VsyncSchedule uses TestableScheduler::mockRequestHardwareVsync, so no calls to
    // ISchedulerCallback::requestHardwareVsync are expected during setPowerModeInternal.
    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    // ISchedulerCallback::requestHardwareVsync are expected during setPhysicalDisplayPowerMode.
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);

    EXPECT_TRUE(mInnerDisplay->isPoweredOn());
    EXPECT_TRUE(mOuterDisplay->isPoweredOn());
@@ -173,8 +173,8 @@ TEST_F(FoldableTest, requestVsyncOnPowerOn) {
    EXPECT_CALL(mFlinger.scheduler()->mockRequestHardwareVsync, Call(kOuterDisplayId, true))
            .Times(1);

    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);
}

TEST_F(FoldableTest, disableVsyncOnPowerOffPacesetter) {
@@ -192,10 +192,10 @@ TEST_F(FoldableTest, disableVsyncOnPowerOffPacesetter) {
    EXPECT_CALL(mFlinger.scheduler()->mockRequestHardwareVsync, Call(kInnerDisplayId, false))
            .Times(1);

    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::ON);
    mFlinger.setPowerModeInternal(mOuterDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::ON);
    mFlinger.setPhysicalDisplayPowerMode(mOuterDisplay, PowerMode::ON);

    mFlinger.setPowerModeInternal(mInnerDisplay, PowerMode::OFF);
    mFlinger.setPhysicalDisplayPowerMode(mInnerDisplay, PowerMode::OFF);

    // Other display is now the pacesetter.
    ASSERT_EQ(mFlinger.scheduler()->pacesetterDisplayId(), kOuterDisplayId);
Loading