Do not continuously update camera

Only call updateCamera if camera properties have changed.

Pick-to: 6.9
Task-number: QTBUG-136174
Change-Id: I94f6c80e4c9e9e36a6399058bdd74866d2c0b202
Reviewed-by: Sakaria Pouke <sakaria.pouke@qt.io>
Reviewed-by: Kwanghyo Park <kwanghyo.park@qt.io>
(cherry picked from commit 7deeaa5196)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Tomi Korpipaa 2025-07-11 08:29:09 +03:00 committed by Qt Cherry-pick Bot
parent 4c96f4b0c4
commit aadd8fd9e7
2 changed files with 12 additions and 1 deletions

View File

@ -2685,7 +2685,10 @@ void QQuickGraphsItem::synchData()
m_changeTracker.axisZTitleOffsetChanged = false;
}
updateCamera();
if (m_changeTracker.cameraChanged) {
updateCamera();
m_changeTracker.cameraChanged = false;
}
QVector3D forward = camera()->forward();
auto targetRotation = cameraTarget()->eulerRotation();
@ -6279,6 +6282,7 @@ void QQuickGraphsItem::setCameraPreset(QtGraphs3D::CameraPreset preset)
connect(this, &QQuickGraphsItem::cameraYRotationChanged, m_scene, &Q3DScene::needRender);
connect(this, &QQuickGraphsItem::cameraZoomLevelChanged, m_scene, &Q3DScene::needRender);
}
m_changeTracker.cameraChanged = true;
}
void QQuickGraphsItem::setCameraXRotation(float rotation)
@ -6290,6 +6294,7 @@ void QQuickGraphsItem::setCameraXRotation(float rotation)
if (rotation != m_xRotation) {
m_xRotation = rotation;
qCDebug(lcEvents3D, "%s x rotation: %.1f ", qUtf8Printable(QLatin1String(__FUNCTION__)), rotation);
m_changeTracker.cameraChanged = true;
emit cameraXRotationChanged(m_xRotation);
}
}
@ -6303,6 +6308,7 @@ void QQuickGraphsItem::setCameraYRotation(float rotation)
if (rotation != m_yRotation) {
m_yRotation = rotation;
qCDebug(lcEvents3D, "%s y rotation: %.1f ", qUtf8Printable(QLatin1String(__FUNCTION__)), rotation);
m_changeTracker.cameraChanged = true;
emit cameraYRotationChanged(m_yRotation);
}
}
@ -6441,6 +6447,7 @@ void QQuickGraphsItem::setCameraZoomLevel(float level)
m_zoomLevel = level;
qCDebug(lcEvents3D, "%s zoom level: %.1f", qUtf8Printable(QLatin1String(__FUNCTION__)), level);
m_changeTracker.cameraChanged = true;
emit cameraZoomLevelChanged(level);
}
@ -6489,6 +6496,7 @@ void QQuickGraphsItem::setCameraTargetPosition(QVector3D target)
m_requestedTarget.setX(std::clamp(target.x(), -1.0f, 1.0f));
m_requestedTarget.setY(std::clamp(target.y(), -1.0f, 1.0f));
m_requestedTarget.setZ(std::clamp(target.z(), -1.0f, 1.0f));
m_changeTracker.cameraChanged = true;
emit cameraTargetPositionChanged(target);
}
@ -7082,6 +7090,7 @@ void QQuickGraphsItem::setUpCamera()
setCamera(m_oCamera);
else
setCamera(m_pCamera);
m_changeTracker.cameraChanged = true;
}
void QQuickGraphsItem::setUpLight()

View File

@ -101,6 +101,7 @@ struct Abstract3DChangeBitField
bool labelMarginChanged : 1;
bool radialLabelOffsetChanged : 1;
bool marginChanged : 1;
bool cameraChanged : 1;
Abstract3DChangeBitField()
: themeChanged(true)
@ -156,6 +157,7 @@ struct Abstract3DChangeBitField
, labelMarginChanged(true)
, radialLabelOffsetChanged(true)
, marginChanged(true)
, cameraChanged(true)
{}
};