mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-19 10:25:05 +03:00
qcam: Tie FrameBufferAllocator to stream life
The FrameBufferAllocator must be deleted and reconstructed before performing any reconfiguration of the stream. Construct the allocator at startCapture, and destroy it during stopCapture so that we can successfully stop and restart the stream. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
ea3a00bc33
commit
1bf5173076
1 changed files with 7 additions and 4 deletions
|
@ -36,10 +36,8 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
|
|||
adjustSize();
|
||||
|
||||
ret = openCamera(cm);
|
||||
if (!ret) {
|
||||
allocator_ = FrameBufferAllocator::create(camera_);
|
||||
if (!ret)
|
||||
ret = startCapture();
|
||||
}
|
||||
|
||||
if (ret < 0)
|
||||
QTimer::singleShot(0, QCoreApplication::instance(),
|
||||
|
@ -50,7 +48,6 @@ MainWindow::~MainWindow()
|
|||
{
|
||||
if (camera_) {
|
||||
stopCapture();
|
||||
delete allocator_;
|
||||
camera_->release();
|
||||
camera_.reset();
|
||||
}
|
||||
|
@ -171,6 +168,7 @@ int MainWindow::startCapture()
|
|||
|
||||
adjustSize();
|
||||
|
||||
allocator_ = FrameBufferAllocator::create(camera_);
|
||||
ret = allocator_->allocate(stream);
|
||||
if (ret < 0) {
|
||||
std::cerr << "Failed to allocate capture buffers" << std::endl;
|
||||
|
@ -236,6 +234,9 @@ error:
|
|||
}
|
||||
mappedBuffers_.clear();
|
||||
|
||||
delete allocator_;
|
||||
allocator_ = nullptr;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -255,6 +256,8 @@ void MainWindow::stopCapture()
|
|||
}
|
||||
mappedBuffers_.clear();
|
||||
|
||||
delete allocator_;
|
||||
|
||||
isCapturing_ = false;
|
||||
|
||||
config_.reset();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue