diff options
author | Kevin Ottens <kevin.ottens@kdab.com> | 2016-08-05 12:25:02 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-08-07 18:49:11 +0000 |
commit | a51e8f08b28ff28b0bc0d5c1f925f9b21292d3f7 (patch) | |
tree | 52687c1f20da304563ecdff10e23c76036bd6c51 /src/quick3d | |
parent | e2b9d0b15cc3ad0072cb3e404e3079e640e555cc (diff) |
Avoid code dup. in Scene3DItem and Qt3DQuickWindow
Now that we got a single implementation for finding the
QRenderSurfaceSelector, remove the code duplication by using it.
It also fixes Scene3DItem search for QRenderSurfaceSelector which
had a slightly different (and wrong) implementation.
Change-Id: I80103363d7b591e757f8a0d9f4531659d6ea848c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d')
-rw-r--r-- | src/quick3d/imports/scene3d/scene3ditem.cpp | 50 | ||||
-rw-r--r-- | src/quick3d/quick3dextras/qt3dquickwindow.cpp | 29 | ||||
-rw-r--r-- | src/quick3d/quick3dextras/quick3dextras.pro | 2 |
3 files changed, 11 insertions, 70 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp index 750be8fa7..c03e77018 100644 --- a/src/quick3d/imports/scene3d/scene3ditem.cpp +++ b/src/quick3d/imports/scene3d/scene3ditem.cpp @@ -48,7 +48,7 @@ #include <Qt3DRender/qcamera.h> #include <Qt3DRender/QRenderAspect> #include <Qt3DRender/qrendersurfaceselector.h> -#include <Qt3DRender/qrendersettings.h> +#include <Qt3DRender/private/qrendersurfaceselector_p.h> #include <Qt3DInput/QInputAspect> #include <Qt3DInput/qinputsettings.h> #include <Qt3DLogic/qlogicaspect.h> @@ -198,57 +198,19 @@ void Scene3DItem::applyRootEntityChange() void Scene3DItem::setWindowSurface(QObject *rootObject) { - // Find surface selector in framegraph and set ourselves up as the - // render surface there - Qt3DRender::QRenderSettings *renderSettings - = rootObject->findChild<Qt3DRender::QRenderSettings *>(); - if (!renderSettings) { - qWarning() << "No renderer settings component found"; - return; - } - - Qt3DCore::QNode *frameGraphRoot = renderSettings->activeFrameGraph(); - if (!frameGraphRoot) { - qWarning() << "No active frame graph found"; - return; - } - - Qt3DRender::QRenderSurfaceSelector *surfaceSelector - = frameGraphRoot->findChild<Qt3DRender::QRenderSurfaceSelector *>(); - if (!surfaceSelector) { - qWarning() << "No render surface selector found in frame graph"; - return; - } + Qt3DRender::QRenderSurfaceSelector *surfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(rootObject); // Set the item's window surface if it appears // the surface wasn't set on the surfaceSelector - if (!surfaceSelector->surface()) + if (surfaceSelector && !surfaceSelector->surface()) surfaceSelector->setSurface(this->window()); } void Scene3DItem::setItemArea(const QSize &area) { - // Find surface selector in framegraph and set the area - Qt3DRender::QRenderSettings *renderSettings - = m_entity->findChild<Qt3DRender::QRenderSettings *>(); - if (!renderSettings) { - qWarning() << "No renderer settings component found"; - return; - } - - Qt3DCore::QNode *frameGraphRoot = renderSettings->activeFrameGraph(); - if (!frameGraphRoot) { - qWarning() << "No active frame graph found"; - return; - } - - Qt3DRender::QRenderSurfaceSelector *surfaceSelector - = frameGraphRoot->findChild<Qt3DRender::QRenderSurfaceSelector *>(); - if (!surfaceSelector) { - qWarning() << "No render surface selector found in frame graph"; - return; - } - surfaceSelector->setExternalRenderTargetSize(area); + Qt3DRender::QRenderSurfaceSelector *surfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(m_entity); + if (surfaceSelector) + surfaceSelector->setExternalRenderTargetSize(area); } bool Scene3DItem::isHoverEnabled() const diff --git a/src/quick3d/quick3dextras/qt3dquickwindow.cpp b/src/quick3d/quick3dextras/qt3dquickwindow.cpp index 10c932e98..8a7921d8e 100644 --- a/src/quick3d/quick3dextras/qt3dquickwindow.cpp +++ b/src/quick3d/quick3dextras/qt3dquickwindow.cpp @@ -52,8 +52,8 @@ #include <Qt3DQuick/QQmlAspectEngine> #include <Qt3DRender/qcamera.h> #include <Qt3DRender/qrenderaspect.h> -#include <Qt3DRender/qrendersettings.h> #include <Qt3DRender/qrendersurfaceselector.h> +#include <Qt3DRender/private/qrendersurfaceselector_p.h> #include <Qt3DInput/qinputaspect.h> #include <Qt3DInput/qinputsettings.h> #include <Qt3DLogic/qlogicaspect.h> @@ -230,30 +230,9 @@ void Qt3DQuickWindow::onSceneCreated(QObject *rootObject) void Qt3DQuickWindow::setWindowSurface(QObject *rootObject) { - // Find surface selector in framegraph and set ourselves up as the - // render surface there - Qt3DRender::QRenderSettings *rendererSettings - = rootObject->findChild<Qt3DRender::QRenderSettings *>(); - if (!rendererSettings) { - qWarning() << "No renderer settings component found"; - return; - } - - Qt3DCore::QNode *frameGraphRoot = rendererSettings->activeFrameGraph(); - if (!frameGraphRoot) { - qWarning() << "No active frame graph found"; - return; - } - - Qt3DRender::QRenderSurfaceSelector *surfaceSelector = qobject_cast<Qt3DRender::QRenderSurfaceSelector *>(frameGraphRoot); - if (!surfaceSelector) - surfaceSelector = frameGraphRoot->findChild<Qt3DRender::QRenderSurfaceSelector *>(); - if (!surfaceSelector) { - qWarning() << "No render surface selector found in frame graph"; - return; - } - - surfaceSelector->setSurface(this); + Qt3DRender::QRenderSurfaceSelector *surfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(rootObject); + if (surfaceSelector) + surfaceSelector->setSurface(this); } void Qt3DQuickWindow::setCameraAspectModeHelper() diff --git a/src/quick3d/quick3dextras/quick3dextras.pro b/src/quick3d/quick3dextras/quick3dextras.pro index 7af47424e..489200a0c 100644 --- a/src/quick3d/quick3dextras/quick3dextras.pro +++ b/src/quick3d/quick3dextras/quick3dextras.pro @@ -1,7 +1,7 @@ TARGET = Qt3DQuickExtras MODULE = 3dquickextras -QT += core core-private qml qml-private 3dcore 3dinput 3dquick 3drender 3dlogic +QT += core core-private qml qml-private 3dcore 3dinput 3dquick 3drender 3drender-private 3dlogic CONFIG -= precompile_header # Qt3D is free of Q_FOREACH - make sure it stays that way: |