diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-12-20 12:41:04 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-02-11 06:08:41 +0000 |
commit | b828609440a4771838c242b3ad9962ecd7a2fe99 (patch) | |
tree | 5da6bce0cda327c4cca96696bce512ec243cc1fd /src/core/qchangearbiter_p.h | |
parent | b0eb152b82cdd9658154ff7d9ef9e764eccc1ebd (diff) |
Remove deprecated classes and functions
Mostly old messaging API
Change-Id: I17eb2206b2ede56d2f7d36375d5e711d6149019f
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/qchangearbiter_p.h')
-rw-r--r-- | src/core/qchangearbiter_p.h | 96 |
1 files changed, 19 insertions, 77 deletions
diff --git a/src/core/qchangearbiter_p.h b/src/core/qchangearbiter_p.h index 483b46575..91c232d2a 100644 --- a/src/core/qchangearbiter_p.h +++ b/src/core/qchangearbiter_p.h @@ -52,7 +52,6 @@ // #include <Qt3DCore/qnodeid.h> -#include <Qt3DCore/qscenechange.h> #include <QtCore/QFlags> #include <QtCore/QMutex> #include <QtCore/QObject> @@ -62,9 +61,7 @@ #include <QtCore/QVariant> #include <QtCore/QVector> -#include <Qt3DCore/private/qlockableobserverinterface_p.h> #include <Qt3DCore/private/qt3dcore_global_p.h> -#include <Qt3DCore/private/qscenechange_p.h> QT_BEGIN_NAMESPACE @@ -76,103 +73,48 @@ class QAbstractAspectJobManager; class QSceneObserverInterface; class QAbstractPostman; class QScene; +class QEntity; +class QComponent; - -class Q_3DCORE_PRIVATE_EXPORT QAbstractArbiter : public QLockableObserverInterface +struct ComponentRelationshipChange { -public: - virtual QAbstractPostman *postman() const = 0; - virtual void addDirtyFrontEndNode(QNode *node) = 0; - virtual void removeDirtyFrontEndNode(QNode *node) = 0; - QT_WARNING_PUSH - QT_WARNING_DISABLE_DEPRECATED - virtual void addDirtyFrontEndNode(QNode *node, QNode *subNode, const char *property, ChangeFlag change) = 0; - QT_WARNING_POP + QNode *node; + QNode *subNode; + + enum RelationShip { + Added = 0, + Removed + }; + RelationShip change; }; -class Q_3DCORE_PRIVATE_EXPORT QChangeArbiter final +class Q_3DCORE_PRIVATE_EXPORT QChangeArbiter : public QObject - , public QAbstractArbiter { Q_OBJECT public: explicit QChangeArbiter(QObject *parent = nullptr); ~QChangeArbiter(); - void initialize(Qt3DCore::QAbstractAspectJobManager *jobManager); - - void syncChanges(); - - QT_WARNING_PUSH - QT_WARNING_DISABLE_DEPRECATED - void registerObserver(QObserverInterface *observer, - QNodeId nodeId, - ChangeFlags changeFlags = AllChanges); - QT_WARNING_POP - void unregisterObserver(QObserverInterface *observer, - QNodeId nodeId); - - void sceneChangeEvent(const QSceneChangePtr &e) override; // QLockableObserverInterface impl - void sceneChangeEventWithLock(const QSceneChangePtr &e) override; // QLockableObserverInterface impl - void sceneChangeEventWithLock(const QSceneChangeList &e) override; // QLockableObserverInterface impl - - void addDirtyFrontEndNode(QNode *node) override; - QT_WARNING_PUSH - QT_WARNING_DISABLE_DEPRECATED - void addDirtyFrontEndNode(QNode *node, QNode *subNode, const char *property, ChangeFlag change) override; - QT_WARNING_POP - void removeDirtyFrontEndNode(QNode *node) override; + void addDirtyFrontEndNode(QNode *node); + void addDirtyEntityComponentNodes(QEntity *entity, QComponent *component, + ComponentRelationshipChange::RelationShip change); + + void removeDirtyFrontEndNode(QNode *node); QVector<QNode *> takeDirtyFrontEndNodes(); - QVector<NodeRelationshipChange> takeDirtyFrontEndSubNodes(); + QVector<ComponentRelationshipChange> takeDirtyEntityComponentNodes(); - void setPostman(Qt3DCore::QAbstractPostman *postman); void setScene(Qt3DCore::QScene *scene); - QAbstractPostman *postman() const final; QScene *scene() const; - static void createUnmanagedThreadLocalChangeQueue(void *changeArbiter); - static void destroyUnmanagedThreadLocalChangeQueue(void *changeArbiter); - static void createThreadLocalChangeQueue(void *changeArbiter); - static void destroyThreadLocalChangeQueue(void *changeArbiter); - Q_SIGNALS: void receivedChange(); protected: - typedef std::vector<QSceneChangePtr> QChangeQueue; - typedef QPair<ChangeFlags, QObserverInterface *> QObserverPair; - typedef QVector<QObserverPair> QObserverList; - - void distributeQueueChanges(QChangeQueue *queue); - - QThreadStorage<QChangeQueue *> *tlsChangeQueue(); - void appendChangeQueue(QChangeQueue *queue); - void removeChangeQueue(QChangeQueue *queue); - void appendLockingChangeQueue(QChangeQueue *queue); - void removeLockingChangeQueue(QChangeQueue *queue); - -private: - mutable QRecursiveMutex m_mutex; - QAbstractAspectJobManager *m_jobManager; - - // The lists of observers indexed by observable (QNodeId). - // m_nodeObservations is for observables in the main thread's object tree - QHash<QNodeId, QObserverList> m_nodeObservations; - - // Each thread has a TLS ChangeQueue so we never need to lock whilst - // receiving a QSceneChange. - QThreadStorage<QChangeQueue *> m_tlsChangeQueue; - - // We store a list of the ChangeQueue's from each thread. This will only - // be accessed from the aspect thread during the syncChanges() phase. - QList<QChangeQueue *> m_changeQueues; - QList<QChangeQueue *> m_lockingChangeQueues; - QAbstractPostman *m_postman; QScene *m_scene; - QVector<QNode *> m_dirtyFrontEndNodes; - QVector<NodeRelationshipChange> m_dirtySubNodeChanges; + QVector<ComponentRelationshipChange> m_dirtyEntityComponentNodeChanges; }; } // namespace Qt3DCore |