diff options
Diffstat (limited to 'src/core/jobs/task_p.h')
-rw-r--r-- | src/core/jobs/task_p.h | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/src/core/jobs/task_p.h b/src/core/jobs/task_p.h index cde8f90eb..9b5c6a0f2 100644 --- a/src/core/jobs/task_p.h +++ b/src/core/jobs/task_p.h @@ -42,7 +42,8 @@ #include <QtCore/QtGlobal> #include <QtCore/QThread> #include <QtCore/QSharedPointer> -#include <QtCore/QWaitCondition> + +#include <QtCore/QRunnable> QT_BEGIN_NAMESPACE @@ -50,13 +51,13 @@ namespace Qt3D { class JobRunner; class DependencyHandler; +class QThreadPooler; -class TaskInterface +class RunnableInterface : public QRunnable { public: - virtual ~TaskInterface(); + virtual ~RunnableInterface(); - virtual void run(QSharedPointer<TaskInterface> self, JobRunner *jr) = 0; virtual void run() = 0; virtual void setDependencyHandler(DependencyHandler *) = 0; @@ -64,54 +65,60 @@ public: virtual int id() = 0; virtual void setId(int id) = 0; + + virtual void setPooler(QThreadPooler *pooler) = 0; }; -class AspectTask : public TaskInterface +class AspectTaskRunnable : public RunnableInterface { public: - AspectTask(); - ~AspectTask(); + AspectTaskRunnable(); + ~AspectTaskRunnable(); - int id() Q_DECL_OVERRIDE { return m_id; } - void setId(int id) Q_DECL_OVERRIDE { m_id = id; } + void run(); void setDependencyHandler(DependencyHandler *handler) Q_DECL_OVERRIDE; DependencyHandler *dependencyHandler() Q_DECL_OVERRIDE; + void setPooler(QThreadPooler *pooler) Q_DECL_OVERRIDE { m_pooler = pooler; } + + int id() Q_DECL_OVERRIDE { return m_id; } + void setId(int id) Q_DECL_OVERRIDE { m_id = id; } + public: QSharedPointer<QAspectJob> m_job; -protected: - void run(QSharedPointer<TaskInterface> self, JobRunner *jr) Q_DECL_OVERRIDE; - void run() Q_DECL_OVERRIDE; - private: DependencyHandler *m_dependencyHandler; + QThreadPooler *m_pooler; + int m_id; // For testing purposes for now }; -class SynchronizedTask : public TaskInterface +class SyncTaskRunnable : public RunnableInterface { public: - explicit SynchronizedTask(QAbstractAspectJobManager::JobFunction func, void *arg, + explicit SyncTaskRunnable(QAbstractAspectJobManager::JobFunction func, void *arg, QAtomicInt *atomicCount); - ~SynchronizedTask(); + ~SyncTaskRunnable(); - int id() Q_DECL_OVERRIDE { return m_id; } - void setId(int id) Q_DECL_OVERRIDE { m_id = id; } + void run(); void setDependencyHandler(DependencyHandler *handler) Q_DECL_OVERRIDE; DependencyHandler *dependencyHandler() Q_DECL_OVERRIDE; -protected: - void run(QSharedPointer<TaskInterface> self, JobRunner *jr) Q_DECL_OVERRIDE; - void run() Q_DECL_OVERRIDE; + void setPooler(QThreadPooler *pooler) Q_DECL_OVERRIDE { m_pooler = pooler; } + + int id() Q_DECL_OVERRIDE { return m_id; } + void setId(int id) Q_DECL_OVERRIDE { m_id = id; } private: QAbstractAspectJobManager::JobFunction m_func; void *m_arg; QAtomicInt *m_atomicCount; + QThreadPooler *m_pooler; + int m_id; }; |