Supply event processing from log events also if an abstract progress is used

This commit is contained in:
Matthias Koefferlein 2021-03-15 16:04:58 +01:00
parent 738e830c8d
commit b8677f650b
2 changed files with 34 additions and 15 deletions

View File

@ -22,12 +22,15 @@
#include "layLogViewerDialog.h" #include "layLogViewerDialog.h"
#include "layApplication.h"
#include <QMutex> #include <QMutex>
#include <QMutexLocker> #include <QMutexLocker>
#include <QTimer> #include <QTimer>
#include <QClipboard> #include <QClipboard>
#include <QFrame> #include <QFrame>
#include <QThread>
#include <QAbstractEventDispatcher>
#include <stdio.h> #include <stdio.h>
@ -221,25 +224,39 @@ LogFile::max_entries () const
void void
LogFile::add (LogFileEntry::mode_type mode, const std::string &msg, bool continued) LogFile::add (LogFileEntry::mode_type mode, const std::string &msg, bool continued)
{ {
QMutexLocker locker (&m_lock); bool can_yield = false;
if (m_max_entries == 0) { {
return; QMutexLocker locker (&m_lock);
if (m_max_entries == 0) {
return;
}
if (m_messages.size () >= m_max_entries) {
m_messages.pop_front ();
}
if (mode == LogFileEntry::Warning || mode == LogFileEntry::WarningContinued) {
m_has_warnings = true;
} else if (mode == LogFileEntry::Error || mode == LogFileEntry::ErrorContinued) {
m_has_errors = true;
}
m_messages.push_back (LogFileEntry (mode, msg, continued));
++m_generation_id;
if (QThread::currentThread ()->eventDispatcher () && (tl::Clock::current () - m_last_yield).seconds () > 0.1) {
m_last_yield = tl::Clock::current ();
can_yield = true;
}
} }
if (m_messages.size () >= m_max_entries) { // use this opportunity to process events
m_messages.pop_front (); if (can_yield) {
QThread::currentThread ()->eventDispatcher ()->processEvents (QEventLoop::AllEvents);
} }
if (mode == LogFileEntry::Warning || mode == LogFileEntry::WarningContinued) {
m_has_warnings = true;
} else if (mode == LogFileEntry::Error || mode == LogFileEntry::ErrorContinued) {
m_has_errors = true;
}
m_messages.push_back (LogFileEntry (mode, msg, continued));
++m_generation_id;
} }
int int

View File

@ -26,6 +26,7 @@
#include "ui_LogViewerDialog.h" #include "ui_LogViewerDialog.h"
#include "tlLog.h" #include "tlLog.h"
#include "tlTimer.h"
#include "layCommon.h" #include "layCommon.h"
#include <QTimer> #include <QTimer>
@ -227,6 +228,7 @@ private:
size_t m_last_generation_id; size_t m_last_generation_id;
bool m_has_errors, m_has_warnings; bool m_has_errors, m_has_warnings;
bool m_last_attn; bool m_last_attn;
tl::Clock m_last_yield;
/** /**
* @brief Adds an error * @brief Adds an error