summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qcam/main_window.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index 70a3e61c..db14245d 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -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();