summaryrefslogtreecommitdiff
path: root/basegfx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2022-07-14 14:33:09 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-07-14 19:11:22 +0200
commit1aaf5d44dceecc13a3bc8e08c13d0b2ba278c462 (patch)
tree0d6898446a62982b4abc370a1d845d7080c70843 /basegfx
parentc6eb8713438d1ba791fc858c8dc6e3d4d6583e0a (diff)
make B2DPolyPolygon thread-safe
which is cheaper than copying it when querying from UnoPolyPolygon Change-Id: If4661dfdff7e277d5ef25a8f0c937e549f8be9f1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137080 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'basegfx')
-rw-r--r--basegfx/source/polygon/b2dpolypolygon.cxx2
-rw-r--r--basegfx/source/tools/unopolypolygon.cxx7
2 files changed, 2 insertions, 7 deletions
diff --git a/basegfx/source/polygon/b2dpolypolygon.cxx b/basegfx/source/polygon/b2dpolypolygon.cxx
index a283828f661c..ad24ffa0b87c 100644
--- a/basegfx/source/polygon/b2dpolypolygon.cxx
+++ b/basegfx/source/polygon/b2dpolypolygon.cxx
@@ -205,7 +205,7 @@ public:
}
};
- static o3tl::cow_wrapper<ImplB2DPolyPolygon> DEFAULT;
+ static o3tl::cow_wrapper<ImplB2DPolyPolygon, o3tl::ThreadSafeRefCountingPolicy> DEFAULT;
B2DPolyPolygon::B2DPolyPolygon() :
mpPolyPolygon(DEFAULT) {}
diff --git a/basegfx/source/tools/unopolypolygon.cxx b/basegfx/source/tools/unopolypolygon.cxx
index 76341e6ea532..0c3b59abac9b 100644
--- a/basegfx/source/tools/unopolypolygon.cxx
+++ b/basegfx/source/tools/unopolypolygon.cxx
@@ -38,8 +38,6 @@ namespace basegfx::unotools
maPolyPoly(std::move( aPolyPoly )),
meFillRule( rendering::FillRule_EVEN_ODD )
{
- // or else races will haunt us.
- maPolyPoly.makeUnique();
}
void SAL_CALL UnoPolyPolygon::addPolyPolygon(
@@ -440,10 +438,7 @@ namespace basegfx::unotools
{
std::unique_lock const guard( m_aMutex );
- // detach result from us
- B2DPolyPolygon aRet( maPolyPoly );
- aRet.makeUnique();
- return aRet;
+ return maPolyPoly;
}
}