summaryrefslogtreecommitdiffstats
path: root/src/render/frontend/qrendersettings.cpp
diff options
context:
space:
mode:
authorWieland Hagen <wieland.hagen@kdab.com>2017-01-09 12:36:48 +0700
committerSean Harmer <sean.harmer@kdab.com>2017-01-09 20:17:25 +0000
commitd2215e0986395539ea5dcf63d8bd1bc1b41d3de7 (patch)
tree37e5b0db8a853518db4db6cee122d32ad3d7b4e4 /src/render/frontend/qrendersettings.cpp
parent5386c767fa5a6be312f02b0cf23869974d5766b2 (diff)
QRendererSettings::setActiveFrameGraph(): Set surface for new graph
If the old frame graph already has a QRenderSurfaceSelector, use the surface assigned to this selector for the new frame graph, too. Task-number: QTBUG-57401 Change-Id: I5a0142d4ca40f5ff0047b7b42ae79fdc48189cf0 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend/qrendersettings.cpp')
-rw-r--r--src/render/frontend/qrendersettings.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/render/frontend/qrendersettings.cpp b/src/render/frontend/qrendersettings.cpp
index aa10a7ef3..4fb348617 100644
--- a/src/render/frontend/qrendersettings.cpp
+++ b/src/render/frontend/qrendersettings.cpp
@@ -40,6 +40,8 @@
#include "qrendersettings.h"
#include "qrendersettings_p.h"
#include "qframegraphnode.h"
+#include "qrendersurfaceselector.h"
+#include "qrendersurfaceselector_p.h"
QT_BEGIN_NAMESPACE
@@ -210,6 +212,14 @@ void QRenderSettings::setActiveFrameGraph(QFrameGraphNode *activeFrameGraph)
if (d->m_activeFrameGraph == activeFrameGraph)
return;
+ // if the old frame graph had a SurfaceSelector, use the given surface for the new framegraph, too.
+ if (d->m_activeFrameGraph && activeFrameGraph) {
+ Qt3DRender::QRenderSurfaceSelector *oldSurfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(d->m_activeFrameGraph);
+ Qt3DRender::QRenderSurfaceSelector *newSurfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(activeFrameGraph);
+ if (oldSurfaceSelector && newSurfaceSelector && oldSurfaceSelector->surface())
+ newSurfaceSelector->setSurface(oldSurfaceSelector->surface());
+ }
+
if (d->m_activeFrameGraph)
d->unregisterDestructionHelper(d->m_activeFrameGraph);