[libcamera-devel] [PATCH] qcam: Don't ask for a camera when only one exists
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Oct 25 12:40:35 CEST 2019
Hi Kieran,
Thank you for the patch.
On Fri, Oct 25, 2019 at 11:35:43AM +0100, Kieran Bingham wrote:
> If there is only one camera exposed by libcamera, there is little value
> in asking the user to choose it.
>
> Automatically select it, and remove the need to ask the user to select
> 'ok' from a Dialog box.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/qcam/main_window.cpp | 33 +++++++++++++++++++++++----------
> src/qcam/main_window.h | 1 +
> 2 files changed, 24 insertions(+), 10 deletions(-)
>
> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
> index ef4ad4a22dca..19a8801eafac 100644
> --- a/src/qcam/main_window.cpp
> +++ b/src/qcam/main_window.cpp
> @@ -66,27 +66,40 @@ void MainWindow::updateTitle()
> setWindowTitle(title_ + " : " + QString::number(fps, 'f', 2) + " fps");
> }
>
> -int MainWindow::openCamera(CameraManager *cm)
> +std::string MainWindow::chooseCamera(CameraManager *cm)
> {
> - std::string cameraName;
> + QString name;
> + bool result;
>
> - if (!options_.isSet(OptCamera)) {
> + if (cm->cameras().size() == 1)
> + return cm->cameras()[0]->name();
> +
> + for (const std::shared_ptr<Camera> &cam : cm->cameras()) {
> QStringList cameras;
> - bool result;
>
> - for (const std::shared_ptr<Camera> &cam : cm->cameras())
> - cameras.append(QString::fromStdString(cam->name()));
> + cameras.append(QString::fromStdString(cam->name()));
>
> QString name = QInputDialog::getItem(this, "Select Camera",
> "Camera:", cameras, 0,
> false, &result);
Shouldn't this be outside of the for loop ?
> if (!result)
> - return -EINVAL;
> + return "";
You can return std::string() to avoid the conversion from const char *.
Apart from that,
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> + }
>
> - cameraName = name.toStdString();
> - } else {
> + return name.toStdString();
> +}
> +
> +int MainWindow::openCamera(CameraManager *cm)
> +{
> + std::string cameraName;
> +
> + if (options_.isSet(OptCamera))
> cameraName = static_cast<std::string>(options_[OptCamera]);
> - }
> + else
> + cameraName = chooseCamera(cm);
> +
> + if (cameraName == "")
> + return -EINVAL;
>
> camera_ = cm->get(cameraName);
> if (!camera_) {
> diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
> index 6873155aaa03..30dd8743104d 100644
> --- a/src/qcam/main_window.h
> +++ b/src/qcam/main_window.h
> @@ -43,6 +43,7 @@ private Q_SLOTS:
> void updateTitle();
>
> private:
> + std::string chooseCamera(CameraManager *cm);
> int openCamera(CameraManager *cm);
>
> int startCapture();
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list