[cairo] [PATCH 1/6] [gl] Fix the glyph cache full flush to really try again.
Eric Anholt
eric at anholt.net
Wed Jan 13 16:08:04 PST 2010
Previously, the initial error handling would dump through to software
fallback instead of retrying in the following code.
---
src/cairo-gl-glyphs.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/cairo-gl-glyphs.c b/src/cairo-gl-glyphs.c
index 4370fdb..47a8b5d 100644
--- a/src/cairo-gl-glyphs.c
+++ b/src/cairo-gl-glyphs.c
@@ -478,17 +478,15 @@ _render_glyphs (cairo_gl_surface_t *dst,
if (scaled_glyph->surface_private == NULL) {
status = _cairo_gl_glyph_cache_add_glyph (cache, scaled_glyph);
- if (unlikely (_cairo_status_is_error (status)))
- goto FINISH;
if (status == CAIRO_INT_STATUS_UNSUPPORTED) {
/* Cache is full, so flush existing prims and try again. */
_cairo_gl_flush_glyphs (ctx, &setup);
_cairo_gl_glyph_cache_unlock (cache);
+ status = _cairo_gl_glyph_cache_add_glyph (cache, scaled_glyph);
}
- status = _cairo_gl_glyph_cache_add_glyph (cache, scaled_glyph);
- if (unlikely (status))
+ if (unlikely (_cairo_status_is_error (status)))
goto FINISH;
}
--
1.6.5.7
More information about the cairo
mailing list