diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2018-01-17 11:49:32 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2018-01-17 11:49:32 +0000 |
commit | b420edb0b5e914b83c35a071b371d0759eba4d3d (patch) | |
tree | e84852a8c44a18fe6aeadf29cba5dcdefe8e9e58 /src/quick3d | |
parent | 24b2599b91c51ae4b7f2c161cf46696bbde67624 (diff) | |
parent | e9594f27ccad5667ebc27451f87184296c5cd297 (diff) |
Merge branch '5.10' into dev
Conflicts:
.qmake.conf
Change-Id: I248aa369ba98659a61e563fd29cc811c76ea1e2d
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 39e679961..4106ff459 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); } |