Support buffering SystemDependent GraphicData (II)

Desktop / LibreOffice - Armin Le Grand [cib.de] - 13 September 2018 06:49 EDT

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

7034311dce66 Support buffering SystemDependent GraphicData (II)
basegfx/source/polygon/b2dpolygon.cxx | 3 +-
basegfx/source/polygon/b2dpolypolygon.cxx | 69 +++++-
.../source/processor2d/vclpixelprocessor2d.cxx | 8 +-
include/basegfx/polygon/b2dpolypolygon.hxx | 20 ++
include/vcl/outdev.hxx | 7 +-
.../view/SlsInsertionIndicatorOverlay.cxx | 1 +
vcl/headless/svpgdi.cxx | 152 ++++++-------
vcl/inc/headless/svpgdi.hxx | 10 +-
vcl/inc/openglgdiimpl.hxx | 6 +-
vcl/inc/qt5/Qt5Graphics.hxx | 3 +-
vcl/inc/quartz/salgdi.h | 5 +-
vcl/inc/salgdi.hxx | 12 +-
vcl/inc/salgdiimpl.hxx | 6 +-
vcl/inc/svdata.hxx | 6 +
vcl/inc/unx/genpspgraphics.h | 8 +-
vcl/inc/unx/salgdi.h | 5 +-
vcl/inc/win/salgdi.h | 5 +-
vcl/opengl/gdiimpl.cxx | 28 ++-
vcl/qt5/Qt5Graphics_GDI.cxx | 9 +-
vcl/quartz/salgdicommon.cxx | 14 +-
vcl/source/app/scheduler.cxx | 2 +-
vcl/source/app/svdata.cxx | 132 ++++++++++++
vcl/source/app/svmain.cxx | 6 +-
vcl/source/gdi/salgdilayout.cxx | 175 ++++-----------
vcl/source/outdev/line.cxx | 10 +-
vcl/source/outdev/polygon.cxx | 67 +++---
vcl/source/outdev/polyline.cxx | 28 ---
vcl/source/outdev/transparent.cxx | 45 ++--
vcl/unx/generic/gdi/gdiimpl.cxx | 27 ++-
vcl/unx/generic/gdi/gdiimpl.hxx | 6 +-
vcl/unx/generic/gdi/salgdi.cxx | 21 +-
vcl/unx/generic/print/genpspgraphics.cxx | 5 +-
vcl/win/gdi/gdiimpl.cxx | 238 ++++++++++++++-------
vcl/win/gdi/gdiimpl.hxx | 6 +-
vcl/win/gdi/salbmp.cxx | 2 +-
vcl/win/gdi/salgdi_gdiplus.cxx | 10 +-
36 files changed, 733 insertions(+), 424 deletions(-)

Upstream: cgit.freedesktop.org


  • Share