Message ID | 20200605090106.15424-3-paul.elder@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Paul, Thank you for the patch. On Fri, Jun 05, 2020 at 06:01:01PM +0900, Paul Elder wrote: > As the only usage of IPAManager::instance() is by the pipeline handlers > to call IPAManager::createIPA(), remove the former and make the latter > static. Update the pipeline handlers and tests accordingly. > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > --- > New in v2 > --- > include/libcamera/internal/ipa_manager.h | 8 +++----- > src/libcamera/ipa_manager.cpp | 18 ++---------------- > .../pipeline/raspberrypi/raspberrypi.cpp | 2 +- > src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +- > src/libcamera/pipeline/vimc/vimc.cpp | 2 +- > test/ipa/ipa_interface_test.cpp | 2 +- > 6 files changed, 9 insertions(+), 25 deletions(-) > > diff --git a/include/libcamera/internal/ipa_manager.h b/include/libcamera/internal/ipa_manager.h > index 43f700d3..05643e5e 100644 > --- a/include/libcamera/internal/ipa_manager.h > +++ b/include/libcamera/internal/ipa_manager.h > @@ -25,11 +25,9 @@ public: > IPAManager(); > ~IPAManager(); > > - static IPAManager *instance(); > - > - std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe, > - uint32_t maxVersion, > - uint32_t minVersion); > + static std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe, > + uint32_t maxVersion, > + uint32_t minVersion); > > private: > static IPAManager *self_; > diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp > index abb681a3..9d0c2069 100644 > --- a/src/libcamera/ipa_manager.cpp > +++ b/src/libcamera/ipa_manager.cpp > @@ -159,20 +159,6 @@ IPAManager::~IPAManager() > self_ = nullptr; > } > > -/** > - * \brief Retrieve the IPA manager instance > - * > - * The IPAManager is a singleton and can't be constructed manually. This > - * function shall instead be used to retrieve the single global instance of the > - * manager. > - * > - * \return The IPA manager instance > - */ > -IPAManager *IPAManager::instance() > -{ > - return self_; > -} > - > /** > * \brief Identify shared library objects within a directory > * \param[in] libDir The directory to search for shared objects > @@ -274,7 +260,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe, > { > IPAModule *m = nullptr; > > - for (IPAModule *module : modules_) { > + for (IPAModule *module : self_->modules_) { > if (module->match(pipe, minVersion, maxVersion)) { > m = module; > break; > @@ -290,7 +276,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe, > * > * \todo Implement a better proxy selection > */ > - const char *proxyName = isSignatureValid(m) > + const char *proxyName = self_->isSignatureValid(m) > ? "IPAProxyThread" : "IPAProxyLinux"; > IPAProxyFactory *pf = nullptr; > > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp > index e16a9c7f..b9b88506 100644 > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp > @@ -1118,7 +1118,7 @@ void RPiCameraData::frameStarted(uint32_t sequence) > > int RPiCameraData::loadIPA() > { > - ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1); > + ipa_ = IPAManager::createIPA(pipe_, 1, 1); > if (!ipa_) > return -ENOENT; > > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp > index d807fc2c..900f873a 100644 > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp > @@ -395,7 +395,7 @@ private: > > int RkISP1CameraData::loadIPA() > { > - ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1); > + ipa_ = IPAManager::createIPA(pipe_, 1, 1); > if (!ipa_) > return -ENOENT; > > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp > index ba9fca50..3881545b 100644 > --- a/src/libcamera/pipeline/vimc/vimc.cpp > +++ b/src/libcamera/pipeline/vimc/vimc.cpp > @@ -410,7 +410,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator) > > std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media); > > - data->ipa_ = IPAManager::instance()->createIPA(this, 0, 0); > + data->ipa_ = IPAManager::createIPA(this, 0, 0); > if (data->ipa_ != nullptr) { > std::string conf = data->ipa_->configurationFile("vimc.conf"); > data->ipa_->init(IPASettings{ conf }); > diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp > index 153493ba..1bc93a63 100644 > --- a/test/ipa/ipa_interface_test.cpp > +++ b/test/ipa/ipa_interface_test.cpp > @@ -95,7 +95,7 @@ protected: > EventDispatcher *dispatcher = thread()->eventDispatcher(); > Timer timer; > > - ipa_ = IPAManager::instance()->createIPA(pipe_.get(), 0, 0); > + ipa_ = IPAManager::createIPA(pipe_.get(), 0, 0); > if (!ipa_) { > cerr << "Failed to create VIMC IPA interface" << endl; > return TestFail;
Hi Paul, Thanks for your work. On 2020-06-05 18:01:01 +0900, Paul Elder wrote: > As the only usage of IPAManager::instance() is by the pipeline handlers > to call IPAManager::createIPA(), remove the former and make the latter > static. Update the pipeline handlers and tests accordingly. > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > > --- > New in v2 > --- > include/libcamera/internal/ipa_manager.h | 8 +++----- > src/libcamera/ipa_manager.cpp | 18 ++---------------- > .../pipeline/raspberrypi/raspberrypi.cpp | 2 +- > src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +- > src/libcamera/pipeline/vimc/vimc.cpp | 2 +- > test/ipa/ipa_interface_test.cpp | 2 +- > 6 files changed, 9 insertions(+), 25 deletions(-) > > diff --git a/include/libcamera/internal/ipa_manager.h b/include/libcamera/internal/ipa_manager.h > index 43f700d3..05643e5e 100644 > --- a/include/libcamera/internal/ipa_manager.h > +++ b/include/libcamera/internal/ipa_manager.h > @@ -25,11 +25,9 @@ public: > IPAManager(); > ~IPAManager(); > > - static IPAManager *instance(); > - > - std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe, > - uint32_t maxVersion, > - uint32_t minVersion); > + static std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe, > + uint32_t maxVersion, > + uint32_t minVersion); > > private: > static IPAManager *self_; > diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp > index abb681a3..9d0c2069 100644 > --- a/src/libcamera/ipa_manager.cpp > +++ b/src/libcamera/ipa_manager.cpp > @@ -159,20 +159,6 @@ IPAManager::~IPAManager() > self_ = nullptr; > } > > -/** > - * \brief Retrieve the IPA manager instance > - * > - * The IPAManager is a singleton and can't be constructed manually. This > - * function shall instead be used to retrieve the single global instance of the > - * manager. > - * > - * \return The IPA manager instance > - */ > -IPAManager *IPAManager::instance() > -{ > - return self_; > -} > - > /** > * \brief Identify shared library objects within a directory > * \param[in] libDir The directory to search for shared objects > @@ -274,7 +260,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe, > { > IPAModule *m = nullptr; > > - for (IPAModule *module : modules_) { > + for (IPAModule *module : self_->modules_) { > if (module->match(pipe, minVersion, maxVersion)) { > m = module; > break; > @@ -290,7 +276,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe, > * > * \todo Implement a better proxy selection > */ > - const char *proxyName = isSignatureValid(m) > + const char *proxyName = self_->isSignatureValid(m) > ? "IPAProxyThread" : "IPAProxyLinux"; > IPAProxyFactory *pf = nullptr; > > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp > index e16a9c7f..b9b88506 100644 > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp > @@ -1118,7 +1118,7 @@ void RPiCameraData::frameStarted(uint32_t sequence) > > int RPiCameraData::loadIPA() > { > - ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1); > + ipa_ = IPAManager::createIPA(pipe_, 1, 1); > if (!ipa_) > return -ENOENT; > > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp > index d807fc2c..900f873a 100644 > --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp > +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp > @@ -395,7 +395,7 @@ private: > > int RkISP1CameraData::loadIPA() > { > - ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1); > + ipa_ = IPAManager::createIPA(pipe_, 1, 1); > if (!ipa_) > return -ENOENT; > > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp > index ba9fca50..3881545b 100644 > --- a/src/libcamera/pipeline/vimc/vimc.cpp > +++ b/src/libcamera/pipeline/vimc/vimc.cpp > @@ -410,7 +410,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator) > > std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media); > > - data->ipa_ = IPAManager::instance()->createIPA(this, 0, 0); > + data->ipa_ = IPAManager::createIPA(this, 0, 0); > if (data->ipa_ != nullptr) { > std::string conf = data->ipa_->configurationFile("vimc.conf"); > data->ipa_->init(IPASettings{ conf }); > diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp > index 153493ba..1bc93a63 100644 > --- a/test/ipa/ipa_interface_test.cpp > +++ b/test/ipa/ipa_interface_test.cpp > @@ -95,7 +95,7 @@ protected: > EventDispatcher *dispatcher = thread()->eventDispatcher(); > Timer timer; > > - ipa_ = IPAManager::instance()->createIPA(pipe_.get(), 0, 0); > + ipa_ = IPAManager::createIPA(pipe_.get(), 0, 0); > if (!ipa_) { > cerr << "Failed to create VIMC IPA interface" << endl; > return TestFail; > -- > 2.20.1 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/include/libcamera/internal/ipa_manager.h b/include/libcamera/internal/ipa_manager.h index 43f700d3..05643e5e 100644 --- a/include/libcamera/internal/ipa_manager.h +++ b/include/libcamera/internal/ipa_manager.h @@ -25,11 +25,9 @@ public: IPAManager(); ~IPAManager(); - static IPAManager *instance(); - - std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe, - uint32_t maxVersion, - uint32_t minVersion); + static std::unique_ptr<IPAProxy> createIPA(PipelineHandler *pipe, + uint32_t maxVersion, + uint32_t minVersion); private: static IPAManager *self_; diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp index abb681a3..9d0c2069 100644 --- a/src/libcamera/ipa_manager.cpp +++ b/src/libcamera/ipa_manager.cpp @@ -159,20 +159,6 @@ IPAManager::~IPAManager() self_ = nullptr; } -/** - * \brief Retrieve the IPA manager instance - * - * The IPAManager is a singleton and can't be constructed manually. This - * function shall instead be used to retrieve the single global instance of the - * manager. - * - * \return The IPA manager instance - */ -IPAManager *IPAManager::instance() -{ - return self_; -} - /** * \brief Identify shared library objects within a directory * \param[in] libDir The directory to search for shared objects @@ -274,7 +260,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe, { IPAModule *m = nullptr; - for (IPAModule *module : modules_) { + for (IPAModule *module : self_->modules_) { if (module->match(pipe, minVersion, maxVersion)) { m = module; break; @@ -290,7 +276,7 @@ std::unique_ptr<IPAProxy> IPAManager::createIPA(PipelineHandler *pipe, * * \todo Implement a better proxy selection */ - const char *proxyName = isSignatureValid(m) + const char *proxyName = self_->isSignatureValid(m) ? "IPAProxyThread" : "IPAProxyLinux"; IPAProxyFactory *pf = nullptr; diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index e16a9c7f..b9b88506 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -1118,7 +1118,7 @@ void RPiCameraData::frameStarted(uint32_t sequence) int RPiCameraData::loadIPA() { - ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1); + ipa_ = IPAManager::createIPA(pipe_, 1, 1); if (!ipa_) return -ENOENT; diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index d807fc2c..900f873a 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -395,7 +395,7 @@ private: int RkISP1CameraData::loadIPA() { - ipa_ = IPAManager::instance()->createIPA(pipe_, 1, 1); + ipa_ = IPAManager::createIPA(pipe_, 1, 1); if (!ipa_) return -ENOENT; diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index ba9fca50..3881545b 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -410,7 +410,7 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator) std::unique_ptr<VimcCameraData> data = std::make_unique<VimcCameraData>(this, media); - data->ipa_ = IPAManager::instance()->createIPA(this, 0, 0); + data->ipa_ = IPAManager::createIPA(this, 0, 0); if (data->ipa_ != nullptr) { std::string conf = data->ipa_->configurationFile("vimc.conf"); data->ipa_->init(IPASettings{ conf }); diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp index 153493ba..1bc93a63 100644 --- a/test/ipa/ipa_interface_test.cpp +++ b/test/ipa/ipa_interface_test.cpp @@ -95,7 +95,7 @@ protected: EventDispatcher *dispatcher = thread()->eventDispatcher(); Timer timer; - ipa_ = IPAManager::instance()->createIPA(pipe_.get(), 0, 0); + ipa_ = IPAManager::createIPA(pipe_.get(), 0, 0); if (!ipa_) { cerr << "Failed to create VIMC IPA interface" << endl; return TestFail;
As the only usage of IPAManager::instance() is by the pipeline handlers to call IPAManager::createIPA(), remove the former and make the latter static. Update the pipeline handlers and tests accordingly. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> --- New in v2 --- include/libcamera/internal/ipa_manager.h | 8 +++----- src/libcamera/ipa_manager.cpp | 18 ++---------------- .../pipeline/raspberrypi/raspberrypi.cpp | 2 +- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 2 +- src/libcamera/pipeline/vimc/vimc.cpp | 2 +- test/ipa/ipa_interface_test.cpp | 2 +- 6 files changed, 9 insertions(+), 25 deletions(-)