diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2018-01-12 14:17:40 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2018-01-12 15:07:06 +0000 |
commit | 417b32815d5d6c45a6c8b4d38b62ca10119d14fd (patch) | |
tree | 5c910952affff3d376cbe84b7130be9ee7d6a577 /src/quick3d | |
parent | 1d5f8b8536c1b0165c2292529dc3814e96bb0a27 (diff) | |
parent | c9edc164ab165ddd31ef2411be19deb130614e8b (diff) |
Merge branch '5.9' into 5.10
Conflicts:
.qmake.conf
src/animation/backend/handle_types_p.h
src/extras/defaults/qtexturematerial.h
src/render/backend/entity_p.h
src/render/backend/handle_types_p.h
src/render/backend/renderview.cpp
src/render/io/scenemanager.cpp
Change-Id: Ic145062cc98360e9067fd60f0992c7a6b51e41bb
Diffstat (limited to 'src/quick3d')
-rw-r--r-- | src/quick3d/imports/scene3d/scene3ditem.cpp | 6 | ||||
-rw-r--r-- | src/quick3d/imports/scene3d/scene3ditem_p.h | 2 | ||||
-rw-r--r-- | src/quick3d/imports/scene3d/scene3drenderer.cpp | 9 | ||||
-rw-r--r-- | src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp | 6 |
4 files changed, 14 insertions, 9 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp index 4371e60b4..2c20fa789 100644 --- a/src/quick3d/imports/scene3d/scene3ditem.cpp +++ b/src/quick3d/imports/scene3d/scene3ditem.cpp @@ -241,11 +241,13 @@ void Scene3DItem::setWindowSurface(QObject *rootObject) } } -void Scene3DItem::setItemArea(QSize area) +void Scene3DItem::setItemAreaAndDevicePixelRatio(QSize area, qreal devicePixelRatio) { Qt3DRender::QRenderSurfaceSelector *surfaceSelector = Qt3DRender::QRenderSurfaceSelectorPrivate::find(m_entity); - if (surfaceSelector) + if (surfaceSelector) { surfaceSelector->setExternalRenderTargetSize(area); + surfaceSelector->setSurfacePixelRatio(devicePixelRatio); + } } bool Scene3DItem::isHoverEnabled() const diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h index e0ce3addc..37d7cbcc2 100644 --- a/src/quick3d/imports/scene3d/scene3ditem_p.h +++ b/src/quick3d/imports/scene3d/scene3ditem_p.h @@ -88,7 +88,7 @@ public: bool multisample() const; void setMultisample(bool enable); - Q_INVOKABLE void setItemArea(QSize area); + Q_INVOKABLE void setItemAreaAndDevicePixelRatio(QSize area, qreal devicePixelRatio); bool isHoverEnabled() const; enum CameraAspectRatioMode { diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp index 01977f72b..37ae8e48b 100644 --- a/src/quick3d/imports/scene3d/scene3drenderer.cpp +++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp @@ -59,9 +59,9 @@ namespace Qt3DRender { namespace { -inline QMetaMethod setItemAreaMethod() +inline QMetaMethod setItemAreaAndDevicePixelRatioMethod() { - const int idx = Scene3DItem::staticMetaObject.indexOfMethod("setItemArea(QSize)"); + const int idx = Scene3DItem::staticMetaObject.indexOfMethod("setItemAreaAndDevicePixelRatio(QSize,qreal)"); Q_ASSERT(idx != -1); return Scene3DItem::staticMetaObject.method(idx); } @@ -275,8 +275,9 @@ void Scene3DRenderer::render() if (sizeHasChanged) { // We are in the QSGRenderThread (doing a direct call would result in a race) - static const QMetaMethod setItemArea = setItemAreaMethod(); - setItemArea.invoke(m_item, Qt::QueuedConnection, Q_ARG(QSize, boundingRectSize)); + static const QMetaMethod setItemAreaAndDevicePixelRatio = setItemAreaAndDevicePixelRatioMethod(); + setItemAreaAndDevicePixelRatio.invoke(m_item, Qt::QueuedConnection, Q_ARG(QSize, boundingRectSize), + Q_ARG(qreal, m_window->effectiveDevicePixelRatio())); } // Rebuild FBO and textures if never created or a resize has occurred diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp index b99f6ae75..21f58e56d 100644 --- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp +++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp @@ -135,7 +135,8 @@ void Quick3DNodeInstantiatorPrivate::regenerate() } for (int i = 0; i < m_instanceModel->count(); i++) { - QObject *object = m_instanceModel->object(i, m_async); + QObject *object = m_instanceModel->object(i, m_async ? + QQmlIncubator::Asynchronous : QQmlIncubator::AsynchronousIfNested); // If the item was already created we won't get a createdItem if (object) _q_createdItem(i, object); @@ -202,7 +203,8 @@ void Quick3DNodeInstantiatorPrivate::_q_modelUpdated(const QQmlChangeSet &change m_objects = m_objects.mid(0, index) + movedObjects + m_objects.mid(index); } else for (int i = 0; i < insert.count; ++i) { int modelIndex = index + i; - QObject *obj = m_instanceModel->object(modelIndex, m_async); + QObject *obj = m_instanceModel->object(modelIndex, m_async ? + QQmlIncubator::Asynchronous : QQmlIncubator::AsynchronousIfNested); if (obj) _q_createdItem(modelIndex, obj); } |