[PATCH] android: camera_device: Fix camera blocked issue when stopping capture
Fang Hui
hui.fang at nxp.com
Mon Mar 4 10:49:17 CET 2024
From: Anle Pan <anle.pan at nxp.com>
The issue occurs when stopping capture soon after starting capture.
In this case, no frame get from the device, the
related capture request has been pushed to the
queue descriptors_, but the queuedRequests_ was
still empty due to no requests will be queue to
the device since the stream will be stopped soon,
so there will be no camera->requestComplete called
later, then the descriptors_ can not pop normally,
this will cause the pending if we want to start capture next time.
To fix the issue, ensure the descriptors_ is
empty after the camera device is stopped.
Signed-off-by: Anle Pan <anle.pan at nxp.com>
---
src/android/camera_device.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 25cedd44..d452992d 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -433,8 +433,11 @@ void CameraDevice::flush()
void CameraDevice::stop()
{
MutexLocker stateLock(stateMutex_);
- if (state_ == State::Stopped)
+ if (state_ == State::Stopped) {
+ MutexLocker descriptorsLock(descriptorsMutex_);
+ descriptors_ = {};
return;
+ }
camera_->stop();
--
2.25.1
More information about the libcamera-devel
mailing list