diff options
5 files changed, 14 insertions, 1 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 91f050c017..cc1c5c5960 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -330,7 +330,7 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) : mFactory(factory), mInterceptor(mFactory.createSurfaceInterceptor()), mTimeStats(std::make_shared<impl::TimeStats>()), - mFrameTracer(std::make_unique<FrameTracer>()), + mFrameTracer(mFactory.createFrameTracer()), mFrameTimeline(std::make_unique<frametimeline::impl::FrameTimeline>(mTimeStats)), mEventQueue(mFactory.createMessageQueue()), mCompositionEngine(mFactory.createCompositionEngine()), diff --git a/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp b/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp index 9a8deae67d..a93f5f631f 100644 --- a/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp +++ b/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp @@ -28,6 +28,7 @@ #include "ContainerLayer.h" #include "DisplayDevice.h" #include "EffectLayer.h" +#include "FrameTracer/FrameTracer.h" #include "Layer.h" #include "MonitoredProducer.h" #include "NativeWindowSurface.h" @@ -130,6 +131,9 @@ sp<EffectLayer> DefaultFactory::createEffectLayer(const LayerCreationArgs& args) return new EffectLayer(args); } +std::unique_ptr<FrameTracer> DefaultFactory::createFrameTracer() { + return std::make_unique<FrameTracer>(); +} } // namespace android::surfaceflinger // TODO(b/129481165): remove the #pragma below and fix conversion issues diff --git a/services/surfaceflinger/SurfaceFlingerDefaultFactory.h b/services/surfaceflinger/SurfaceFlingerDefaultFactory.h index 40774ef108..90032d48b4 100644 --- a/services/surfaceflinger/SurfaceFlingerDefaultFactory.h +++ b/services/surfaceflinger/SurfaceFlingerDefaultFactory.h @@ -54,6 +54,7 @@ public: sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs& args) override; sp<EffectLayer> createEffectLayer(const LayerCreationArgs& args) override; sp<ContainerLayer> createContainerLayer(const LayerCreationArgs& args) override; + std::unique_ptr<FrameTracer> createFrameTracer() override; }; } // namespace android::surfaceflinger diff --git a/services/surfaceflinger/SurfaceFlingerFactory.h b/services/surfaceflinger/SurfaceFlingerFactory.h index 2dd563b416..69e9c3ca29 100644 --- a/services/surfaceflinger/SurfaceFlingerFactory.h +++ b/services/surfaceflinger/SurfaceFlingerFactory.h @@ -34,6 +34,7 @@ class BufferLayerConsumer; class EffectLayer; class ContainerLayer; class DisplayDevice; +class FrameTracer; class GraphicBuffer; class HWComposer; class IGraphicBufferConsumer; @@ -100,6 +101,7 @@ public: virtual sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs& args) = 0; virtual sp<EffectLayer> createEffectLayer(const LayerCreationArgs& args) = 0; virtual sp<ContainerLayer> createContainerLayer(const LayerCreationArgs& args) = 0; + virtual std::unique_ptr<FrameTracer> createFrameTracer() = 0; protected: ~Factory() = default; diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index 6ce738a89f..eba3f8effd 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -30,6 +30,7 @@ #include "DisplayDevice.h" #include "EffectLayer.h" #include "FakeVsyncConfiguration.h" +#include "FrameTracer/FrameTracer.h" #include "Layer.h" #include "NativeWindowSurface.h" #include "Scheduler/MessageQueue.h" @@ -41,6 +42,7 @@ #include "TestableScheduler.h" #include "mock/DisplayHardware/MockDisplay.h" #include "mock/MockDisplayIdGenerator.h" +#include "mock/MockFrameTracer.h" namespace android { @@ -148,6 +150,10 @@ public: return nullptr; } + std::unique_ptr<FrameTracer> createFrameTracer() override { + return std::make_unique<mock::FrameTracer>(); + } + using CreateBufferQueueFunction = std::function<void(sp<IGraphicBufferProducer>* /* outProducer */, sp<IGraphicBufferConsumer>* /* outConsumer */, |