libcamera: IPAManager: remove instance() and make createIPA() static

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>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Paul Elder 2020-06-05 14:58:58 +09:00
parent 46d544345c
commit 6e730695de
6 changed files with 10 additions and 26 deletions

View file

@ -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_;

View file

@ -99,8 +99,7 @@ IPAManager *IPAManager::self_ = nullptr;
* \brief Construct an IPAManager instance
*
* The IPAManager class is meant to only be instantiated once, by the
* CameraManager. Pipeline handlers shall use the instance() function to access
* the IPAManager instance.
* CameraManager.
*/
IPAManager::IPAManager()
{
@ -159,19 +158,6 @@ IPAManager::~IPAManager()
self_ = nullptr;
}
/**
* \brief Retrieve the IPA manager instance
*
* The IPAManager is constructed by the CameraManager. This function shall be
* used to retrieve the single 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
@ -273,7 +259,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;
@ -289,7 +275,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;

View file

@ -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;

View file

@ -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;

View file

@ -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 });

View file

@ -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;