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();

Reply via email to