summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Rivas Costa <rodrigorivascosta@gmail.com>2014-08-19 00:09:50 +0930
committerAdrian Johnson <ajohnson@redneon.com>2014-08-19 00:09:50 +0930
commit932548ef25864958ef966ffe83e7c945c3ff3cd4 (patch)
treef9b092b42f4ea6d4addcb6d1bd1442b28c76757e
parent7736d08e22ffd7ab9968617164c7e027125b7755 (diff)
downloadcairo-932548ef25864958ef966ffe83e7c945c3ff3cd4.tar.gz
win32 print: fix cache_frozen assertions
Bug 81709
-rw-r--r--src/win32/cairo-win32-printing-surface.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/win32/cairo-win32-printing-surface.c b/src/win32/cairo-win32-printing-surface.c
index be91445cf..c0a096cae 100644
--- a/src/win32/cairo-win32-printing-surface.c
+++ b/src/win32/cairo-win32-printing-surface.c
@@ -1578,14 +1578,18 @@ _cairo_win32_printing_surface_show_glyphs (void *abstract_surfac
* CAIRO_INT_STATUS_UNSUPPORTED and a fallback image will be
* used.
*/
+ _cairo_scaled_font_freeze_cache (scaled_font);
for (i = 0; i < num_glyphs; i++) {
status = _cairo_scaled_glyph_lookup (scaled_font,
glyphs[i].index,
CAIRO_SCALED_GLYPH_INFO_PATH,
&scaled_glyph);
if (status)
- return status;
+ break;
}
+ _cairo_scaled_font_thaw_cache (scaled_font);
+ if (status)
+ return status;
return _cairo_win32_printing_surface_analyze_operation (surface, op, source);
}
@@ -1623,6 +1627,7 @@ _cairo_win32_printing_surface_show_glyphs (void *abstract_surfac
old_has_ctm = surface->has_ctm;
surface->has_ctm = TRUE;
surface->path_empty = TRUE;
+ _cairo_scaled_font_freeze_cache (scaled_font);
BeginPath (surface->win32.dc);
for (i = 0; i < num_glyphs; i++) {
status = _cairo_scaled_glyph_lookup (scaled_font,
@@ -1636,6 +1641,7 @@ _cairo_win32_printing_surface_show_glyphs (void *abstract_surfac
status = _cairo_win32_printing_surface_emit_path (surface, scaled_glyph->path);
}
EndPath (surface->win32.dc);
+ _cairo_scaled_font_thaw_cache (scaled_font);
surface->ctm = old_ctm;
surface->has_ctm = old_has_ctm;
if (status == CAIRO_STATUS_SUCCESS && surface->path_empty == FALSE) {