summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2022-10-10 08:30:40 +0200
committerPaul Lemire <paul.lemire@kdab.com>2022-11-16 12:55:09 +0200
commit66cbe2ab7dceccb6570ad4380874f7c1da957bf7 (patch)
tree0686733533309d8547dd18d5faa70cd202785159
parent993a508b62964ab6e1a71dcda44dcbf68e149d4c (diff)
Scene3DItem: increase number of frames needed to flush pipeline
It appears 2 frames is not always enough. 3 looks to be enough. The number of frames can now also be controlled by the QT3D_SCENE3D_FRAMES_FLUSH_COUNT environment variable. Change-Id: I47a2ff6df47fd4dedeb8bd2aacdb9ef43c4e2a9a Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem.cpp8
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem_p.h2
2 files changed, 9 insertions, 1 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp
index 0a5d1f079..ce6251286 100644
--- a/src/quick3d/imports/scene3d/scene3ditem.cpp
+++ b/src/quick3d/imports/scene3d/scene3ditem.cpp
@@ -200,6 +200,9 @@ private:
expression that depends on property updates driven by the Qt 3D simulation
loop (FrameAction) will never reavaluates.
*/
+
+qint8 Scene3DItem::ms_framesNeededToFlushPipeline = 3;
+
Scene3DItem::Scene3DItem(QQuickItem *parent)
: QQuickItem(parent)
, m_entity(nullptr)
@@ -230,6 +233,11 @@ Scene3DItem::Scene3DItem(QQuickItem *parent)
// we still won't get ignored by the QtQuick SG when in Underlay mode
setWidth(1);
setHeight(1);
+
+ const QByteArray framesToFlushCountEnvVar = qgetenv("QT3D_SCENE3D_FRAMES_FLUSH_COUNT");
+ if (!framesToFlushCountEnvVar.isEmpty()) {
+ ms_framesNeededToFlushPipeline = framesToFlushCountEnvVar.toInt();
+ }
}
Scene3DItem::~Scene3DItem()
diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h
index 827f6c29d..c2f4d1431 100644
--- a/src/quick3d/imports/scene3d/scene3ditem_p.h
+++ b/src/quick3d/imports/scene3d/scene3ditem_p.h
@@ -171,7 +171,7 @@ private:
QMetaObject::Connection m_windowConnection;
qint8 m_framesToRender;
- static const qint8 ms_framesNeededToFlushPipeline = 2;
+ static qint8 ms_framesNeededToFlushPipeline;
};
} // Qt3DRender