libcamera: Always check return value of MediaDevice::acquire()

In preparation for adding more responsibility to MediaDevice::acquire()
remove unneeded calls to acquire() and release(), and make sure all
needed calls to acquire() are checked and acted on.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund
2019-04-14 00:28:53 +02:00
parent b9a47058eb
commit 12053cf8e6
6 changed files with 13 additions and 20 deletions

View File

@@ -614,21 +614,19 @@ bool PipelineHandlerIPU3::match(DeviceEnumerator *enumerator)
imgu_dm.add("ipu3-imgu 1 viewfinder");
imgu_dm.add("ipu3-imgu 1 3a stat");
/*
* It is safe to acquire both media devices at this point as
* DeviceEnumerator::search() skips the busy ones for us.
*/
cio2MediaDev_ = enumerator->search(cio2_dm);
if (!cio2MediaDev_)
return false;
cio2MediaDev_->acquire();
if (!cio2MediaDev_->acquire())
return false;
imguMediaDev_ = enumerator->search(imgu_dm);
if (!imguMediaDev_)
return false;
imguMediaDev_->acquire();
if (!imguMediaDev_->acquire())
return false;
/*
* Disable all links that are enabled by default on CIO2, as camera

View File

@@ -183,7 +183,8 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
if (!media_)
return false;
media_->acquire();
if (!media_->acquire())
return false;
std::unique_ptr<UVCCameraData> data = utils::make_unique<UVCCameraData>(this);

View File

@@ -193,7 +193,8 @@ bool PipelineHandlerVimc::match(DeviceEnumerator *enumerator)
if (!media_)
return false;
media_->acquire();
if (!media_->acquire())
return false;
std::unique_ptr<VimcCameraData> data = utils::make_unique<VimcCameraData>(this);