diff options
Diffstat (limited to 'services/surfaceflinger/RefreshRateOverlay.cpp')
-rw-r--r-- | services/surfaceflinger/RefreshRateOverlay.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/services/surfaceflinger/RefreshRateOverlay.cpp b/services/surfaceflinger/RefreshRateOverlay.cpp index be04c09fa3..42676c6936 100644 --- a/services/surfaceflinger/RefreshRateOverlay.cpp +++ b/services/surfaceflinger/RefreshRateOverlay.cpp @@ -138,7 +138,20 @@ void RefreshRateOverlay::drawNumber(int number, int left, SkColor color, SkCanva SegmentDrawer::drawDigit(number % 10, left, color, canvas); } -RefreshRateOverlay::RefreshRateOverlay(FpsRange fpsRange, ftl::Flags<Features> features) +std::unique_ptr<RefreshRateOverlay> RefreshRateOverlay::create(FpsRange range, + ftl::Flags<Features> features) { + std::unique_ptr<RefreshRateOverlay> overlay = + std::make_unique<RefreshRateOverlay>(ConstructorTag{}, range, features); + if (overlay->initCheck()) { + return overlay; + } + + ALOGE("%s: Failed to create RefreshRateOverlay", __func__); + return {}; +} + +RefreshRateOverlay::RefreshRateOverlay(ConstructorTag, FpsRange fpsRange, + ftl::Flags<Features> features) : mFpsRange(fpsRange), mFeatures(features), mSurfaceControl( @@ -154,6 +167,10 @@ RefreshRateOverlay::RefreshRateOverlay(FpsRange fpsRange, ftl::Flags<Features> f .apply(); } +bool RefreshRateOverlay::initCheck() const { + return mSurfaceControl != nullptr; +} + auto RefreshRateOverlay::getOrCreateBuffers(Fps vsyncRate, Fps renderFps) -> const Buffers& { static const Buffers kNoBuffers; if (!mSurfaceControl) return kNoBuffers; |