1Date:   Thu Jan 5 18:40:01 2012 -0500
2
3Bug 715704. Add a quartz implementation of mark_dirty_rectangle. r=roc
4
5We need to drop our CGImage cache when the surface has been changed by outside users.
6
7diff --git a/gfx/cairo/cairo/src/cairo-quartz-surface.c b/gfx/cairo/cairo/src/cairo-quartz-surface.c
8--- a/gfx/cairo/cairo/src/cairo-quartz-surface.c
9+++ b/gfx/cairo/cairo/src/cairo-quartz-surface.c
10@@ -3116,16 +3116,27 @@ _cairo_quartz_surface_clipper_intersect_
11 	    CGContextEOClip (surface->cgContext);
12     }
13
14     ND((stderr, "-- intersect_clip_path\n"));
15
16     return CAIRO_STATUS_SUCCESS;
17 }
18
19+static cairo_status_t
20+_cairo_quartz_surface_mark_dirty_rectangle (void *abstract_surface,
21+					    int x, int y,
22+					    int width, int height)
23+{
24+    cairo_quartz_surface_t *surface = (cairo_quartz_surface_t *) abstract_surface;
25+    _cairo_quartz_surface_will_change (surface);
26+    return CAIRO_STATUS_SUCCESS;
27+}
28+
29+
30 // XXXtodo implement show_page; need to figure out how to handle begin/end
31
32 static const struct _cairo_surface_backend cairo_quartz_surface_backend = {
33     CAIRO_SURFACE_TYPE_QUARTZ,
34     _cairo_quartz_surface_create_similar,
35     _cairo_quartz_surface_finish,
36     _cairo_quartz_surface_acquire_image,
37     _cairo_quartz_surface_release_source_image,
38@@ -3138,17 +3149,17 @@ static const struct _cairo_surface_backe
39     NULL, /* create_span_renderer */
40     NULL, /* check_span_renderer */
41     NULL, /* copy_page */
42     NULL, /* show_page */
43     _cairo_quartz_surface_get_extents,
44     NULL, /* old_show_glyphs */
45     NULL, /* get_font_options */
46     NULL, /* flush */
47-    NULL, /* mark_dirty_rectangle */
48+    _cairo_quartz_surface_mark_dirty_rectangle,
49     NULL, /* scaled_font_fini */
50     NULL, /* scaled_glyph_fini */
51
52     _cairo_quartz_surface_paint,
53     _cairo_quartz_surface_mask,
54     _cairo_quartz_surface_stroke,
55     _cairo_quartz_surface_fill,
56     _cairo_quartz_surface_show_glyphs,
57