summaryrefslogtreecommitdiff
path: root/src/qcam
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-04-29 20:58:34 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-05-23 01:07:21 +0300
commit75de3bff9e165e512be5f53e19f31c7388dc08b1 (patch)
treebc91c3263a613fc492820af4d753147e971df65d /src/qcam
parent77ae64eb24bf6c2fe241b6f7b841315b1ee15707 (diff)
libcamera: camera: Return a pointer from generateConfiguration()
To prepare for specialising the CameraConfiguration class in pipeline handlers, return a pointer to a camera configuration instead of a reference from Camera::generateConfiguration(). The camera configuration always needs to be allocated from the pipeline handler, and its ownership is passed to the application. For symmetry, change Camera::configure() to take a CameraConfiguration pointer instead of a reference. This aligns with our coding practice of passing parameters that are modified by the callee by pointer. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/qcam')
-rw-r--r--src/qcam/main_window.cpp6
-rw-r--r--src/qcam/main_window.h3
2 files changed, 6 insertions, 3 deletions
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index 06ae2985..16b12313 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -98,13 +98,13 @@ int MainWindow::startCapture()
int ret;
config_ = camera_->generateConfiguration({ StreamRole::VideoRecording });
- ret = camera_->configure(config_);
+ ret = camera_->configure(config_.get());
if (ret < 0) {
std::cout << "Failed to configure camera" << std::endl;
return ret;
}
- const StreamConfiguration &cfg = config_[0];
+ const StreamConfiguration &cfg = config_->at(0);
Stream *stream = cfg.stream();
ret = viewfinder_->setFormat(cfg.pixelFormat, cfg.size.width,
cfg.size.height);
@@ -180,6 +180,8 @@ void MainWindow::stopCapture()
camera_->freeBuffers();
isCapturing_ = false;
+
+ config_.reset();
}
void MainWindow::requestComplete(Request *request,
diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
index 143b5b08..fe565cbc 100644
--- a/src/qcam/main_window.h
+++ b/src/qcam/main_window.h
@@ -8,6 +8,7 @@
#define __QCAM_MAIN_WINDOW_H__
#include <map>
+#include <memory>
#include <QMainWindow>
@@ -45,7 +46,7 @@ private:
std::shared_ptr<Camera> camera_;
bool isCapturing_;
- CameraConfiguration config_;
+ std::unique_ptr<CameraConfiguration> config_;
ViewFinder *viewfinder_;
};