d1f6c4e95b
* add final specifiers * apply clang-format * fix for macOS
76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#ifndef TTHREADP_H
|
|
#define TTHREADP_H
|
|
|
|
#include <QObject>
|
|
|
|
#include "tthreadmessage.h"
|
|
|
|
//=====================================================================
|
|
|
|
//======================================
|
|
// TThreadMessageDispatcher class
|
|
//--------------------------------------
|
|
|
|
// NOTE: This class should eventually be moved to tthreadmessagep.h...
|
|
class TThreadMessageDispatcher final : public QObject // singleton
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
TThreadMessageDispatcher();
|
|
Q_SIGNALS:
|
|
void signaled(TThread::Message *msg);
|
|
void blockingSignaled(TThread::Message *msg);
|
|
protected Q_SLOTS:
|
|
void onSignal(TThread::Message *msg);
|
|
|
|
public:
|
|
void emitSignaled(TThread::Message *msg);
|
|
void emitBlockingSignaled(TThread::Message *msg);
|
|
static void init();
|
|
static TThreadMessageDispatcher *instance();
|
|
};
|
|
|
|
//=====================================================================
|
|
|
|
namespace TThread {
|
|
// Forward declarations
|
|
class ExecutorId;
|
|
class ExecutorImpSlots;
|
|
}
|
|
|
|
//=====================================================================
|
|
|
|
//==============================
|
|
// ExecutorImpSlots class
|
|
//------------------------------
|
|
|
|
class TThread::ExecutorImpSlots final : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
ExecutorImpSlots();
|
|
~ExecutorImpSlots();
|
|
|
|
// The following is provided to ensure that point #3 in Qt reference in page
|
|
// "Thread support in Qt"
|
|
// is satisfied:
|
|
|
|
// "You must ensure that all objects created in
|
|
// a thread are deleted before you delete the QThread."
|
|
|
|
// So, specifically, thread creation should happen only in the main thread,
|
|
// not in worker threads.
|
|
void emitRefreshAssignments();
|
|
|
|
Q_SIGNALS:
|
|
void refreshAssignments();
|
|
|
|
public Q_SLOTS:
|
|
void onTerminated();
|
|
void onRefreshAssignments();
|
|
};
|
|
|
|
#endif
|