diff options
author | Wieland Hagen <wieland.hagen@kdab.com> | 2017-01-09 12:36:48 +0700 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-01-09 20:17:25 +0000 |
commit | d2215e0986395539ea5dcf63d8bd1bc1b41d3de7 (patch) | |
tree | 37e5b0db8a853518db4db6cee122d32ad3d7b4e4 /src/render/frontend/qrendersettings.cpp | |
parent | 5386c767fa5a6be312f02b0cf23869974d5766b2 (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.cpp | 10 |
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); |