From f2911f64ba241b3ec583cdf7da94f72b46eb8ea2 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Wed, 15 Nov 2017 22:57:35 +0200 Subject: dekstop-main.cpp: install a message handler This way the Windows binaries can properly write to log files. Signed-off-by: Lubomir I. Ivanov --- subsurface-desktop-main.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'subsurface-desktop-main.cpp') diff --git a/subsurface-desktop-main.cpp b/subsurface-desktop-main.cpp index 18c0f9bec..58da1fa43 100644 --- a/subsurface-desktop-main.cpp +++ b/subsurface-desktop-main.cpp @@ -29,12 +29,14 @@ static bool filesOnCommandLine = false; static void validateGL(); +static void messageHandler(QtMsgType type, const QMessageLogContext &ctx, const QString &msg); int main(int argc, char **argv) { int i; bool no_filenames = true; QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); + qInstallMessageHandler(messageHandler); QApplication *application = new QApplication(argc, argv); (void)application; QStringList files; @@ -215,3 +217,27 @@ exit: #endif } } + +// install this message handler primarily so that the Windows build can log to files +void messageHandler(QtMsgType type, const QMessageLogContext &ctx, const QString &msg) +{ + Q_UNUSED(ctx); + QByteArray localMsg = msg.toLocal8Bit(); + switch (type) { + case QtDebugMsg: + fprintf(stdout, "%s\n", localMsg.constData()); + break; + case QtInfoMsg: + fprintf(stdout, "%s\n", localMsg.constData()); + break; + case QtWarningMsg: + fprintf(stderr, "%s\n", localMsg.constData()); + break; + case QtCriticalMsg: + fprintf(stderr, "%s\n", localMsg.constData()); + break; + case QtFatalMsg: + fprintf(stderr, "%s\n", localMsg.constData()); + abort(); + } +} -- cgit v1.2.3-70-g09d2