[Libreoffice-commits] core.git: vcl/headless vcl/unx

Caolán McNamara caolanm at redhat.com
Tue Feb 2 14:57:23 UTC 2016


 vcl/headless/svpcairotextrender.cxx              |    4 +++-
 vcl/unx/generic/gdi/cairotextrender.cxx          |    2 --
 vcl/unx/generic/gdi/openglx11cairotextrender.cxx |    6 ++++++
 vcl/unx/generic/gdi/x11cairotextrender.cxx       |    3 ++-
 4 files changed, 11 insertions(+), 4 deletions(-)

New commits:
commit 1a1ee2f6e5b8215ad5f7bcdcb13f5fdce5784b2e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Feb 1 12:08:43 2016 +0000

    move CairoTextRender cleanup to callers
    
    so releaseCairoContext is a mirror of getCairoContext, so callers that don't
    need to flush can drop that explicit call
    
    Not sure, now that I see it, how there's been no sign of any problem with no
    damage of the affected text area under gtk3
    
    Change-Id: I8e508160be4102c64a0ecdf5591b6999f9171c36

diff --git a/vcl/headless/svpcairotextrender.cxx b/vcl/headless/svpcairotextrender.cxx
index 3109a75..9468793 100644
--- a/vcl/headless/svpcairotextrender.cxx
+++ b/vcl/headless/svpcairotextrender.cxx
@@ -9,6 +9,7 @@
 
 #include "headless/svpcairotextrender.hxx"
 #include "headless/svpgdi.hxx"
+#include <cairo.h>
 
 SvpCairoTextRender::SvpCairoTextRender(SvpSalGraphics& rParent)
     : mrParent(rParent)
@@ -36,8 +37,9 @@ void SvpCairoTextRender::clipRegion(cairo_t* cr)
     mrParent.clipRegion(cr);
 }
 
-void SvpCairoTextRender::releaseCairoContext(cairo_t*)
+void SvpCairoTextRender::releaseCairoContext(cairo_t* cr)
 {
+    mrParent.releaseCairoContext(cr, false, basegfx::B2DRange());
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx
index 3c95849..747791d 100644
--- a/vcl/unx/generic/gdi/cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/cairotextrender.cxx
@@ -344,9 +344,7 @@ void CairoTextRender::DrawServerFontLayout( const ServerFontLayout& rLayout )
         aI = aNext;
     }
 
-    cairo_surface_flush(cairo_get_target(cr));
     releaseCairoContext(cr);
-    cairo_destroy(cr);
 }
 
 const FontCharMapPtr CairoTextRender::GetFontCharMap() const
diff --git a/vcl/unx/generic/gdi/openglx11cairotextrender.cxx b/vcl/unx/generic/gdi/openglx11cairotextrender.cxx
index d5350e9..0c8ac0d 100644
--- a/vcl/unx/generic/gdi/openglx11cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/openglx11cairotextrender.cxx
@@ -60,11 +60,15 @@ void OpenGLX11CairoTextRender::releaseCairoContext(cairo_t* cr)
     // XXX: lfrb: GLES 2.0 doesn't support GL_UNSIGNED_INT_8_8_8_8_REV
     OpenGLSalGraphicsImpl *pImpl = dynamic_cast< OpenGLSalGraphicsImpl* >(mrParent.GetImpl());
     if(!pImpl)
+    {
+        cairo_destroy(cr);
         return;
+    }
 
     cairo_surface_t* pSurface = cairo_get_target(cr);
     int nWidth = cairo_image_surface_get_width( pSurface );
     int nHeight = cairo_image_surface_get_height( pSurface );
+    cairo_surface_flush(pSurface);
     unsigned char *pSrc = cairo_image_surface_get_data( pSurface );
 
     // XXX: lfrb: GLES 2.0 doesn't support GL_UNSIGNED_INT_8_8_8_8_REV
@@ -78,6 +82,8 @@ void OpenGLX11CairoTextRender::releaseCairoContext(cairo_t* cr)
     pImpl->PreDraw();
     pImpl->DrawAlphaTexture( aTexture, aRect, true, true );
     pImpl->PostDraw();
+
+    cairo_destroy(cr);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/generic/gdi/x11cairotextrender.cxx b/vcl/unx/generic/gdi/x11cairotextrender.cxx
index dc1797f..5a2b095 100644
--- a/vcl/unx/generic/gdi/x11cairotextrender.cxx
+++ b/vcl/unx/generic/gdi/x11cairotextrender.cxx
@@ -146,8 +146,9 @@ size_t X11CairoTextRender::GetHeight() const
         return 1;
 }
 
-void X11CairoTextRender::releaseCairoContext(cairo_t* /*cr*/)
+void X11CairoTextRender::releaseCairoContext(cairo_t* cr)
 {
+    cairo_destroy(cr);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list