diff options
| -rw-r--r-- | services/surfaceflinger/Scheduler/Scheduler.cpp | 7 | ||||
| -rw-r--r-- | services/surfaceflinger/Scheduler/Scheduler.h | 1 |
2 files changed, 6 insertions, 2 deletions
diff --git a/services/surfaceflinger/Scheduler/Scheduler.cpp b/services/surfaceflinger/Scheduler/Scheduler.cpp index 3f9168252b..3a05b0bf88 100644 --- a/services/surfaceflinger/Scheduler/Scheduler.cpp +++ b/services/surfaceflinger/Scheduler/Scheduler.cpp @@ -306,8 +306,11 @@ Period Scheduler::getVsyncPeriod(uid_t uid) { const auto pacesetterOpt = pacesetterDisplayLocked(); LOG_ALWAYS_FATAL_IF(!pacesetterOpt); const Display& pacesetter = *pacesetterOpt; - return std::make_pair(pacesetter.selectorPtr->getActiveMode().fps, - pacesetter.schedulePtr->period()); + const FrameRateMode& frameRateMode = pacesetter.selectorPtr->getActiveMode(); + const auto refreshRate = frameRateMode.fps; + const auto displayVsync = frameRateMode.modePtr->getVsyncRate(); + const auto numPeriod = RefreshRateSelector::getFrameRateDivisor(displayVsync, refreshRate); + return std::make_pair(refreshRate, numPeriod * pacesetter.schedulePtr->period()); }(); const Period currentPeriod = period != Period::zero() ? period : refreshRate.getPeriod(); diff --git a/services/surfaceflinger/Scheduler/Scheduler.h b/services/surfaceflinger/Scheduler/Scheduler.h index 09f75fdaca..4fc2d539d6 100644 --- a/services/surfaceflinger/Scheduler/Scheduler.h +++ b/services/surfaceflinger/Scheduler/Scheduler.h @@ -437,6 +437,7 @@ private: // IEventThreadCallback overrides bool throttleVsync(TimePoint, uid_t) override; + // Get frame interval Period getVsyncPeriod(uid_t) override EXCLUDES(mDisplayLock); void resync() override EXCLUDES(mDisplayLock); void onExpectedPresentTimePosted(TimePoint expectedPresentTime) override EXCLUDES(mDisplayLock); |