From 7034311dce663c895577267110baadbec312d491 Mon Sep 17 00:00:00 2001 From: Armin Le Grand Date: Thu, 6 Sep 2018 18:15:02 +0200 Subject: Support buffering SystemDependent GraphicData (II) In this step I have changed all calls that use a B2DPolyPolygon and do filled graphics, added support for providing needed transformation which will -if supported- be used. Added buffering of SystemDependentData at B2DPolyPolygon for that purpose, see comments describing the current possibilities in the Gdiplus implementation. Moved lifetime creation/cleanup of SystemDependentDataManager to ImplSVData due to cleanup problems in the clang build Tried to use a std::unique_ptr to hold the instance of a SystemDependentDataBuffer at ImplSVData and cleanup inside DeInitVCL() right before ::ImplDeInitScheduler. This works in principle, but scheduler shutdown triggers ProcessEventsToIdle which leads to repaints and re-creates the buffer. Will now do exactly as was done with GdiPlusBuffer before, a simple local static incarnation and a call to SetStatic() in constructor Splitted SystemDependentDataBuffer and Timer due to different LifeTimes. Timer needs to be destructed earlier than SystemDependentDataBuffer, before Scheduler::ImplDeInitScheduler() is called from DeInitVCL() Change-Id: I2134e4346a183a4cee1be3428c51541cc8867c11 Reviewed-on: https://gerrit.libreoffice.org/60102 Tested-by: Jenkins Reviewed-by: Armin Le Grand --- vcl/inc/unx/genpspgraphics.h | 8 ++++++-- vcl/inc/unx/salgdi.h | 5 ++++- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'vcl/inc/unx') diff --git a/vcl/inc/unx/genpspgraphics.h b/vcl/inc/unx/genpspgraphics.h index 3f6bae6c0744..bddcb888ebc6 100644 --- a/vcl/inc/unx/genpspgraphics.h +++ b/vcl/inc/unx/genpspgraphics.h @@ -126,8 +126,12 @@ public: virtual void drawPolyPolygon( sal_uInt32 nPoly, const sal_uInt32* pPoints, PCONSTSALPOINT* pPtAry ) override; - virtual bool drawPolyPolygon( const basegfx::B2DPolyPolygon&, - double fTransparency ) override; + + virtual bool drawPolyPolygon( + const basegfx::B2DHomMatrix& rObjectToDevice, + const basegfx::B2DPolyPolygon&, + double fTransparency) override; + virtual bool drawPolyLine( const basegfx::B2DHomMatrix& rObjectToDevice, const basegfx::B2DPolygon&, diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h index 8b73c4583243..d6054eae4b4c 100644 --- a/vcl/inc/unx/salgdi.h +++ b/vcl/inc/unx/salgdi.h @@ -160,7 +160,10 @@ public: const sal_uInt32* pPoints, PCONSTSALPOINT* pPtAry ) override; - virtual bool drawPolyPolygon( const basegfx::B2DPolyPolygon&, double fTransparency ) override; + virtual bool drawPolyPolygon( + const basegfx::B2DHomMatrix& rObjectToDevice, + const basegfx::B2DPolyPolygon&, + double fTransparency) override; virtual bool drawPolyLine( const basegfx::B2DHomMatrix& rObjectToDevice, -- cgit