summaryrefslogtreecommitdiff
path: root/src/libcamera/include/pipeline_handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcamera/include/pipeline_handler.h')
-rw-r--r--src/libcamera/include/pipeline_handler.h29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/libcamera/include/pipeline_handler.h b/src/libcamera/include/pipeline_handler.h
index fdf8b8db..764dde9c 100644
--- a/src/libcamera/include/pipeline_handler.h
+++ b/src/libcamera/include/pipeline_handler.h
@@ -31,29 +31,28 @@ public:
class PipelineHandlerFactory
{
public:
+ PipelineHandlerFactory(const char *name);
virtual ~PipelineHandlerFactory() { };
virtual PipelineHandler *create() = 0;
- static void registerType(const std::string &name, PipelineHandlerFactory *factory);
- static PipelineHandler *create(const std::string &name, DeviceEnumerator *enumerator);
- static std::vector<std::string> handlers();
+ const std::string &name() const { return name_; }
+
+ static void registerType(PipelineHandlerFactory *factory);
+ static std::vector<PipelineHandlerFactory *> &handlers();
private:
- static std::map<std::string, PipelineHandlerFactory *> &registry();
+ std::string name_;
};
-#define REGISTER_PIPELINE_HANDLER(handler) \
-class handler##Factory : public PipelineHandlerFactory { \
-public: \
- handler##Factory() \
- { \
- PipelineHandlerFactory::registerType(#handler, this); \
- } \
- virtual PipelineHandler *create() { \
- return new handler(); \
- } \
-}; \
+#define REGISTER_PIPELINE_HANDLER(handler) \
+class handler##Factory : public PipelineHandlerFactory { \
+public: \
+ handler##Factory() : PipelineHandlerFactory(#handler) { } \
+ PipelineHandler *create() final { \
+ return new handler(); \
+ } \
+}; \
static handler##Factory global_##handler##Factory;
} /* namespace libcamera */