Index: gfx/cairo/cairo/src/cairo-xlib-surface.c =================================================================== RCS file: /cvsroot/mozilla/gfx/cairo/cairo/src/cairo-xlib-surface.c,v retrieving revision 1.11 diff -u -8 -p -r1.11 cairo-xlib-surface.c --- gfx/cairo/cairo/src/cairo-xlib-surface.c 28 Mar 2006 02:29:07 -0000 1.11 +++ gfx/cairo/cairo/src/cairo-xlib-surface.c 18 May 2006 15:59:02 -0000 @@ -2607,16 +2607,18 @@ _cairo_xlib_surface_show_glyphs (void goto FAIL; } status = _cairo_xlib_surface_set_attributes (src, &attributes); if (status) goto FAIL; /* Send all unsent glyphs to the server, and count the max of the glyph indices */ + _cairo_cache_freeze(scaled_font->glyphs); + for (i = 0; i < num_glyphs; i++) { if (glyphs[i].index > max_index) max_index = glyphs[i].index; status = _cairo_scaled_glyph_lookup (scaled_font, glyphs[i].index, CAIRO_SCALED_GLYPH_INFO_SURFACE, &scaled_glyph); if (status != CAIRO_STATUS_SUCCESS) @@ -2650,16 +2652,18 @@ _cairo_xlib_surface_show_glyphs (void status = show_glyphs_func (dst, op, src, attributes.x_offset, attributes.y_offset, glyphs_chunk, chunk_size, scaled_font); if (status != CAIRO_STATUS_SUCCESS) break; } + _cairo_cache_thaw(scaled_font->glyphs); + FAIL: if (src) _cairo_pattern_release_surface (src_pattern, &src->base, &attributes); if (src_pattern == &solid_pattern.base) _cairo_pattern_fini (&solid_pattern.base); return status; }