michael@0: diff --git a/gfx/cairo/cairo/src/cairo-xlib-surface.c b/gfx/cairo/cairo/src/cairo-xlib-surface.c michael@0: index f0de3c7..e24c962 100644 michael@0: --- a/gfx/cairo/cairo/src/cairo-xlib-surface.c michael@0: +++ b/gfx/cairo/cairo/src/cairo-xlib-surface.c michael@0: @@ -50,35 +50,36 @@ michael@0: #include "cairo-xlib-private.h" michael@0: #include "cairo-xlib-surface-private.h" michael@0: #include "cairo-clip-private.h" michael@0: #include "cairo-error-private.h" michael@0: #include "cairo-scaled-font-private.h" michael@0: #include "cairo-surface-snapshot-private.h" michael@0: #include "cairo-surface-subsurface-private.h" michael@0: #include "cairo-region-private.h" michael@0: +#include "cairo-xlib-xrender-private.h" michael@0: michael@0: #include /* for XDestroyImage */ michael@0: +#include /* for access to XDisplay's innards */ michael@0: michael@0: #define XLIB_COORD_MAX 32767 michael@0: michael@0: #define DEBUG 0 michael@0: michael@0: #if DEBUG michael@0: #define UNSUPPORTED(reason) \ michael@0: fprintf (stderr, \ michael@0: "cairo-xlib: hit unsupported operation %s(), line %d: %s\n", \ michael@0: __FUNCTION__, __LINE__, reason), \ michael@0: CAIRO_INT_STATUS_UNSUPPORTED michael@0: #else michael@0: #define UNSUPPORTED(reason) CAIRO_INT_STATUS_UNSUPPORTED michael@0: #endif michael@0: michael@0: #if DEBUG michael@0: -#include michael@0: static void CAIRO_PRINTF_FORMAT (2, 3) michael@0: _x_bread_crumb (Display *dpy, michael@0: const char *fmt, michael@0: ...) michael@0: { michael@0: xReq *req; michael@0: char buf[2048]; michael@0: unsigned int len, len_dwords; michael@0: @@ -4313,16 +4314,23 @@ _cairo_xlib_surface_add_glyph (cairo_xlib_display_t *display, michael@0: } michael@0: break; michael@0: default: michael@0: ASSERT_NOT_REACHED; michael@0: break; michael@0: } michael@0: /* XXX assume X server wants pixman padding. Xft assumes this as well */ michael@0: michael@0: + struct _XDisplay *dpy = (struct _XDisplay *) display->display; michael@0: + int req_length = sz_xRenderAddGlyphsReq + 4; michael@0: + if (req_length & 3) michael@0: + req_length += 4 - (req_length & 3); michael@0: + if (dpy->bufptr + req_length > dpy->bufmax) michael@0: + XFlush (display->display); michael@0: + michael@0: XRenderAddGlyphs (display->display, glyphset_info->glyphset, michael@0: &glyph_index, &glyph_info, 1, michael@0: (char *) data, michael@0: glyph_surface->stride * glyph_surface->height); michael@0: michael@0: if (data != glyph_surface->data) michael@0: free (data); michael@0: