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

Commit e37c04ee authored by Dominik Laskowski's avatar Dominik Laskowski
Browse files

SF: Pass display ID to updatePhaseConfiguration

...to check against the pacesetter rather than active display. This does
not change behavior, because they are the same display in practice.

Bug: 255635821
Flag: EXEMPT refactor
Test: presubmit
Change-Id: I5c7b2bef5b0901864d71cc180bac1dcaa2cfc0d2
parent a96e3939
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ void Scheduler::setPacesetterDisplay(PhysicalDisplayId pacesetterId) {
    mVsyncModulator->cancelRefreshRateChange();

    mVsyncConfiguration->reset();
    updatePhaseConfiguration(pacesetterSelectorPtr()->getActiveMode().fps);
    updatePhaseConfiguration(pacesetterId, pacesetterSelectorPtr()->getActiveMode().fps);
}

void Scheduler::registerDisplay(PhysicalDisplayId displayId, RefreshRateSelectorPtr selectorPtr,
@@ -487,7 +487,12 @@ void Scheduler::setDuration(Cycle cycle, std::chrono::nanoseconds workDuration,
    }
}

void Scheduler::updatePhaseConfiguration(Fps refreshRate) {
void Scheduler::updatePhaseConfiguration(PhysicalDisplayId displayId, Fps refreshRate) {
    const bool isPacesetter =
            FTL_FAKE_GUARD(kMainThreadContext,
                           (std::scoped_lock(mDisplayLock), displayId == mPacesetterDisplayId));
    if (!isPacesetter) return;

    mRefreshRateStats->setRefreshRate(refreshRate);
    mVsyncConfiguration->setRefreshRateFps(refreshRate);
    setVsyncConfig(mVsyncModulator->setVsyncConfigSet(mVsyncConfiguration->getCurrentConfigs()),
+1 −1
Original line number Diff line number Diff line
@@ -187,7 +187,7 @@ public:
        }
    }

    void updatePhaseConfiguration(Fps);
    void updatePhaseConfiguration(PhysicalDisplayId, Fps);

    const VsyncConfiguration& getVsyncConfiguration() const { return *mVsyncConfiguration; }

+5 −15
Original line number Diff line number Diff line
@@ -1340,19 +1340,13 @@ void SurfaceFlinger::setDesiredMode(display::DisplayModeRequest&& desiredMode) {
            // VsyncController model is locked.
            mScheduler->modulateVsync(displayId, &VsyncModulator::onRefreshRateChangeInitiated);

            if (displayId == mActiveDisplayId) {
                mScheduler->updatePhaseConfiguration(mode.fps);
            }

            mScheduler->updatePhaseConfiguration(displayId, mode.fps);
            mScheduler->setModeChangePending(true);
            break;
        }
        case DesiredModeAction::InitiateRenderRateSwitch:
            mScheduler->setRenderRate(displayId, mode.fps, /*applyImmediately*/ false);

            if (displayId == mActiveDisplayId) {
                mScheduler->updatePhaseConfiguration(mode.fps);
            }
            mScheduler->updatePhaseConfiguration(displayId, mode.fps);

            if (emitEvent) {
                mScheduler->onDisplayModeChanged(displayId, mode);
@@ -1447,9 +1441,7 @@ void SurfaceFlinger::finalizeDisplayModeChange(PhysicalDisplayId displayId) {
    mDisplayModeController.finalizeModeChange(displayId, activeMode.modePtr->getId(),
                                              activeMode.modePtr->getVsyncRate(), activeMode.fps);

    if (displayId == mActiveDisplayId) {
        mScheduler->updatePhaseConfiguration(activeMode.fps);
    }
    mScheduler->updatePhaseConfiguration(displayId, activeMode.fps);

    if (pendingModeOpt->emitEvent) {
        mScheduler->onDisplayModeChanged(displayId, activeMode);
@@ -1473,11 +1465,9 @@ void SurfaceFlinger::applyActiveMode(PhysicalDisplayId displayId) {

    constexpr bool kAllowToEnable = true;
    mScheduler->resyncToHardwareVsync(displayId, kAllowToEnable, std::move(activeModePtr).take());
    mScheduler->setRenderRate(displayId, renderFps, /*applyImmediately*/ true);

    if (displayId == mActiveDisplayId) {
        mScheduler->updatePhaseConfiguration(renderFps);
    }
    mScheduler->setRenderRate(displayId, renderFps, /*applyImmediately*/ true);
    mScheduler->updatePhaseConfiguration(displayId, renderFps);
}

void SurfaceFlinger::initiateDisplayModeChanges() {