android: camera_device: Fix crash in calling CameraDevice::close()
The problem is happening because we seem to add a CameraStream associated buffer (depending on the CameraStream::Type) to the Request, in CameraDevice::processCaptureRequest(). However, when the camera stops, all the current buffers are marked with FrameMetadata::FrameCancelled and proceed to completion. But the buffer associated with the CameraStream (that was previously added to the request) has now been cleared out with a part of streams_.clear(), even before the camera stop() has been invoked. Any access to those request buffers after they have been cleared, will result in a crash. Signed-off-by: Hirokazu Honda <hiroh@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
fa7a95bf32
commit
d1007485e4
1 changed files with 1 additions and 2 deletions
|
@ -424,8 +424,6 @@ int CameraDevice::open(const hw_module_t *hardwareModule)
|
|||
|
||||
void CameraDevice::close()
|
||||
{
|
||||
streams_.clear();
|
||||
|
||||
stop();
|
||||
|
||||
camera_->release();
|
||||
|
@ -458,6 +456,7 @@ void CameraDevice::stop()
|
|||
camera_->stop();
|
||||
|
||||
descriptors_ = {};
|
||||
streams_.clear();
|
||||
|
||||
state_ = State::Stopped;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue