From 5738d400309713762aa8361a445ace59cb3a9653 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 27 Mar 2019 15:18:18 +0100 Subject: Clang Backend: enable Windows debug logging On Windows the debug messages are not sent to the Windows logger, because a custom Qt message handler was set up. This commit forwards the messages also to the default message handler. Change-Id: I1745a86f72fcc1e48cd52603633fca2f23c8fedf Reviewed-by: Ivan Donchevskii Reviewed-by: Marco Bubke --- src/tools/clangbackend/clangbackendmain.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src/tools/clangbackend/clangbackendmain.cpp') diff --git a/src/tools/clangbackend/clangbackendmain.cpp b/src/tools/clangbackend/clangbackendmain.cpp index 5cbac3ce60..1e95db3ef3 100644 --- a/src/tools/clangbackend/clangbackendmain.cpp +++ b/src/tools/clangbackend/clangbackendmain.cpp @@ -57,8 +57,25 @@ QString processArguments(QCoreApplication &application) } #ifdef Q_OS_WIN -static void messageOutput(QtMsgType type, const QMessageLogContext &, const QString &msg) +struct MessageHandler { + MessageHandler(QtMessageHandler handler) + { + defaultHandler = qInstallMessageHandler(handler); + } + + ~MessageHandler() + { + qInstallMessageHandler(defaultHandler); + } + + static QtMessageHandler defaultHandler; +}; + +QtMessageHandler MessageHandler::defaultHandler = nullptr; + +static void messageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { + MessageHandler::defaultHandler(type, context, msg); std::wcout << msg.toStdWString() << std::endl; if (type == QtFatalMsg) abort(); @@ -68,7 +85,7 @@ static void messageOutput(QtMsgType type, const QMessageLogContext &, const QStr int main(int argc, char *argv[]) { #ifdef Q_OS_WIN - qInstallMessageHandler(messageOutput); + MessageHandler messageHandler(&messageOutput); #endif QCoreApplication::setOrganizationName(QStringLiteral("QtProject")); QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org")); -- cgit v1.2.1