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

Commit a95d5a13 authored by Ady Abraham's avatar Ady Abraham Committed by Android (Google) Code Review
Browse files

Merge "SF: change the render frame rate when a display mode is changing"

parents ccf63865 95a37e2f
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -479,8 +479,9 @@ auto DisplayDevice::setDesiredActiveMode(const ActiveModeInfo& info, bool force)
    const auto& desiredMode = *info.modeOpt->modePtr;

    // Check if we are already at the desired mode
    if (!force && refreshRateSelector().getActiveMode().modePtr->getId() == desiredMode.getId()) {
        if (refreshRateSelector().getActiveMode() == info.modeOpt) {
    const auto currentMode = refreshRateSelector().getActiveMode();
    if (!force && currentMode.modePtr->getId() == desiredMode.getId()) {
        if (currentMode == info.modeOpt) {
            return DesiredActiveModeAction::None;
        }

@@ -488,6 +489,11 @@ auto DisplayDevice::setDesiredActiveMode(const ActiveModeInfo& info, bool force)
        return DesiredActiveModeAction::InitiateRenderRateSwitch;
    }

    // Set the render frame rate to the current physical refresh rate to schedule the next
    // frame as soon as possible.
    setActiveMode(currentMode.modePtr->getId(), currentMode.modePtr->getFps(),
                  currentMode.modePtr->getFps());

    // Initiate a mode change.
    mDesiredActiveModeChanged = true;
    mDesiredActiveMode = info;
+4 −0
Original line number Diff line number Diff line
@@ -1152,6 +1152,10 @@ void SurfaceFlinger::setDesiredActiveMode(display::DisplayModeRequest&& request,
    switch (display->setDesiredActiveMode(DisplayDevice::ActiveModeInfo(std::move(request)),
                                          force)) {
        case DisplayDevice::DesiredActiveModeAction::InitiateDisplayModeSwitch:
            // Set the render rate as setDesiredActiveMode updated it.
            mScheduler->setRenderRate(display->refreshRateSelector().getActiveMode().fps);

            // Schedule a new frame to initiate the display mode switch.
            scheduleComposite(FrameHint::kNone);

            // Start receiving vsync samples now, so that we can detect a period