diff options
Diffstat (limited to 'mthemedaemon/main.cpp')
-rw-r--r-- | mthemedaemon/main.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/mthemedaemon/main.cpp b/mthemedaemon/main.cpp index afb35c92..d0499e4c 100644 --- a/mthemedaemon/main.cpp +++ b/mthemedaemon/main.cpp @@ -26,6 +26,11 @@ #include "keypresswaiter.h" #endif +namespace +{ + QtMsgType outputLevel = QtDebugMsg; +} + static int setup_unix_signal_handlers() { struct sigaction sighup, sigterm, sigint; @@ -55,6 +60,39 @@ static int setup_unix_signal_handlers() return 0; } +static QtMsgType getOutputLevelFromArgs(QStringList arguments) +{ + QString argLevel; + int index = arguments.indexOf("-output-level") + 1; + if (index > 0 && index < arguments.length()) { + argLevel = arguments[index]; + } + + if (argLevel == "debug") + return QtDebugMsg; + if (argLevel == "warning") + return QtWarningMsg; + if (argLevel == "critical") + return QtCriticalMsg; + +#ifdef __arm__ + return QtCriticalMsg; +#else + return QtWarningMsg; +#endif +} + +static void mMessageHandler(QtMsgType type, const char *msg) +{ + if (type < outputLevel) + return; + + fprintf(stderr, "%s\n", msg); + + if (type == QtFatalMsg) + abort(); +} + int main(int argc, char **argv) { setup_unix_signal_handlers(); @@ -75,6 +113,9 @@ int main(int argc, char **argv) QApplication app(argc, argv); + outputLevel = getOutputLevelFromArgs(app.arguments()); + qInstallMsgHandler(mMessageHandler); + // Apply custom server address, if the "-address" has been passed as argument QString serverAddress; int index = app.arguments().indexOf("-address"); |