summaryrefslogtreecommitdiffstats
path: root/src/core/jobs/task_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/jobs/task_p.h')
-rw-r--r--src/core/jobs/task_p.h49
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;
};