Loading services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -701,7 +701,6 @@ void RefreshRateConfigs::initializeIdleTimer() { [getCallback] { if (const auto callback = getCallback()) callback->onExpired(); }); mIdleTimer->start(); } } Loading services/surfaceflinger/Scheduler/RefreshRateConfigs.h +16 −4 Original line number Diff line number Diff line Loading @@ -362,10 +362,22 @@ public: std::function<void()> kernelTimerExpired) { std::scoped_lock lock(mIdleTimerCallbacksMutex); mIdleTimerCallbacks.emplace(); mIdleTimerCallbacks->platform.onReset = platformTimerReset; mIdleTimerCallbacks->platform.onExpired = platformTimerExpired; mIdleTimerCallbacks->kernel.onReset = kernelTimerReset; mIdleTimerCallbacks->kernel.onExpired = kernelTimerExpired; mIdleTimerCallbacks->platform.onReset = std::move(platformTimerReset); mIdleTimerCallbacks->platform.onExpired = std::move(platformTimerExpired); mIdleTimerCallbacks->kernel.onReset = std::move(kernelTimerReset); mIdleTimerCallbacks->kernel.onExpired = std::move(kernelTimerExpired); } void startIdleTimer() { if (mIdleTimer) { mIdleTimer->start(); } } void stopIdleTimer() { if (mIdleTimer) { mIdleTimer->stop(); } } void resetIdleTimer(bool kernelOnly) { Loading services/surfaceflinger/Scheduler/Scheduler.h +26 −11 Original line number Diff line number Diff line Loading @@ -181,17 +181,32 @@ public: void setRefreshRateConfigs(std::shared_ptr<scheduler::RefreshRateConfigs> refreshRateConfigs) EXCLUDES(mRefreshRateConfigsLock) { // We need to stop the idle timer on the previous RefreshRateConfigs instance // and cleanup the scheduler's state before we switch to the other RefreshRateConfigs. { std::scoped_lock lock(mRefreshRateConfigsLock); if (mRefreshRateConfigs) mRefreshRateConfigs->stopIdleTimer(); } { std::scoped_lock lock(mFeatureStateLock); mFeatures = {}; } { std::scoped_lock lock(mRefreshRateConfigsLock); mRefreshRateConfigs = std::move(refreshRateConfigs); mRefreshRateConfigs->setIdleTimerCallbacks( [this] { std::invoke(&Scheduler::idleTimerCallback, this, TimerState::Reset); }, [this] { std::invoke(&Scheduler::idleTimerCallback, this, TimerState::Expired); }, [this] { std::invoke(&Scheduler::idleTimerCallback, this, TimerState::Expired); }, [this] { std::invoke(&Scheduler::kernelIdleTimerCallback, this, TimerState::Reset); }, [this] { std::invoke(&Scheduler::kernelIdleTimerCallback, this, TimerState::Expired); }); mRefreshRateConfigs->startIdleTimer(); } } nsecs_t getVsyncPeriodFromRefreshRateConfigs() const EXCLUDES(mRefreshRateConfigsLock) { Loading Loading
services/surfaceflinger/Scheduler/RefreshRateConfigs.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -701,7 +701,6 @@ void RefreshRateConfigs::initializeIdleTimer() { [getCallback] { if (const auto callback = getCallback()) callback->onExpired(); }); mIdleTimer->start(); } } Loading
services/surfaceflinger/Scheduler/RefreshRateConfigs.h +16 −4 Original line number Diff line number Diff line Loading @@ -362,10 +362,22 @@ public: std::function<void()> kernelTimerExpired) { std::scoped_lock lock(mIdleTimerCallbacksMutex); mIdleTimerCallbacks.emplace(); mIdleTimerCallbacks->platform.onReset = platformTimerReset; mIdleTimerCallbacks->platform.onExpired = platformTimerExpired; mIdleTimerCallbacks->kernel.onReset = kernelTimerReset; mIdleTimerCallbacks->kernel.onExpired = kernelTimerExpired; mIdleTimerCallbacks->platform.onReset = std::move(platformTimerReset); mIdleTimerCallbacks->platform.onExpired = std::move(platformTimerExpired); mIdleTimerCallbacks->kernel.onReset = std::move(kernelTimerReset); mIdleTimerCallbacks->kernel.onExpired = std::move(kernelTimerExpired); } void startIdleTimer() { if (mIdleTimer) { mIdleTimer->start(); } } void stopIdleTimer() { if (mIdleTimer) { mIdleTimer->stop(); } } void resetIdleTimer(bool kernelOnly) { Loading
services/surfaceflinger/Scheduler/Scheduler.h +26 −11 Original line number Diff line number Diff line Loading @@ -181,17 +181,32 @@ public: void setRefreshRateConfigs(std::shared_ptr<scheduler::RefreshRateConfigs> refreshRateConfigs) EXCLUDES(mRefreshRateConfigsLock) { // We need to stop the idle timer on the previous RefreshRateConfigs instance // and cleanup the scheduler's state before we switch to the other RefreshRateConfigs. { std::scoped_lock lock(mRefreshRateConfigsLock); if (mRefreshRateConfigs) mRefreshRateConfigs->stopIdleTimer(); } { std::scoped_lock lock(mFeatureStateLock); mFeatures = {}; } { std::scoped_lock lock(mRefreshRateConfigsLock); mRefreshRateConfigs = std::move(refreshRateConfigs); mRefreshRateConfigs->setIdleTimerCallbacks( [this] { std::invoke(&Scheduler::idleTimerCallback, this, TimerState::Reset); }, [this] { std::invoke(&Scheduler::idleTimerCallback, this, TimerState::Expired); }, [this] { std::invoke(&Scheduler::idleTimerCallback, this, TimerState::Expired); }, [this] { std::invoke(&Scheduler::kernelIdleTimerCallback, this, TimerState::Reset); }, [this] { std::invoke(&Scheduler::kernelIdleTimerCallback, this, TimerState::Expired); }); mRefreshRateConfigs->startIdleTimer(); } } nsecs_t getVsyncPeriodFromRefreshRateConfigs() const EXCLUDES(mRefreshRateConfigsLock) { Loading