#ifndef TTHREADP_H #define TTHREADP_H #include #include "tthreadmessage.h" //===================================================================== //====================================== // TThreadMessageDispatcher class //-------------------------------------- //NOTE: This class should eventually be moved to tthreadmessagep.h... class TThreadMessageDispatcher : 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 : 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