sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx              |    2 +-
 sd/source/ui/slidesorter/view/SlideSorterView.cxx              |    3 +--
 sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx |    2 +-
 sd/source/ui/slidesorter/view/SlsLayouter.cxx                  |    8 ++++----
 sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx         |    6 +++---
 tsan-suppress.txt                                              |    3 +++
 6 files changed, 13 insertions(+), 11 deletions(-)

New commits:
commit 521634b6dd27df6bdbbedbd8dc308751b8716f8b
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Tue Jul 1 11:56:50 2025 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Jul 1 13:56:54 2025 +0200

    update TSAN suppression file for new static SimpleReferenceObject flag
    
    Change-Id: Ief0e5e6ef9aefed58582cbc1d96c83bec3351858
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187234
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/tsan-suppress.txt b/tsan-suppress.txt
index 22bbfc355fc0..7cdf58ea3149 100644
--- a/tsan-suppress.txt
+++ b/tsan-suppress.txt
@@ -38,6 +38,9 @@ race:rtl::str::release<_rtl_uString>
 race:rtl_uString_acquire
 race:rtl_uString_release
 race:rtl_uString_assign
+# similar static flag
+race:SimpleReferenceObject::acquire
+race:SimpleReferenceObject::release
 
 # I've convinced myself this is a false+, caused by ping-ponging the buffer 
between two
 # threads, but I might be wrong.
commit a83f71dfe38b953a145e7ddd0fe4bd66e6713c6e
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Jun 30 13:58:36 2025 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Tue Jul 1 13:56:44 2025 +0200

    PageObjectLayouter can be held by unique_ptr
    
    Change-Id: I3323ca198d534d673772e7cdc10f04a12e6f9376
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187213
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins

diff --git a/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx 
b/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx
index 3a5d31f1b2c7..2629d15b574f 100644
--- a/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx
+++ b/sd/source/ui/slidesorter/inc/view/SlsLayouter.hxx
@@ -66,7 +66,7 @@ public:
         const std::shared_ptr<Theme>& rpTheme);
     ~Layouter();
 
-    std::shared_ptr<PageObjectLayouter> const & GetPageObjectLayouter() const;
+    PageObjectLayouter* GetPageObjectLayouter() const;
     /** Set the interval of valid column counts.  When nMinimalColumnCount
         <= nMaximalColumnCount is not fulfilled then the call is ignored.
         @param nMinimalColumnCount
diff --git a/sd/source/ui/slidesorter/view/SlideSorterView.cxx 
b/sd/source/ui/slidesorter/view/SlideSorterView.cxx
index db01b437ec74..463a3bb38372 100644
--- a/sd/source/ui/slidesorter/view/SlideSorterView.cxx
+++ b/sd/source/ui/slidesorter/view/SlideSorterView.cxx
@@ -383,8 +383,7 @@ void SlideSorterView::Layout ()
         pWindow->SetViewOrigin (aViewBox.TopLeft());
         pWindow->SetViewSize (aViewBox.GetSize());
 
-        std::shared_ptr<PageObjectLayouter> pPageObjectLayouter(
-            mpLayouter->GetPageObjectLayouter());
+        PageObjectLayouter* 
pPageObjectLayouter(mpLayouter->GetPageObjectLayouter());
         if (pPageObjectLayouter)
         {
             const Size aNewPreviewSize 
(mpLayouter->GetPageObjectLayouter()->GetPreviewSize());
diff --git a/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx 
b/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx
index a5f768bfb2f8..b6fa34d93ca9 100644
--- a/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx
+++ b/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx
@@ -105,7 +105,7 @@ void InsertionIndicatorOverlay::Create (
     const sal_Int32 nSelectionCount)
 {
     view::Layouter& rLayouter (mrSlideSorter.GetView().GetLayouter());
-    const std::shared_ptr<view::PageObjectLayouter>& pPageObjectLayouter (
+    view::PageObjectLayouter* pPageObjectLayouter (
         rLayouter.GetPageObjectLayouter());
     std::shared_ptr<view::Theme> pTheme (mrSlideSorter.GetTheme());
     const Size aOriginalPreviewSize (pPageObjectLayouter->GetPreviewSize());
diff --git a/sd/source/ui/slidesorter/view/SlsLayouter.cxx 
b/sd/source/ui/slidesorter/view/SlsLayouter.cxx
index 81012c5c7b41..203e8a380bd8 100644
--- a/sd/source/ui/slidesorter/view/SlsLayouter.cxx
+++ b/sd/source/ui/slidesorter/view/SlsLayouter.cxx
@@ -59,7 +59,7 @@ public:
     /// rows.
     sal_Int32 mnMaxRowCount;
     Size maPageObjectSize;
-    std::shared_ptr<PageObjectLayouter> mpPageObjectLayouter;
+    std::unique_ptr<PageObjectLayouter> mpPageObjectLayouter;
     std::shared_ptr<view::Theme> mpTheme;
 
     /** Specify how the gap between two page objects is associated with the
@@ -303,9 +303,9 @@ Layouter::~Layouter()
 {
 }
 
-std::shared_ptr<PageObjectLayouter> const & Layouter::GetPageObjectLayouter() 
const
+PageObjectLayouter* Layouter::GetPageObjectLayouter() const
 {
-    return mpImplementation->mpPageObjectLayouter;
+    return mpImplementation->mpPageObjectLayouter.get();
 }
 
 void Layouter::SetColumnCount (
@@ -517,7 +517,7 @@ bool Layouter::Implementation::Rearrange (
     }
 
     mpPageObjectLayouter =
-        std::make_shared<PageObjectLayouter>(
+        std::make_unique<PageObjectLayouter>(
             CalculateTargetSize(rWindowSize),
             rPreviewModelSize,
             mpWindow,
diff --git a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx 
b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
index 8cd6d3e87cc9..417be4ddd581 100644
--- a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
+++ b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
@@ -67,7 +67,7 @@ void PageObjectPainter::PaintPageObject (
     if (!UpdatePageObjectLayouter())
         return;
 
-    PageObjectLayouter *pPageObjectLayouter = 
mrLayouter.GetPageObjectLayouter().get();
+    PageObjectLayouter *pPageObjectLayouter = 
mrLayouter.GetPageObjectLayouter();
     // Turn off antialiasing to avoid the bitmaps from being
     // shifted by fractions of a pixel and thus show blurry edges.
     const AntialiasingFlags nSavedAntialiasingMode (rDevice.GetAntialiasing());
@@ -86,7 +86,7 @@ bool PageObjectPainter::UpdatePageObjectLayouter()
 {
     // The page object layouter is quite volatile. It may have been replaced
     // since the last call.  Update it now.
-    PageObjectLayouter *pPageObjectLayouter = 
mrLayouter.GetPageObjectLayouter().get();
+    PageObjectLayouter *pPageObjectLayouter = 
mrLayouter.GetPageObjectLayouter();
     if ( ! pPageObjectLayouter)
     {
         OSL_FAIL("no page object layouter");
@@ -185,7 +185,7 @@ BitmapEx PageObjectPainter::GetPreviewBitmap (
 
     if (bIsExcluded)
     {
-        PageObjectLayouter *pPageObjectLayouter = 
mrLayouter.GetPageObjectLayouter().get();
+        PageObjectLayouter *pPageObjectLayouter = 
mrLayouter.GetPageObjectLayouter();
 
         BitmapEx aMarkedPreview (mpCache->GetMarkedPreviewBitmap(pPage));
         const ::tools::Rectangle aPreviewBox 
(pPageObjectLayouter->GetBoundingBox(

Reply via email to