summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-11-24 18:55:55 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-12-01 15:16:17 +0200
commit02b129dab5c7dc8817b397f01d15fdd553e2aea6 (patch)
treecfb723e809ad95de02148e2658916c625569aa2c
parented895fd0d53c8ee174e2c662f69b1e376621ca7f (diff)
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>
-rw-r--r--src/qcam/main.cpp5
-rw-r--r--src/qcam/main_window.cpp2
-rw-r--r--src/qcam/main_window.h1
-rw-r--r--src/qcam/meson.build1
-rw-r--r--src/qcam/message_handler.cpp27
-rw-r--r--src/qcam/message_handler.h26
6 files changed, 61 insertions, 1 deletions
diff --git a/src/qcam/main.cpp b/src/qcam/main.cpp
index 5505a5d8..5eff90a3 100644
--- a/src/qcam/main.cpp
+++ b/src/qcam/main.cpp
@@ -16,6 +16,7 @@
#include "../cam/options.h"
#include "../cam/stream_options.h"
#include "main_window.h"
+#include "message_handler.h"
void signalHandler([[maybe_unused]] int signal)
{
@@ -38,6 +39,8 @@ OptionsParser::Options parseOptions(int argc, char *argv[])
"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))
@@ -57,6 +60,8 @@ int main(int argc, char **argv)
if (options.isSet(OptHelp))
return 0;
+ MessageHandler msgHandler(options.isSet(OptVerbose));
+
struct sigaction sa = {};
sa.sa_handler = &signalHandler;
sigaction(SIGINT, &sa, nullptr);
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index 2502ecd4..39d034de 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -746,7 +746,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer)
fps = lastBufferTime_ && fps ? 1000000000.0 / fps : 0.0;
lastBufferTime_ = metadata.timestamp;
- qInfo().noquote()
+ qDebug().noquote()
<< QString("seq: %1").arg(metadata.sequence, 6, 10, QLatin1Char('0'))
<< "bytesused:" << metadata.planes[0].bytesused
<< "timestamp:" << metadata.timestamp
diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
index 64bcfebc..27131461 100644
--- a/src/qcam/main_window.h
+++ b/src/qcam/main_window.h
@@ -41,6 +41,7 @@ enum {
OptHelp = 'h',
OptRenderer = 'r',
OptStream = 's',
+ OptVerbose = 'v',
};
class MainWindow : public QMainWindow
diff --git a/src/qcam/meson.build b/src/qcam/meson.build
index 9bb48c0d..ebcd5ca0 100644
--- a/src/qcam/meson.build
+++ b/src/qcam/meson.build
@@ -6,6 +6,7 @@ qcam_sources = files([
'format_converter.cpp',
'main.cpp',
'main_window.cpp',
+ 'message_handler.cpp',
'viewfinder_qt.cpp',
])
diff --git a/src/qcam/message_handler.cpp b/src/qcam/message_handler.cpp
new file mode 100644
index 00000000..261623e1
--- /dev/null
+++ b/src/qcam/message_handler.cpp
@@ -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);
+}
diff --git a/src/qcam/message_handler.h b/src/qcam/message_handler.h
new file mode 100644
index 00000000..4534db9d
--- /dev/null
+++ b/src/qcam/message_handler.h
@@ -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__ */