summaryrefslogtreecommitdiffstats
path: root/src/render/framegraph
diff options
context:
space:
mode:
authorTobias Koenig <tobias.koenig@kdab.com>2016-01-20 14:59:37 +0100
committerTobias Koenig <tobias.koenig@kdab.com>2016-01-20 14:34:29 +0000
commit5d921dda57bff431487e6f1d64ef5111d464655d (patch)
treee312220e9ddec92315de30b9dbc3570ea216c879 /src/render/framegraph
parent30152f710ab459c203d3b59d2d0c364af365f92f (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.cpp63
-rw-r--r--src/render/framegraph/framegraphnode_p.h37
-rw-r--r--src/render/framegraph/framegraphvisitor.cpp2
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);
}