drawinglayer/source/primitive2d/BufferedDecompositionFlusher.cxx |   15 
++++++----
 1 file changed, 10 insertions(+), 5 deletions(-)

New commits:
commit f8f5c1837c0382de40bdcbc5017e62ab13dbcb04
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Tue Apr 1 08:21:41 2025 +0200
Commit:     Noel Grandin <noelgran...@gmail.com>
CommitDate: Tue Apr 1 10:47:22 2025 +0200

    take solarmutex in BufferedDecompositionFlusher
    
    when clearing objects, I have seen a crash on macos which happens inside
    skia
    
    Change-Id: I8328439917339242d56d813f518e05bbd92adc60
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183572
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/drawinglayer/source/primitive2d/BufferedDecompositionFlusher.cxx 
b/drawinglayer/source/primitive2d/BufferedDecompositionFlusher.cxx
index 97f7696a7575..d65ea068bb2b 100644
--- a/drawinglayer/source/primitive2d/BufferedDecompositionFlusher.cxx
+++ b/drawinglayer/source/primitive2d/BufferedDecompositionFlusher.cxx
@@ -19,7 +19,7 @@
 
 #include <sal/config.h>
 #include <sal/log.hxx>
-
+#include <comphelper/solarmutex.hxx>
 #include <drawinglayer/primitive2d/BufferedDecompositionFlusher.hxx>
 
 namespace drawinglayer::primitive2d
@@ -128,10 +128,15 @@ void SAL_CALL BufferedDecompositionFlusher::run()
             }
         }
 
-        for (const auto& r : aRemoved1)
-            r->setBuffered2DDecomposition(nullptr);
-        for (const auto& r : aRemoved2)
-            r->setBuffered2DDecomposition(Primitive2DContainer{});
+        {
+            // some parts of skia do not take kindly to being accessed from 
multiple threads
+            osl::Guard<comphelper::SolarMutex> 
aGuard(comphelper::SolarMutex::get());
+
+            for (const auto& r : aRemoved1)
+                r->setBuffered2DDecomposition(nullptr);
+            for (const auto& r : aRemoved2)
+                r->setBuffered2DDecomposition(Primitive2DContainer{});
+        }
 
         wait(TimeValue(2, 0));
     }

Reply via email to