tahoma2d/toonz/sources/common/tcore/tthreadp.h
Shinya Kitaoka d1f6c4e95b REFACTORING: Add final specifiers (#537)
* add final specifiers

* apply clang-format

* fix for macOS
2016-06-29 15:17:12 +09:00

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