Krita Source Code Documentation
Loading...
Searching...
No Matches
MessageForwarderThread Class Reference
+ Inheritance diagram for MessageForwarderThread:

Signals

void sigDeliverMessage (QtMsgType type, const QString &message)
 

Public Member Functions

void pushExitFlag ()
 
void pushMessage (QtMsgType type, const QString &message)
 
void run () override
 

Private Attributes

bool m_exitFlag {false}
 
QQueue< std::pair< QtMsgType, QString > > m_messages
 
QMutex m_mutex
 
QWaitCondition m_waitCondition
 

Detailed Description

A background thread that receives all the debug messages from the main thread and resends them forward using qt-signals. We cannot resend the message in the same thread, because the a qDebug() message can come form the qt-signaling code, which can cause deadlocks.

Definition at line 55 of file LogDockerDock.cpp.

Member Function Documentation

◆ pushExitFlag()

void MessageForwarderThread::pushExitFlag ( )
inline

Definition at line 79 of file LogDockerDock.cpp.

79 {
80 QMutexLocker locker(&m_mutex);
81 m_exitFlag = true;
82 locker.unlock();
83 m_waitCondition.wakeAll();
84 }
QWaitCondition m_waitCondition

References m_exitFlag, m_mutex, and m_waitCondition.

◆ pushMessage()

void MessageForwarderThread::pushMessage ( QtMsgType type,
const QString & message )
inline

Definition at line 72 of file LogDockerDock.cpp.

72 {
73 QMutexLocker locker(&m_mutex);
74 m_messages.enqueue(std::make_pair(type, message));
75 locker.unlock();
76 m_waitCondition.wakeAll();
77 }
QQueue< std::pair< QtMsgType, QString > > m_messages

References m_messages, m_mutex, and m_waitCondition.

◆ run()

void MessageForwarderThread::run ( )
inlineoverride

Definition at line 59 of file LogDockerDock.cpp.

59 {
60 while (1) {
61 QMutexLocker locker(&m_mutex);
63 if (m_exitFlag) break;
64
65 while (!m_messages.empty()) {
66 auto message = m_messages.dequeue();
67 Q_EMIT sigDeliverMessage(message.first, message.second);
68 }
69 }
70 }
void sigDeliverMessage(QtMsgType type, const QString &message)

References m_exitFlag, m_messages, m_mutex, m_waitCondition, and sigDeliverMessage().

◆ sigDeliverMessage

void MessageForwarderThread::sigDeliverMessage ( QtMsgType type,
const QString & message )
signal

Member Data Documentation

◆ m_exitFlag

bool MessageForwarderThread::m_exitFlag {false}
private

Definition at line 94 of file LogDockerDock.cpp.

94{false};

◆ m_messages

QQueue<std::pair<QtMsgType, QString> > MessageForwarderThread::m_messages
private

Definition at line 93 of file LogDockerDock.cpp.

◆ m_mutex

QMutex MessageForwarderThread::m_mutex
private

Definition at line 91 of file LogDockerDock.cpp.

◆ m_waitCondition

QWaitCondition MessageForwarderThread::m_waitCondition
private

Definition at line 92 of file LogDockerDock.cpp.


The documentation for this class was generated from the following file: