summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2015-06-09 09:30:22 +0100
committerJani Heikkinen <jani.heikkinen@theqtcompany.com>2015-06-10 09:52:25 +0000
commit9db7beabdbaa0182cc9fd25603a790db293d56eb (patch)
tree52314812b2cd0b3f6b4a65c14d92a7bda9ca1cac /src
parent3779e007024b712dee5cd8c187950119ba811bcf (diff)
Make QAspectJobManager and base class private
Prevents leaking of private headers and allows use of QT3DCORE_PRIVATE_EXPORT for use with the job manager unit test. Change-Id: I7f0c2b2e27e88eee6cb686f5ae55c78b73ea27d3 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/aspects/qabstractaspect.cpp2
-rw-r--r--src/core/aspects/qaspectmanager.cpp4
-rw-r--r--src/core/jobs/jobs.pri2
-rw-r--r--src/core/jobs/qabstractaspectjobmanager.cpp11
-rw-r--r--src/core/jobs/qabstractaspectjobmanager.h73
-rw-r--r--src/core/jobs/qabstractaspectjobmanager_p.h23
-rw-r--r--src/core/jobs/qaspectjobmanager.cpp69
-rw-r--r--src/core/jobs/qaspectjobmanager.h77
-rw-r--r--src/core/jobs/qaspectjobmanager_p.h29
-rw-r--r--src/core/jobs/task_p.h2
-rw-r--r--src/core/qchangearbiter.cpp2
-rw-r--r--src/core/qscheduler.cpp2
-rw-r--r--src/render/backend/renderer.cpp2
13 files changed, 65 insertions, 233 deletions
diff --git a/src/core/aspects/qabstractaspect.cpp b/src/core/aspects/qabstractaspect.cpp
index 94e52c086..aae2100c0 100644
--- a/src/core/aspects/qabstractaspect.cpp
+++ b/src/core/aspects/qabstractaspect.cpp
@@ -38,7 +38,7 @@
#include "qentity.h"
#include <Qt3DCore/private/qaspectmanager_p.h>
#include <private/qabstractaspect_p.h>
-#include <Qt3DCore/qaspectjobmanager.h>
+#include <Qt3DCore/private/qaspectjobmanager_p.h>
#include <private/qchangearbiter_p.h>
#include <Qt3DCore/qsceneinterface.h>
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp
index f6ba2ab97..510ea1777 100644
--- a/src/core/aspects/qaspectmanager.cpp
+++ b/src/core/aspects/qaspectmanager.cpp
@@ -39,8 +39,8 @@
#include "qabstractaspect_p.h"
#include "qchangearbiter_p.h"
// TODO Make the kind of job manager configurable (e.g. ThreadWeaver vs Intel TBB)
-#include "qaspectjobmanager.h"
-#include "qabstractaspectjobmanager.h"
+#include "qaspectjobmanager_p.h"
+#include "qabstractaspectjobmanager_p.h"
#include "qentity.h"
#include <Qt3DCore/qservicelocator.h>
diff --git a/src/core/jobs/jobs.pri b/src/core/jobs/jobs.pri
index d21d21975..35de78e50 100644
--- a/src/core/jobs/jobs.pri
+++ b/src/core/jobs/jobs.pri
@@ -19,9 +19,7 @@ SOURCES += \
HEADERS += \
$$PWD/qaspectjob.h \
$$PWD/qaspectjob_p.h \
- $$PWD/qabstractaspectjobmanager.h \
$$PWD/qaspectjobproviderinterface.h \
- $$PWD/qaspectjobmanager.h \
$$PWD/qaspectjobmanager_p.h \
$$PWD/qabstractaspectjobmanager_p.h \
$$PWD/dependencyhandler_p.h \
diff --git a/src/core/jobs/qabstractaspectjobmanager.cpp b/src/core/jobs/qabstractaspectjobmanager.cpp
index bfd9e1638..a3b768ae4 100644
--- a/src/core/jobs/qabstractaspectjobmanager.cpp
+++ b/src/core/jobs/qabstractaspectjobmanager.cpp
@@ -34,7 +34,6 @@
**
****************************************************************************/
-#include "qabstractaspectjobmanager.h"
#include "qabstractaspectjobmanager_p.h"
QT_BEGIN_NAMESPACE
@@ -42,17 +41,11 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
/*!
- \class Qt3D::QAbstractAspectJobManagerPrivate
+ \class Qt3D::QAbstractAspectJobManager
\internal
*/
QAbstractAspectJobManager::QAbstractAspectJobManager(QObject *parent)
- : QObject(*new QAbstractAspectJobManagerPrivate, parent)
-{
-}
-
-/*! \internal */
-QAbstractAspectJobManager::QAbstractAspectJobManager(QAbstractAspectJobManagerPrivate &dd, QObject *parent)
- : QObject(dd, parent)
+ : QObject(parent)
{
}
diff --git a/src/core/jobs/qabstractaspectjobmanager.h b/src/core/jobs/qabstractaspectjobmanager.h
deleted file mode 100644
index 541210112..000000000
--- a/src/core/jobs/qabstractaspectjobmanager.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3D_QABSTRACTASPECTJOBMANAGER_H
-#define QT3D_QABSTRACTASPECTJOBMANAGER_H
-
-#include <QObject>
-
-#include <Qt3DCore/qaspectjob.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3D {
-
-class QAbstractAspectJobManagerPrivate;
-
-class QAbstractAspectJobManager : public QObject
-{
- Q_OBJECT
-public:
- explicit QAbstractAspectJobManager(QObject *p = 0);
-
- virtual void initialize() {}
- virtual void enqueueJobs(const QVector<QAspectJobPtr> &jobQueue) = 0;
- virtual void waitForAllJobs() = 0;
-
- // Callback signature for running SynchronizedJobs
- typedef void (*JobFunction)(void *);
- virtual void waitForPerThreadFunction(JobFunction func, void *arg) = 0;
-
-protected:
- QAbstractAspectJobManager(QAbstractAspectJobManagerPrivate &dd, QObject *parent);
- Q_DECLARE_PRIVATE(QAbstractAspectJobManager)
-};
-
-} // namespace Qt3D
-
-QT_END_NAMESPACE
-
-#endif // QT3D_QABSTRACTASPECTJOBMANAGER_H
diff --git a/src/core/jobs/qabstractaspectjobmanager_p.h b/src/core/jobs/qabstractaspectjobmanager_p.h
index 2ac2d9bcc..29f863ae0 100644
--- a/src/core/jobs/qabstractaspectjobmanager_p.h
+++ b/src/core/jobs/qabstractaspectjobmanager_p.h
@@ -37,23 +37,30 @@
#ifndef QABSTRACTASPECTJOBMANAGER_P_H
#define QABSTRACTASPECTJOBMANAGER_P_H
-#include <private/qobject_p.h>
+#include <QObject>
+
+#include <Qt3DCore/qaspectjob.h>
QT_BEGIN_NAMESPACE
namespace Qt3D {
-class QAbstractAspectJobManager;
-
-class QAbstractAspectJobManagerPrivate : public QObjectPrivate
+class QAbstractAspectJobManager : public QObject
{
+ Q_OBJECT
public:
- QAbstractAspectJobManagerPrivate()
- : QObjectPrivate()
- {}
+ explicit QAbstractAspectJobManager(QObject *p = 0);
+
+ virtual void initialize() {}
+ virtual void enqueueJobs(const QVector<QAspectJobPtr> &jobQueue) = 0;
+ virtual void waitForAllJobs() = 0;
+
+ // Callback signature for running SynchronizedJobs
+ typedef void (*JobFunction)(void *);
+ virtual void waitForPerThreadFunction(JobFunction func, void *arg) = 0;
};
-} // Qt3D
+} // namespace Qt3D
QT_END_NAMESPACE
diff --git a/src/core/jobs/qaspectjobmanager.cpp b/src/core/jobs/qaspectjobmanager.cpp
index 1488eed21..7fedc2ea8 100644
--- a/src/core/jobs/qaspectjobmanager.cpp
+++ b/src/core/jobs/qaspectjobmanager.cpp
@@ -42,9 +42,9 @@
#include "weaverjob_p.h"
#endif
-#include "qaspectjobmanager.h"
#include "qaspectjobmanager_p.h"
#include "task_p.h"
+#include "qthreadpooler_p.h"
#include "dependencyhandler_p.h"
#include <QAtomicInt>
@@ -102,49 +102,27 @@ void SynchronizedJob::run(ThreadWeaver::JobPointer self, ThreadWeaver::Thread *t
#endif
/*!
- \class Qt3D::QAspectJobManagerPrivate
+ \class Qt3D::QAspectJobManager
\internal
*/
-QAspectJobManagerPrivate::QAspectJobManagerPrivate()
- : QAbstractAspectJobManagerPrivate()
+QAspectJobManager::QAspectJobManager(QObject *parent)
+ : QAbstractAspectJobManager(parent)
#ifdef THREAD_WEAVER
, m_weaver(Q_NULLPTR)
#endif
+ , m_threadPooler(new QThreadPooler(this))
+ , m_dependencyHandler(new DependencyHandler)
{
-}
-
-QAspectJobManagerPrivate::~QAspectJobManagerPrivate()
-{
- delete m_dependencyHandler;
-}
-
-QAspectJobManager::QAspectJobManager(QObject *parent)
- : QAbstractAspectJobManager(*new QAspectJobManagerPrivate, parent)
-{
- Q_D(QAspectJobManager);
#ifdef THREAD_WEAVER
- d->m_weaver = new ThreadWeaver::Queue(this);
- d->m_weaver->setMaximumNumberOfThreads(QThread::idealThreadCount());
+ m_weaver = new ThreadWeaver::Queue(this);
+ m_weaver->setMaximumNumberOfThreads(QThread::idealThreadCount());
#else
- d->m_threadPooler = new QThreadPooler(this);
- d->m_dependencyHandler = new DependencyHandler();
- d->m_threadPooler->setDependencyHandler(d->m_dependencyHandler);
+ m_threadPooler->setDependencyHandler(m_dependencyHandler.data());
#endif
}
-/*! \internal */
-QAspectJobManager::QAspectJobManager(QAspectJobManagerPrivate &dd, QObject *parent)
- : QAbstractAspectJobManager(dd, parent)
+QAspectJobManager::~QAspectJobManager()
{
- Q_D(QAspectJobManager);
-#ifdef THREAD_WEAVER
- d->m_weaver = new ThreadWeaver::Queue(this);
- d->m_weaver->setMaximumNumberOfThreads(QThread::idealThreadCount());
-#else
- d->m_threadPooler = new QThreadPooler(this);
- d->m_dependencyHandler = new DependencyHandler();
- d->m_threadPooler->setDependencyHandler(d->m_dependencyHandler);
-#endif
}
void QAspectJobManager::initialize()
@@ -153,8 +131,6 @@ void QAspectJobManager::initialize()
void QAspectJobManager::enqueueJobs(const QVector<QAspectJobPtr> &jobQueue)
{
- Q_D(QAspectJobManager);
-
#ifdef THREAD_WEAVER
// Convert QJobs to ThreadWeaver::Jobs
QHash<QAspectJob *, QSharedPointer<WeaverJob> > jobsMap;
@@ -181,7 +157,7 @@ void QAspectJobManager::enqueueJobs(const QVector<QAspectJobPtr> &jobQueue)
Q_FOREACH (const QAspectJobPtr &job, jobQueue) {
QSharedPointer<WeaverJob> weaverJob = jobsMap.value(job.data());
- d->m_weaver->enqueue(weaverJob);
+ m_weaver->enqueue(weaverJob);
}
#else
// Convert QJobs to Tasks
@@ -207,43 +183,40 @@ void QAspectJobManager::enqueueJobs(const QVector<QAspectJobPtr> &jobQueue)
if (taskDependee) {
AspectTaskRunnable *taskDepender = tasksMap.value(job.data());
dependencyList.append(Dependency(taskDepender, taskDependee));
- taskDepender->setDependencyHandler(d->m_dependencyHandler);
- taskDependee->setDependencyHandler(d->m_dependencyHandler);
+ taskDepender->setDependencyHandler(m_dependencyHandler.data());
+ taskDependee->setDependencyHandler(m_dependencyHandler.data());
}
}
}
- d->m_dependencyHandler->addDependencies(qMove(dependencyList));
+ m_dependencyHandler->addDependencies(qMove(dependencyList));
- d->m_threadPooler->mapDependables(taskList);
+ m_threadPooler->mapDependables(taskList);
#endif
}
void QAspectJobManager::waitForAllJobs()
{
- Q_D(QAspectJobManager);
#ifdef THREAD_WEAVER
- d->m_weaver->finish();
+ m_weaver->finish();
#else
QFutureWatcher<void> futureWatcher;
- futureWatcher.setFuture(d->m_threadPooler->future());
+ futureWatcher.setFuture(m_threadPooler->future());
futureWatcher.waitForFinished();
#endif
}
void QAspectJobManager::waitForPerThreadFunction(JobFunction func, void *arg)
{
- Q_D(QAspectJobManager);
-
#ifdef THREAD_WEAVER
- const int threadCount = d->m_weaver->maximumNumberOfThreads();
+ const int threadCount = m_weaver->maximumNumberOfThreads();
QAtomicInt atomicCount(threadCount);
for (int i = 0; i < threadCount; ++i) {
SynchronizedJobPtr syncJob(new SynchronizedJob(func, arg, &atomicCount));
- d->m_weaver->enqueue(syncJob);
+ m_weaver->enqueue(syncJob);
}
- d->m_weaver->finish();
+ m_weaver->finish();
#else
const int threadCount = QThread::idealThreadCount();
QAtomicInt atomicCount(threadCount);
@@ -254,7 +227,7 @@ void QAspectJobManager::waitForPerThreadFunction(JobFunction func, void *arg)
taskList << syncTask;
}
- QFuture<void> future = d->m_threadPooler->mapDependables(taskList);
+ QFuture<void> future = m_threadPooler->mapDependables(taskList);
QFutureWatcher<void> futureWatcher;
futureWatcher.setFuture(future);
futureWatcher.waitForFinished();
diff --git a/src/core/jobs/qaspectjobmanager.h b/src/core/jobs/qaspectjobmanager.h
deleted file mode 100644
index d2436d29c..000000000
--- a/src/core/jobs/qaspectjobmanager.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3D_QASPECTJOBMANAGER_H
-#define QT3D_QASPECTJOBMANAGER_H
-
-#include <Qt3DCore/qabstractaspectjobmanager.h>
-#include <Qt3DCore/qt3dcore_global.h>
-#include <Qt3DCore/private/qt3dcore_global_p.h>
-
-#include <Qt3DCore/qaspectjob.h>
-
-#include <QVector>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3D {
-
-class QAspectJobManagerPrivate;
-
-class QT3DCORE_PRIVATE_EXPORT QAspectJobManager : public QAbstractAspectJobManager
-{
- Q_OBJECT
-public:
- explicit QAspectJobManager(QObject *parent = 0);
-
- void initialize() Q_DECL_OVERRIDE;
-
- void enqueueJobs(const QVector<QAspectJobPtr> &jobQueue) Q_DECL_OVERRIDE;
-
- void waitForAllJobs() Q_DECL_OVERRIDE;
-
- void waitForPerThreadFunction(JobFunction func, void *arg) Q_DECL_OVERRIDE;
-
-protected:
- QAspectJobManager(QAspectJobManagerPrivate &dd, QObject *parent);
- Q_DECLARE_PRIVATE(QAspectJobManager)
-};
-
-} // namespace Qt3D
-
-QT_END_NAMESPACE
-
-#endif // QT3D_QASPECTJOBMANAGER_H
diff --git a/src/core/jobs/qaspectjobmanager_p.h b/src/core/jobs/qaspectjobmanager_p.h
index 4d6e1feb3..1264bb52b 100644
--- a/src/core/jobs/qaspectjobmanager_p.h
+++ b/src/core/jobs/qaspectjobmanager_p.h
@@ -38,9 +38,11 @@
#define QT3D_QASPECTJOBMANAGER_P_H
#include <private/qabstractaspectjobmanager_p.h>
+#include <Qt3DCore/private/qt3dcore_global_p.h>
-#include "qthreadpooler_p.h"
-#include "dependencyhandler_p.h"
+#include <Qt3DCore/qaspectjob.h>
+
+#include <QVector>
#ifdef THREAD_WEAVER
namespace ThreadWeaver {
@@ -52,26 +54,35 @@ QT_BEGIN_NAMESPACE
namespace Qt3D {
-class QAspectJobManager;
+class QThreadPooler;
+class DependencyHandler;
-class QAspectJobManagerPrivate : public QAbstractAspectJobManagerPrivate
+class QT3DCORE_PRIVATE_EXPORT QAspectJobManager : public QAbstractAspectJobManager
{
+ Q_OBJECT
public:
- QAspectJobManagerPrivate();
- ~QAspectJobManagerPrivate();
+ explicit QAspectJobManager(QObject *parent = 0);
+ ~QAspectJobManager();
+
+ void initialize() Q_DECL_OVERRIDE;
+
+ void enqueueJobs(const QVector<QAspectJobPtr> &jobQueue) Q_DECL_OVERRIDE;
+
+ void waitForAllJobs() Q_DECL_OVERRIDE;
- Q_DECLARE_PUBLIC(QAspectJobManager)
+ void waitForPerThreadFunction(JobFunction func, void *arg) Q_DECL_OVERRIDE;
+private:
#ifdef THREAD_WEAVER
// Owned by QAspectJobManager via QObject parent-child
ThreadWeaver::Queue *m_weaver;
#endif
QThreadPooler *m_threadPooler;
- DependencyHandler *m_dependencyHandler;
+ QScopedPointer<DependencyHandler> m_dependencyHandler;
};
-} // Qt3D
+} // namespace Qt3D
QT_END_NAMESPACE
diff --git a/src/core/jobs/task_p.h b/src/core/jobs/task_p.h
index ea8547303..11f1fb8c6 100644
--- a/src/core/jobs/task_p.h
+++ b/src/core/jobs/task_p.h
@@ -37,7 +37,7 @@
#ifndef QT3D_TASK_P_H
#define QT3D_TASK_P_H
-#include "qaspectjobmanager.h"
+#include "qaspectjobmanager_p.h"
#include <QtCore/QtGlobal>
#include <QtCore/QThread>
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp
index 7c7dafd0f..886b74036 100644
--- a/src/core/qchangearbiter.cpp
+++ b/src/core/qchangearbiter.cpp
@@ -36,7 +36,7 @@
#include "qchangearbiter_p.h"
#include "qcomponent.h"
-#include "qabstractaspectjobmanager.h"
+#include "qabstractaspectjobmanager_p.h"
#include "qsceneobserverinterface.h"
#include "qsceneinterface.h"
diff --git a/src/core/qscheduler.cpp b/src/core/qscheduler.cpp
index 395c8083e..92c601153 100644
--- a/src/core/qscheduler.cpp
+++ b/src/core/qscheduler.cpp
@@ -38,7 +38,7 @@
#include "qabstractaspect.h"
#include "qaspectmanager_p.h"
-#include "qabstractaspectjobmanager.h"
+#include "qabstractaspectjobmanager_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp
index 78805c47e..7a889910c 100644
--- a/src/render/backend/renderer.cpp
+++ b/src/render/backend/renderer.cpp
@@ -77,7 +77,7 @@
#include <Qt3DCore/qcameralens.h>
#include <Qt3DCore/private/qaspectmanager_p.h>
-#include <Qt3DCore/qabstractaspectjobmanager.h>
+#include <Qt3DCore/private/qabstractaspectjobmanager_p.h>
#include <QStack>
#include <QSurface>