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

Commit 50039559 authored by Marin Shalamanov's avatar Marin Shalamanov Committed by Automerger Merge Worker
Browse files

[SF] Don't cache VSYNC state in SF am: c75b0777

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/11895140

Change-Id: I270fda23ca851e383d822a3f9e1fd83db22ee87f
parents 6829a37d c75b0777
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -1690,7 +1690,7 @@ void SurfaceFlinger::setPrimaryVsyncEnabledInternal(bool enabled) {
    if (const auto displayId = getInternalDisplayIdLocked()) {
        sp<DisplayDevice> display = getDefaultDisplayDeviceLocked();
        if (display && display->isPoweredOn()) {
            setVsyncEnabledInHWC(*displayId, mHWCVsyncPendingState);
            getHwComposer().setVsyncEnabled(*displayId, mHWCVsyncPendingState);
        }
    }
}
@@ -4173,13 +4173,6 @@ void SurfaceFlinger::initializeDisplays() {
    static_cast<void>(schedule([this]() MAIN_THREAD { onInitializeDisplays(); }));
}

void SurfaceFlinger::setVsyncEnabledInHWC(DisplayId displayId, hal::Vsync enabled) {
    if (mHWCVsyncState != enabled) {
        getHwComposer().setVsyncEnabled(displayId, enabled);
        mHWCVsyncState = enabled;
    }
}

void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& display, hal::PowerMode mode) {
    if (display->isVirtual()) {
        ALOGE("%s: Invalid operation on virtual display", __FUNCTION__);
@@ -4208,7 +4201,7 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& display, hal:
        }
        getHwComposer().setPowerMode(*displayId, mode);
        if (display->isPrimary() && mode != hal::PowerMode::DOZE_SUSPEND) {
            setVsyncEnabledInHWC(*displayId, mHWCVsyncPendingState);
            getHwComposer().setVsyncEnabled(*displayId, mHWCVsyncPendingState);
            mScheduler->onScreenAcquired(mAppConnectionHandle);
            mScheduler->resyncToHardwareVsync(true, getVsyncPeriod());
        }
@@ -4227,7 +4220,7 @@ void SurfaceFlinger::setPowerModeInternal(const sp<DisplayDevice>& display, hal:
        }

        // Make sure HWVsync is disabled before turning off the display
        setVsyncEnabledInHWC(*displayId, hal::Vsync::DISABLE);
        getHwComposer().setVsyncEnabled(*displayId, hal::Vsync::DISABLE);

        getHwComposer().setPowerMode(*displayId, mode);
        mVisibleRegionsDirty = true;
+1 −5
Original line number Diff line number Diff line
@@ -302,7 +302,6 @@ public:

    // main thread function to enable/disable h/w composer event
    void setPrimaryVsyncEnabledInternal(bool enabled) REQUIRES(mStateLock);
    void setVsyncEnabledInHWC(DisplayId displayId, hal::Vsync enabled);

    // called on the main thread by MessageQueue when an internal message
    // is received
@@ -1209,6 +1208,7 @@ private:
    std::unique_ptr<scheduler::RefreshRateStats> mRefreshRateStats;

    std::atomic<nsecs_t> mExpectedPresentTime = 0;
    hal::Vsync mHWCVsyncPendingState = hal::Vsync::DISABLE;

    /* ------------------------------------------------------------------------
     * Generic Layer Metadata
@@ -1279,10 +1279,6 @@ private:
    // be any issues with a raw pointer referencing an invalid object.
    std::unordered_set<Layer*> mOffscreenLayers;

    // Flags to capture the state of Vsync in HWC
    hal::Vsync mHWCVsyncState = hal::Vsync::DISABLE;
    hal::Vsync mHWCVsyncPendingState = hal::Vsync::DISABLE;

    // Fields tracking the current jank event: when it started and how many
    // janky frames there are.
    nsecs_t mMissedFrameJankStart = 0;