libcamera/src/apps/qcam/main.cpp
Laurent Pinchart 37d81a390b apps: Define local functions in anonymous namespace
Multiple local functions are defined in the global namespace without the
static keyword. This compiles fine for now, but will cause a missing
declaration warning when we enable them. To prepare for that, move the
function declaration to an anonymous namespace.

While at it, for consistency, include an existing static function in the
namespace and drop the static keyword.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2024-06-26 12:07:11 +03:00

94 lines
2 KiB
C++

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright (C) 2019, Google Inc.
*
* qcam - The libcamera GUI test application
*/
#include <signal.h>
#include <string.h>
#include <QApplication>
#include <QtDebug>
#include <libcamera/camera_manager.h>
#include "../common/options.h"
#include "../common/stream_options.h"
#include "main_window.h"
#include "message_handler.h"
using namespace libcamera;
namespace {
void signalHandler([[maybe_unused]] int signal)
{
qInfo() << "Exiting";
qApp->quit();
}
OptionsParser::Options parseOptions(int argc, char *argv[])
{
StreamKeyValueParser streamKeyValue;
OptionsParser parser;
parser.addOption(OptCamera, OptionString,
"Specify which camera to operate on", "camera",
ArgumentRequired, "camera");
parser.addOption(OptHelp, OptionNone, "Display this help message",
"help");
parser.addOption(OptRenderer, OptionString,
"Choose the renderer type {qt,gles} (default: qt)",
"renderer", ArgumentRequired, "renderer");
parser.addOption(OptStream, &streamKeyValue,
"Set configuration of a camera stream", "stream", true);
parser.addOption(OptVerbose, OptionNone,
"Print verbose log messages", "verbose");
OptionsParser::Options options = parser.parse(argc, argv);
if (options.isSet(OptHelp))
parser.usage();
return options;
}
} /* namespace */
int main(int argc, char **argv)
{
QApplication app(argc, argv);
int ret;
OptionsParser::Options options = parseOptions(argc, argv);
if (!options.valid())
return EXIT_FAILURE;
if (options.isSet(OptHelp))
return 0;
MessageHandler msgHandler(options.isSet(OptVerbose));
struct sigaction sa = {};
sa.sa_handler = &signalHandler;
sigaction(SIGINT, &sa, nullptr);
CameraManager *cm = new libcamera::CameraManager();
ret = cm->start();
if (ret) {
qInfo() << "Failed to start camera manager:"
<< strerror(-ret);
return EXIT_FAILURE;
}
MainWindow *mainWindow = new MainWindow(cm, options);
mainWindow->show();
ret = app.exec();
delete mainWindow;
cm->stop();
delete cm;
return ret;
}