]> sigrok.org Git - pulseview.git/blobdiff - pv/logging.cpp
Session: Fix issue #67 by improving error handling
[pulseview.git] / pv / logging.cpp
index 377011b68c928a40cf1cf14c590a220ea9ac6ece..7dab545de93cd3989af8d72a69867e470a5b0753 100644 (file)
@@ -52,11 +52,13 @@ static void *prev_srd_log_cb_data;
 Logging::~Logging()
 {
        qInstallMessageHandler(nullptr);
-       sr_log_callback_set(prev_sr_log_cb, prev_sr_log_cb_data);
+       if (prev_sr_log_cb)
+               sr_log_callback_set(prev_sr_log_cb, prev_sr_log_cb_data);
        prev_sr_log_cb = nullptr;
        prev_sr_log_cb_data = nullptr;
 #ifdef ENABLE_DECODE
-       srd_log_callback_set(prev_srd_log_cb, prev_srd_log_cb_data);
+       if (prev_srd_log_cb)
+               srd_log_callback_set(prev_srd_log_cb, prev_srd_log_cb_data);
        prev_srd_log_cb = nullptr;
        prev_srd_log_cb_data = nullptr;
 #endif
@@ -124,10 +126,10 @@ void Logging::log(const QString &text, int source)
 
        switch (source) {
        case LogSource_pv:
-               s = QString("pv: ") + text;  // black is default color
+               s = QString("<font color=\"darkMagenta\">pv: %1</font>").arg(text);
                break;
        case LogSource_sr:
-               s = QString("<font color=\"blue\">sr: %1</font>").arg(text);
+               s = QString("<font color=\"darkGreen\">sr: %1</font>").arg(text);
                break;
        case LogSource_srd:
                s = QString("<font color=\"olive\">srd: %1</font>").arg(text);
@@ -187,7 +189,15 @@ int Logging::log_srd(void *cb_data, int loglevel, const char *format, va_list ar
        va_end(args2);
 
        char *text = g_strdup_vprintf(format, args);
-       logging.log(QString::fromUtf8(text), LogSource_srd);
+
+       QString s = QString::fromUtf8(text);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
+       for (QString& substring : s.split("\n", Qt::SkipEmptyParts))
+                       logging.log(substring, LogSource_srd);
+#else
+       for (QString& substring : s.split("\n", QString::SkipEmptyParts))
+                       logging.log(substring, LogSource_srd);
+#endif
        g_free(text);
 
        return SR_OK;