mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-21 15:53:54 +03:00
qcam: Make log less verbose by default
The qcam log prints one message per frame, which is pretty verbose. This feature is useful for debugging, but not necessarily as a default option. Silence it by default, and add a -v/--verbose command line parameter to make the log verbose. While this could have been handled manually by checking a verbose flag when printing the message, the feature is instead integrated with the Qt log infrastructure to make it more flexible. Messages printed by qDebug() are now silenced by default and controlled by the -v/--verbose argument. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
ed895fd0d5
commit
02b129dab5
6 changed files with 61 additions and 1 deletions
|
@ -16,6 +16,7 @@
|
||||||
#include "../cam/options.h"
|
#include "../cam/options.h"
|
||||||
#include "../cam/stream_options.h"
|
#include "../cam/stream_options.h"
|
||||||
#include "main_window.h"
|
#include "main_window.h"
|
||||||
|
#include "message_handler.h"
|
||||||
|
|
||||||
void signalHandler([[maybe_unused]] int signal)
|
void signalHandler([[maybe_unused]] int signal)
|
||||||
{
|
{
|
||||||
|
@ -38,6 +39,8 @@ OptionsParser::Options parseOptions(int argc, char *argv[])
|
||||||
"renderer", ArgumentRequired, "renderer");
|
"renderer", ArgumentRequired, "renderer");
|
||||||
parser.addOption(OptStream, &streamKeyValue,
|
parser.addOption(OptStream, &streamKeyValue,
|
||||||
"Set configuration of a camera stream", "stream", true);
|
"Set configuration of a camera stream", "stream", true);
|
||||||
|
parser.addOption(OptVerbose, OptionNone,
|
||||||
|
"Print verbose log messages", "verbose");
|
||||||
|
|
||||||
OptionsParser::Options options = parser.parse(argc, argv);
|
OptionsParser::Options options = parser.parse(argc, argv);
|
||||||
if (options.isSet(OptHelp))
|
if (options.isSet(OptHelp))
|
||||||
|
@ -57,6 +60,8 @@ int main(int argc, char **argv)
|
||||||
if (options.isSet(OptHelp))
|
if (options.isSet(OptHelp))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
MessageHandler msgHandler(options.isSet(OptVerbose));
|
||||||
|
|
||||||
struct sigaction sa = {};
|
struct sigaction sa = {};
|
||||||
sa.sa_handler = &signalHandler;
|
sa.sa_handler = &signalHandler;
|
||||||
sigaction(SIGINT, &sa, nullptr);
|
sigaction(SIGINT, &sa, nullptr);
|
||||||
|
|
|
@ -746,7 +746,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer)
|
||||||
fps = lastBufferTime_ && fps ? 1000000000.0 / fps : 0.0;
|
fps = lastBufferTime_ && fps ? 1000000000.0 / fps : 0.0;
|
||||||
lastBufferTime_ = metadata.timestamp;
|
lastBufferTime_ = metadata.timestamp;
|
||||||
|
|
||||||
qInfo().noquote()
|
qDebug().noquote()
|
||||||
<< QString("seq: %1").arg(metadata.sequence, 6, 10, QLatin1Char('0'))
|
<< QString("seq: %1").arg(metadata.sequence, 6, 10, QLatin1Char('0'))
|
||||||
<< "bytesused:" << metadata.planes[0].bytesused
|
<< "bytesused:" << metadata.planes[0].bytesused
|
||||||
<< "timestamp:" << metadata.timestamp
|
<< "timestamp:" << metadata.timestamp
|
||||||
|
|
|
@ -41,6 +41,7 @@ enum {
|
||||||
OptHelp = 'h',
|
OptHelp = 'h',
|
||||||
OptRenderer = 'r',
|
OptRenderer = 'r',
|
||||||
OptStream = 's',
|
OptStream = 's',
|
||||||
|
OptVerbose = 'v',
|
||||||
};
|
};
|
||||||
|
|
||||||
class MainWindow : public QMainWindow
|
class MainWindow : public QMainWindow
|
||||||
|
|
|
@ -6,6 +6,7 @@ qcam_sources = files([
|
||||||
'format_converter.cpp',
|
'format_converter.cpp',
|
||||||
'main.cpp',
|
'main.cpp',
|
||||||
'main_window.cpp',
|
'main_window.cpp',
|
||||||
|
'message_handler.cpp',
|
||||||
'viewfinder_qt.cpp',
|
'viewfinder_qt.cpp',
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
27
src/qcam/message_handler.cpp
Normal file
27
src/qcam/message_handler.cpp
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020, Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
*
|
||||||
|
* message_handler.cpp - qcam - Log message handling
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "message_handler.h"
|
||||||
|
|
||||||
|
QtMessageHandler MessageHandler::handler_ = nullptr;
|
||||||
|
bool MessageHandler::verbose_ = false;
|
||||||
|
|
||||||
|
MessageHandler::MessageHandler(bool verbose)
|
||||||
|
{
|
||||||
|
verbose_ = verbose;
|
||||||
|
handler_ = qInstallMessageHandler(&MessageHandler::handleMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MessageHandler::handleMessage(QtMsgType type,
|
||||||
|
const QMessageLogContext &context,
|
||||||
|
const QString &msg)
|
||||||
|
{
|
||||||
|
if (type == QtDebugMsg && !verbose_)
|
||||||
|
return;
|
||||||
|
|
||||||
|
handler_(type, context, msg);
|
||||||
|
}
|
26
src/qcam/message_handler.h
Normal file
26
src/qcam/message_handler.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020, Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
*
|
||||||
|
* message_handler.cpp - qcam - Log message handling
|
||||||
|
*/
|
||||||
|
#ifndef __QCAM_MESSAGE_HANDLER_H__
|
||||||
|
#define __QCAM_MESSAGE_HANDLER_H__
|
||||||
|
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
|
class MessageHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MessageHandler(bool verbose);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void handleMessage(QtMsgType type,
|
||||||
|
const QMessageLogContext &context,
|
||||||
|
const QString &msg);
|
||||||
|
|
||||||
|
static QtMessageHandler handler_;
|
||||||
|
static bool verbose_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __QCAM_MESSAGE_HANDLER_H__ */
|
Loading…
Add table
Add a link
Reference in a new issue