diff options
author | Tobias Koenig <tobias.koenig@kdab.com> | 2016-01-20 14:59:37 +0100 |
---|---|---|
committer | Tobias Koenig <tobias.koenig@kdab.com> | 2016-01-20 14:34:29 +0000 |
commit | 5d921dda57bff431487e6f1d64ef5111d464655d (patch) | |
tree | e312220e9ddec92315de30b9dbc3570ea216c879 /src/render/framegraph | |
parent | 30152f710ab459c203d3b59d2d0c364af365f92f (diff) |
Port FrameGraphManager away from QResourceManager
Change-Id: I7399008adb0f612c78738f58f168fa38cf6ae845
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/framegraph')
-rw-r--r-- | src/render/framegraph/framegraphnode.cpp | 63 | ||||
-rw-r--r-- | src/render/framegraph/framegraphnode_p.h | 37 | ||||
-rw-r--r-- | src/render/framegraph/framegraphvisitor.cpp | 2 |
3 files changed, 41 insertions, 61 deletions
diff --git a/src/render/framegraph/framegraphnode.cpp b/src/render/framegraph/framegraphnode.cpp index 1c913b281..7d3c1d03a 100644 --- a/src/render/framegraph/framegraphnode.cpp +++ b/src/render/framegraph/framegraphnode.cpp @@ -74,75 +74,62 @@ FrameGraphManager *FrameGraphNode::manager() const return m_manager; } -void FrameGraphNode::setHandle(HFrameGraphNode handle) +void FrameGraphNode::setParentId(const Qt3DCore::QNodeId &parentId) { - m_handle = handle; -} - -void FrameGraphNode::setParentHandle(HFrameGraphNode parentHandle) -{ - if (m_parentHandle != parentHandle) { - m_parentHandle = parentHandle; - FrameGraphNode **parent = m_manager->data(m_parentHandle); - if (parent != Q_NULLPTR && *parent != Q_NULLPTR && !(*parent)->m_childrenHandles.contains(m_handle)) - (*parent)->m_childrenHandles.append(m_handle); + if (m_parentId != parentId) { + m_parentId = parentId; + FrameGraphNode *parent = m_manager->lookupNode(m_parentId); + if (parent != Q_NULLPTR && !parent->m_childrenIds.contains(peerUuid())) + parent->m_childrenIds.append(peerUuid()); } } -void FrameGraphNode::appendChildHandle(HFrameGraphNode childHandle) +void FrameGraphNode::appendChildId(const Qt3DCore::QNodeId &childId) { - if (!m_childrenHandles.contains(childHandle)) { - FrameGraphNode **child = m_manager->data(childHandle); + if (!m_childrenIds.contains(childId)) { + FrameGraphNode *child = m_manager->lookupNode(childId); if (child != Q_NULLPTR) { - m_childrenHandles.append(childHandle); - (*child)->m_parentHandle = m_handle; + m_childrenIds.append(childId); + child->m_parentId = peerUuid(); } } } -void FrameGraphNode::removeChildHandle(HFrameGraphNode childHandle) +void FrameGraphNode::removeChildId(const Qt3DCore::QNodeId &childId) { - if (m_childrenHandles.contains(childHandle)) { - FrameGraphNode **child = m_manager->data(childHandle); + if (m_childrenIds.contains(childId)) { + FrameGraphNode *child = m_manager->lookupNode(childId); if (child != Q_NULLPTR) { - (*child)->m_parentHandle = HFrameGraphNode(); + child->m_parentId = Qt3DCore::QNodeId(); } - m_childrenHandles.removeAll(childHandle); + m_childrenIds.removeAll(childId); } } -HFrameGraphNode FrameGraphNode::handle() const +Qt3DCore::QNodeId FrameGraphNode::parentId() const { - return m_handle; + return m_parentId; } -HFrameGraphNode FrameGraphNode::parentHandle() const +QList<Qt3DCore::QNodeId> FrameGraphNode::childrenIds() const { - return m_parentHandle; -} - -QList<HFrameGraphNode> FrameGraphNode::childrenHandles() const -{ - return m_childrenHandles; + return m_childrenIds; } FrameGraphNode *FrameGraphNode::parent() const { - FrameGraphNode **parent = m_manager->data(m_parentHandle); - if (parent != Q_NULLPTR) - return *parent; - return Q_NULLPTR; + return m_manager->lookupNode(m_parentId); } QList<FrameGraphNode *> FrameGraphNode::children() const { QList<FrameGraphNode *> children; - children.reserve(m_childrenHandles.size()); + children.reserve(m_childrenIds.size()); - Q_FOREACH (HFrameGraphNode handle, m_childrenHandles) { - FrameGraphNode **child = m_manager->data(handle); + Q_FOREACH (const Qt3DCore::QNodeId &id, m_childrenIds) { + FrameGraphNode *child = m_manager->lookupNode(id); if (child != Q_NULLPTR) - children << *child; + children << child; } return children; } diff --git a/src/render/framegraph/framegraphnode_p.h b/src/render/framegraph/framegraphnode_p.h index 9c4998729..ebc96748c 100644 --- a/src/render/framegraph/framegraphnode_p.h +++ b/src/render/framegraph/framegraphnode_p.h @@ -62,6 +62,8 @@ namespace Qt3DRender { namespace Render { +class FrameGraphManager; + class Q_AUTOTEST_EXPORT FrameGraphNode : public Qt3DCore::QBackendNode { public: @@ -94,14 +96,12 @@ public: void setFrameGraphManager(FrameGraphManager *manager); FrameGraphManager *manager() const; - void setHandle(HFrameGraphNode handle); - void setParentHandle(HFrameGraphNode parentHandle); - void appendChildHandle(HFrameGraphNode childHandle); - void removeChildHandle(HFrameGraphNode childHandle); + void setParentId(const Qt3DCore::QNodeId &parentId); + void appendChildId(const Qt3DCore::QNodeId &childHandle); + void removeChildId(const Qt3DCore::QNodeId &childHandle); - HFrameGraphNode handle() const; - HFrameGraphNode parentHandle() const; - QList<HFrameGraphNode> childrenHandles() const; + Qt3DCore::QNodeId parentId() const; + QList<Qt3DCore::QNodeId> childrenIds() const; FrameGraphNode *parent() const; QList<FrameGraphNode *> children() const; @@ -112,9 +112,8 @@ protected: private: FrameGraphNodeType m_nodeType; bool m_enabled; - HFrameGraphNode m_handle; - HFrameGraphNode m_parentHandle; - QList<HFrameGraphNode> m_childrenHandles; + Qt3DCore::QNodeId m_parentId; + QList<Qt3DCore::QNodeId> m_childrenIds; FrameGraphManager *m_manager; friend class FrameGraphVisitor; @@ -136,15 +135,12 @@ public: Qt3DCore::QBackendNode *get(const Qt3DCore::QNodeId &id) const Q_DECL_OVERRIDE { - FrameGraphNode **node = m_manager->lookupResource(id); - if (node != Q_NULLPTR) - return *node; - return Q_NULLPTR; + return m_manager->lookupNode(id); } void destroy(const Qt3DCore::QNodeId &id) const Q_DECL_OVERRIDE { - m_manager->releaseResource(id); + m_manager->releaseNode(id); } protected: @@ -152,21 +148,18 @@ protected: { Frontend *f = qobject_cast<Frontend *>(n); if (f != Q_NULLPTR) { - HFrameGraphNode handle = m_manager->lookupHandle(n->id()); - if (handle.isNull()) { - handle = m_manager->getOrAcquireHandle(n->id()); + if (!m_manager->containsNode(n->id())) { Backend *backend = new Backend(); - *m_manager->data(handle) = backend; backend->setFactory(factory); backend->setFrameGraphManager(m_manager); - backend->setHandle(handle); backend->setPeer(f); QFrameGraphNode *parentFGNode = static_cast<QFrameGraphNode *>(n)->parentFrameGraphNode(); if (parentFGNode) - backend->setParentHandle(m_manager->lookupHandle(parentFGNode->id())); + backend->setParentId(parentFGNode->id()); + m_manager->appendNode(backend); return backend; } - return static_cast<Backend *>(*m_manager->data(handle)); + return static_cast<Backend *>(m_manager->lookupNode(n->id())); } return Q_NULLPTR; } diff --git a/src/render/framegraph/framegraphvisitor.cpp b/src/render/framegraph/framegraphvisitor.cpp index 60307469a..3aa682468 100644 --- a/src/render/framegraph/framegraphvisitor.cpp +++ b/src/render/framegraph/framegraphvisitor.cpp @@ -87,7 +87,7 @@ void FrameGraphVisitor::visit(Render::FrameGraphNode *node) // Leaf node - create a RenderView ready to be populated // TODO: Pass in only framegraph config that has changed from previous // index RenderViewJob. - if (node->childrenHandles().empty()) { + if (node->childrenIds().empty()) { QAspectJobPtr job = m_renderer->createRenderViewJob(node, m_renderviewIndex++); m_jobs->append(job); } |