vcl/unx/generic/gdi/x11cairotextrender.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
New commits: commit c55d703ea00de67793765f8da7ca17dfb54281fc Author: Caolán McNamara <caol...@redhat.com> Date: Tue Dec 15 12:35:05 2015 +0000 Related: tdf#99446 cairo text + xrender bodge (cherry picked from commit 1d18db339242a535d956b7e944ad1488fd2b4fd8) Change-Id: I926881bcfa4911f3d7f4899711be44a2f6d82026 Reviewed-on: https://gerrit.libreoffice.org/26087 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com> diff --git a/vcl/unx/generic/gdi/x11cairotextrender.cxx b/vcl/unx/generic/gdi/x11cairotextrender.cxx index 8734526..17cb462 100644 --- a/vcl/unx/generic/gdi/x11cairotextrender.cxx +++ b/vcl/unx/generic/gdi/x11cairotextrender.cxx @@ -42,6 +42,10 @@ struct _XRegion BOX extents; }; +#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 10, 0) +# define CAIRO_OPERATOR_DIFFERENCE (static_cast<cairo_operator_t>(23)) +#endif + X11CairoTextRender::X11CairoTextRender(X11SalGraphics& rParent) : mrParent(rParent) { @@ -78,6 +82,20 @@ cairo_t* X11CairoTextRender::getCairoContext() cairo_t *cr = cairo_create(surface); cairo_surface_destroy(surface); + + //rhbz#1283420 bodge to draw and undraw something which has the side effect + //of making the mysterious xrender related problem go away + if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 10, 0)) + { + cairo_save(cr); + cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); + cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE); + cairo_rectangle(cr, 0, 0, 1, 1); + cairo_fill_preserve(cr); + cairo_fill(cr); + cairo_restore(cr); + } + return cr; }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits