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(