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