svx/source/engine3d/scene3d.cxx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
New commits: commit 18bde21b1d700bbf97e001a13ba9389dc7f9efc7 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Sep 8 19:49:30 2025 +0200 Commit: Noel Grandin <noelgran...@gmail.com> CommitDate: Mon Sep 8 21:12:26 2025 +0200 tdf#148988 X-Y Lines (scatter) -> 3 D lines freezes chart dialog speed up invalidation of 3-d graphs. Goes from several seconds to 1 second. We had a kind of O(n^2) problem, where we would invalidate a sub-tree, then call the parent, and the parent would invalidate the whole subtree, then call it's parent.... Change-Id: I8f36f180a9715a1a401e1f16579201e1d141bb60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190683 Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> Tested-by: Jenkins diff --git a/svx/source/engine3d/scene3d.cxx b/svx/source/engine3d/scene3d.cxx index eb3219ea9888..56c39b5a8103 100644 --- a/svx/source/engine3d/scene3d.cxx +++ b/svx/source/engine3d/scene3d.cxx @@ -372,7 +372,10 @@ void E3dScene::StructureChanged() if(nullptr != pScene && !pScene->mbSkipSettingDirty) { - SetBoundAndSnapRectsDirty(); + // Only set dirty from the root object, since setting dirty is recursive + // and we only want to walk the tree once. + if(getParentE3dSceneFromE3dObject() == nullptr) + SetBoundAndSnapRectsDirty(); } ImpCleanup3DDepthMapper();