Loading services/surfaceflinger/Scheduler/Scheduler.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -818,6 +818,12 @@ void Scheduler::dumpVsync(std::string& out) const { } bool Scheduler::updateFrameRateOverrides(GlobalSignals consideredSignals, Fps displayRefreshRate) { std::scoped_lock lock(mPolicyLock); return updateFrameRateOverridesLocked(consideredSignals, displayRefreshRate); } bool Scheduler::updateFrameRateOverridesLocked(GlobalSignals consideredSignals, Fps displayRefreshRate) { if (consideredSignals.idle) return false; const auto frameRateOverrides = Loading Loading @@ -1036,7 +1042,7 @@ auto Scheduler::applyPolicy(S Policy::*statePtr, T&& newState) -> GlobalSignals .emitEvent = !choice.consideredSignals.idle}); } frameRateOverridesChanged = updateFrameRateOverrides(consideredSignals, modeOpt->fps); frameRateOverridesChanged = updateFrameRateOverridesLocked(consideredSignals, modeOpt->fps); if (mPolicy.modeOpt != modeOpt) { mPolicy.modeOpt = modeOpt; Loading services/surfaceflinger/Scheduler/Scheduler.h +4 −1 Original line number Diff line number Diff line Loading @@ -307,6 +307,8 @@ public: return mLayerHistory.getLayerFramerate(now, id); } bool updateFrameRateOverrides(GlobalSignals, Fps displayRefreshRate) EXCLUDES(mPolicyLock); private: friend class TestableScheduler; Loading Loading @@ -392,7 +394,8 @@ private: GlobalSignals makeGlobalSignals() const REQUIRES(mPolicyLock); bool updateFrameRateOverrides(GlobalSignals, Fps displayRefreshRate) REQUIRES(mPolicyLock); bool updateFrameRateOverridesLocked(GlobalSignals, Fps displayRefreshRate) REQUIRES(mPolicyLock); void updateAttachedChoreographers(const surfaceflinger::frontend::LayerHierarchy&, Fps displayRefreshRate); int updateAttachedChoreographersInternal(const surfaceflinger::frontend::LayerHierarchy&, Loading services/surfaceflinger/SurfaceFlinger.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -7923,7 +7923,13 @@ status_t SurfaceFlinger::applyRefreshRateSelectorPolicy( return INVALID_OPERATION; } setDesiredActiveMode({std::move(preferredMode), .emitEvent = true}, force); setDesiredActiveMode({preferredMode, .emitEvent = true}, force); // Update the frameRateOverride list as the display render rate might have changed if (mScheduler->updateFrameRateOverrides(/*consideredSignals*/ {}, preferredMode.fps)) { triggerOnFrameRateOverridesChanged(); } return NO_ERROR; } Loading Loading
services/surfaceflinger/Scheduler/Scheduler.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -818,6 +818,12 @@ void Scheduler::dumpVsync(std::string& out) const { } bool Scheduler::updateFrameRateOverrides(GlobalSignals consideredSignals, Fps displayRefreshRate) { std::scoped_lock lock(mPolicyLock); return updateFrameRateOverridesLocked(consideredSignals, displayRefreshRate); } bool Scheduler::updateFrameRateOverridesLocked(GlobalSignals consideredSignals, Fps displayRefreshRate) { if (consideredSignals.idle) return false; const auto frameRateOverrides = Loading Loading @@ -1036,7 +1042,7 @@ auto Scheduler::applyPolicy(S Policy::*statePtr, T&& newState) -> GlobalSignals .emitEvent = !choice.consideredSignals.idle}); } frameRateOverridesChanged = updateFrameRateOverrides(consideredSignals, modeOpt->fps); frameRateOverridesChanged = updateFrameRateOverridesLocked(consideredSignals, modeOpt->fps); if (mPolicy.modeOpt != modeOpt) { mPolicy.modeOpt = modeOpt; Loading
services/surfaceflinger/Scheduler/Scheduler.h +4 −1 Original line number Diff line number Diff line Loading @@ -307,6 +307,8 @@ public: return mLayerHistory.getLayerFramerate(now, id); } bool updateFrameRateOverrides(GlobalSignals, Fps displayRefreshRate) EXCLUDES(mPolicyLock); private: friend class TestableScheduler; Loading Loading @@ -392,7 +394,8 @@ private: GlobalSignals makeGlobalSignals() const REQUIRES(mPolicyLock); bool updateFrameRateOverrides(GlobalSignals, Fps displayRefreshRate) REQUIRES(mPolicyLock); bool updateFrameRateOverridesLocked(GlobalSignals, Fps displayRefreshRate) REQUIRES(mPolicyLock); void updateAttachedChoreographers(const surfaceflinger::frontend::LayerHierarchy&, Fps displayRefreshRate); int updateAttachedChoreographersInternal(const surfaceflinger::frontend::LayerHierarchy&, Loading
services/surfaceflinger/SurfaceFlinger.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -7923,7 +7923,13 @@ status_t SurfaceFlinger::applyRefreshRateSelectorPolicy( return INVALID_OPERATION; } setDesiredActiveMode({std::move(preferredMode), .emitEvent = true}, force); setDesiredActiveMode({preferredMode, .emitEvent = true}, force); // Update the frameRateOverride list as the display render rate might have changed if (mScheduler->updateFrameRateOverrides(/*consideredSignals*/ {}, preferredMode.fps)) { triggerOnFrameRateOverridesChanged(); } return NO_ERROR; } Loading