diff --git a/backend/ClientCompositionPlanner.cpp b/backend/ClientCompositionPlanner.cpp index 93a7494..1884cc7 100644 --- a/backend/ClientCompositionPlanner.cpp +++ b/backend/ClientCompositionPlanner.cpp @@ -31,16 +31,19 @@ class ClientCompositionPlanner : public CompositionPlanner { class ClientBackendPipelineCreator : public GenericPipelineCreator { public: - ClientBackendPipelineCreator() : GenericPipelineCreator("client") { - } std::unique_ptr CreateCompositionPlanner() override { return std::make_unique(); } + + private: + ClientBackendPipelineCreator() : GenericPipelineCreator("client") { + } + + static ClientBackendPipelineCreator instance; }; -// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables, -// cert-err58-cpp) -static ClientBackendPipelineCreator client_backend; +// NOLINTNEXTLINE(cert-err58-cpp) +ClientBackendPipelineCreator ClientBackendPipelineCreator::instance; } // namespace } // namespace android::drm_hwcomposer diff --git a/backend/GenericPipelineCreator.cpp b/backend/GenericPipelineCreator.cpp index d693a1e..76e29ab 100644 --- a/backend/GenericPipelineCreator.cpp +++ b/backend/GenericPipelineCreator.cpp @@ -21,6 +21,10 @@ namespace android::drm_hwcomposer { +GenericPipelineCreator::GenericPipelineCreator() + : GenericPipelineCreator("generic") { +} + GenericPipelineCreator::GenericPipelineCreator(const std::string& name) : BackendManager::PipelineCreator(name) { } @@ -39,7 +43,7 @@ GenericPipelineCreator::CreateCompositionPlanner() { return std::make_unique(); } -// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) -static GenericPipelineCreator generic_pipeline_creator("generic"); +// NOLINTNEXTLINE(cert-err58-cpp) +GenericPipelineCreator GenericPipelineCreator::instance; } // namespace android::drm_hwcomposer diff --git a/backend/GenericPipelineCreator.h b/backend/GenericPipelineCreator.h index d099bcd..1da8990 100644 --- a/backend/GenericPipelineCreator.h +++ b/backend/GenericPipelineCreator.h @@ -25,15 +25,20 @@ namespace android::drm_hwcomposer { // using generic heuristics on top of upstream drm uAPI. class GenericPipelineCreator : public BackendManager::PipelineCreator { public: - explicit GenericPipelineCreator(const std::string& name); std::unique_ptr CreatePipeline( DrmConnector& connector) override; protected: + explicit GenericPipelineCreator(const std::string& name); + // Create a new GenericCompositionPlanner by default. Classes can override // this to create different composition planners while using the default logic // to create a DrmDisplayPipeline. virtual std::unique_ptr CreateCompositionPlanner(); + + private: + GenericPipelineCreator(); + static GenericPipelineCreator instance; }; } // namespace android::drm_hwcomposer