summaryrefslogtreecommitdiffstats
path: root/src/quick3d
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2018-01-12 14:17:40 +0000
committerSean Harmer <sean.harmer@kdab.com>2018-01-12 15:07:06 +0000
commit417b32815d5d6c45a6c8b4d38b62ca10119d14fd (patch)
tree5c910952affff3d376cbe84b7130be9ee7d6a577 /src/quick3d
parent1d5f8b8536c1b0165c2292529dc3814e96bb0a27 (diff)
parentc9edc164ab165ddd31ef2411be19deb130614e8b (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.cpp6
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem_p.h2
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer.cpp9
-rw-r--r--src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp6
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);
}