1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/cairo/expose-snapshot.patch Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,528 @@ 1.4 +diff --git a/gfx/cairo/cairo/src/cairo-analysis-surface-private.h b/gfx/cairo/cairo/src/cairo-analysis-surface-private.h 1.5 +--- a/gfx/cairo/cairo/src/cairo-analysis-surface-private.h 1.6 ++++ b/gfx/cairo/cairo/src/cairo-analysis-surface-private.h 1.7 +@@ -65,14 +65,11 @@ _cairo_analysis_surface_has_unsupported 1.8 + cairo_private void 1.9 + _cairo_analysis_surface_get_bounding_box (cairo_surface_t *surface, 1.10 + cairo_box_t *bbox); 1.11 + 1.12 + cairo_private cairo_int_status_t 1.13 + _cairo_analysis_surface_merge_status (cairo_int_status_t status_a, 1.14 + cairo_int_status_t status_b); 1.15 + 1.16 +-cairo_private cairo_surface_t * 1.17 +-_cairo_null_surface_create (cairo_content_t content); 1.18 +- 1.19 + CAIRO_END_DECLS 1.20 + 1.21 + #endif /* CAIRO_ANALYSIS_SURFACE_H */ 1.22 +diff --git a/gfx/cairo/cairo/src/cairo-analysis-surface.c b/gfx/cairo/cairo/src/cairo-analysis-surface.c 1.23 +--- a/gfx/cairo/cairo/src/cairo-analysis-surface.c 1.24 ++++ b/gfx/cairo/cairo/src/cairo-analysis-surface.c 1.25 +@@ -902,17 +902,17 @@ static const cairo_surface_backend_t cai 1.26 + NULL, /* fill_stroke */ 1.27 + NULL, /* create_solid_pattern_surface */ 1.28 + NULL, /* can_repaint_solid_pattern_surface */ 1.29 + NULL, /* has_show_text_glyphs */ 1.30 + NULL /* show_text_glyphs */ 1.31 + }; 1.32 + 1.33 + cairo_surface_t * 1.34 +-_cairo_null_surface_create (cairo_content_t content) 1.35 ++cairo_null_surface_create (cairo_content_t content) 1.36 + { 1.37 + cairo_surface_t *surface; 1.38 + 1.39 + surface = malloc (sizeof (cairo_surface_t)); 1.40 + if (unlikely (surface == NULL)) { 1.41 + return _cairo_surface_create_in_error (_cairo_error (CAIRO_STATUS_NO_MEMORY)); 1.42 + } 1.43 + 1.44 +diff --git a/gfx/cairo/cairo/src/cairo-d2d-surface.cpp b/gfx/cairo/cairo/src/cairo-d2d-surface.cpp 1.45 +--- a/gfx/cairo/cairo/src/cairo-d2d-surface.cpp 1.46 ++++ b/gfx/cairo/cairo/src/cairo-d2d-surface.cpp 1.47 +@@ -1951,24 +1951,24 @@ _cairo_d2d_create_brush_for_pattern(cair 1.48 + rect = D2D1::RectU(1, 1, srcSurf->width + 1, srcSurf->height + 1); 1.49 + } else { 1.50 + rect = D2D1::RectU(0, 0, srcSurf->width, srcSurf->height); 1.51 + } 1.52 + sourceBitmap->CopyFromMemory(&rect, 1.53 + srcSurf->data, 1.54 + srcSurf->stride); 1.55 + cairo_surface_t *nullSurf = 1.56 +- _cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA); 1.57 ++ cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA); 1.58 + cachebitmap->refs++; 1.59 + cachebitmap->dirty = false; 1.60 + cairo_surface_set_user_data(nullSurf, 1.61 + &bitmap_key_snapshot, 1.62 + cachebitmap, 1.63 + NULL); 1.64 +- _cairo_surface_attach_snapshot(surfacePattern->surface, 1.65 ++ cairo_surface_attach_snapshot(surfacePattern->surface, 1.66 + nullSurf, 1.67 + _d2d_snapshot_detached); 1.68 + } 1.69 + } else { 1.70 + if (pattern->extend != CAIRO_EXTEND_NONE) { 1.71 + d2dsurf->rt->CreateBitmap(D2D1::SizeU(width, height), 1.72 + data + yoffset * stride + xoffset * Bpp, 1.73 + stride, 1.74 +@@ -2015,22 +2015,22 @@ _cairo_d2d_create_brush_for_pattern(cair 1.75 + * and one more in the user data structure. 1.76 + */ 1.77 + cachebitmap->refs = 2; 1.78 + cairo_surface_set_user_data(surfacePattern->surface, 1.79 + key, 1.80 + cachebitmap, 1.81 + _d2d_release_bitmap); 1.82 + cairo_surface_t *nullSurf = 1.83 +- _cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA); 1.84 ++ cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA); 1.85 + cairo_surface_set_user_data(nullSurf, 1.86 + &bitmap_key_snapshot, 1.87 + cachebitmap, 1.88 + NULL); 1.89 +- _cairo_surface_attach_snapshot(surfacePattern->surface, 1.90 ++ cairo_surface_attach_snapshot(surfacePattern->surface, 1.91 + nullSurf, 1.92 + _d2d_snapshot_detached); 1.93 + cache_usage += _d2d_compute_bitmap_mem_size(sourceBitmap); 1.94 + } 1.95 + if (pix_image) { 1.96 + pixman_image_unref(pix_image); 1.97 + } 1.98 + } 1.99 +diff --git a/gfx/cairo/cairo/src/cairo-recording-surface.c b/gfx/cairo/cairo/src/cairo-recording-surface.c 1.100 +--- a/gfx/cairo/cairo/src/cairo-recording-surface.c 1.101 ++++ b/gfx/cairo/cairo/src/cairo-recording-surface.c 1.102 +@@ -276,17 +276,17 @@ _cairo_recording_surface_acquire_source_ 1.103 + -surface->extents.y); 1.104 + 1.105 + status = _cairo_recording_surface_replay (&surface->base, image); 1.106 + if (unlikely (status)) { 1.107 + cairo_surface_destroy (image); 1.108 + return status; 1.109 + } 1.110 + 1.111 +- _cairo_surface_attach_snapshot (&surface->base, image, NULL); 1.112 ++ cairo_surface_attach_snapshot (&surface->base, image, NULL); 1.113 + 1.114 + *image_out = (cairo_image_surface_t *) image; 1.115 + *image_extra = NULL; 1.116 + return CAIRO_STATUS_SUCCESS; 1.117 + } 1.118 + 1.119 + static void 1.120 + _cairo_recording_surface_release_source_image (void *abstract_surface, 1.121 +@@ -1046,17 +1046,17 @@ static cairo_status_t 1.122 + _recording_surface_get_ink_bbox (cairo_recording_surface_t *surface, 1.123 + cairo_box_t *bbox, 1.124 + const cairo_matrix_t *transform) 1.125 + { 1.126 + cairo_surface_t *null_surface; 1.127 + cairo_surface_t *analysis_surface; 1.128 + cairo_status_t status; 1.129 + 1.130 +- null_surface = _cairo_null_surface_create (surface->content); 1.131 ++ null_surface = cairo_null_surface_create (surface->content); 1.132 + analysis_surface = _cairo_analysis_surface_create (null_surface); 1.133 + cairo_surface_destroy (null_surface); 1.134 + 1.135 + status = analysis_surface->status; 1.136 + if (unlikely (status)) 1.137 + return status; 1.138 + 1.139 + if (transform != NULL) 1.140 +diff --git a/gfx/cairo/cairo/src/cairo-surface-private.h b/gfx/cairo/cairo/src/cairo-surface-private.h 1.141 +--- a/gfx/cairo/cairo/src/cairo-surface-private.h 1.142 ++++ b/gfx/cairo/cairo/src/cairo-surface-private.h 1.143 +@@ -40,18 +40,16 @@ 1.144 + 1.145 + #include "cairo.h" 1.146 + 1.147 + #include "cairo-types-private.h" 1.148 + #include "cairo-list-private.h" 1.149 + #include "cairo-reference-count-private.h" 1.150 + #include "cairo-clip-private.h" 1.151 + 1.152 +-typedef void (*cairo_surface_func_t) (cairo_surface_t *); 1.153 +- 1.154 + struct _cairo_surface { 1.155 + const cairo_surface_backend_t *backend; 1.156 + cairo_device_t *device; 1.157 + 1.158 + /* We allow surfaces to override the backend->type by shoving something 1.159 + * else into surface->type. This is for "wrapper" surfaces that want to 1.160 + * hide their internal type from the user-level API. */ 1.161 + cairo_surface_type_t type; 1.162 +diff --git a/gfx/cairo/cairo/src/cairo-surface-snapshot.c b/gfx/cairo/cairo/src/cairo-surface-snapshot.c 1.163 +--- a/gfx/cairo/cairo/src/cairo-surface-snapshot.c 1.164 ++++ b/gfx/cairo/cairo/src/cairo-surface-snapshot.c 1.165 +@@ -209,17 +209,17 @@ _cairo_surface_snapshot (cairo_surface_t 1.166 + if (unlikely (status)) { 1.167 + cairo_surface_destroy (snap); 1.168 + return _cairo_surface_create_in_error (status); 1.169 + } 1.170 + 1.171 + snap->device_transform = surface->device_transform; 1.172 + snap->device_transform_inverse = surface->device_transform_inverse; 1.173 + 1.174 +- _cairo_surface_attach_snapshot (surface, snap, NULL); 1.175 ++ cairo_surface_attach_snapshot (surface, snap, NULL); 1.176 + 1.177 + return snap; 1.178 + } 1.179 + } 1.180 + 1.181 + snapshot = (cairo_surface_snapshot_t *) 1.182 + _cairo_surface_has_snapshot (surface, &_cairo_surface_snapshot_backend); 1.183 + if (snapshot != NULL) 1.184 +@@ -242,14 +242,14 @@ _cairo_surface_snapshot (cairo_surface_t 1.185 + if (unlikely (status)) { 1.186 + cairo_surface_destroy (&snapshot->base); 1.187 + return _cairo_surface_create_in_error (status); 1.188 + } 1.189 + 1.190 + snapshot->base.device_transform = surface->device_transform; 1.191 + snapshot->base.device_transform_inverse = surface->device_transform_inverse; 1.192 + 1.193 +- _cairo_surface_attach_snapshot (surface, 1.194 ++ cairo_surface_attach_snapshot (surface, 1.195 + &snapshot->base, 1.196 + _cairo_surface_snapshot_copy_on_write); 1.197 + 1.198 + return &snapshot->base; 1.199 + } 1.200 +diff --git a/gfx/cairo/cairo/src/cairo-surface-subsurface.c b/gfx/cairo/cairo/src/cairo-surface-subsurface.c 1.201 +--- a/gfx/cairo/cairo/src/cairo-surface-subsurface.c 1.202 ++++ b/gfx/cairo/cairo/src/cairo-surface-subsurface.c 1.203 +@@ -326,17 +326,17 @@ _cairo_surface_subsurface_acquire_source 1.204 + _cairo_image_surface_create_with_content (meta->content, 1.205 + surface->extents.width, 1.206 + surface->extents.height); 1.207 + if (unlikely (image->base.status)) 1.208 + return image->base.status; 1.209 + 1.210 + cairo_surface_paint_to_target (&image->base, surface); 1.211 + 1.212 +- _cairo_surface_attach_snapshot (&surface->base, &image->base, NULL); 1.213 ++ cairo_surface_attach_snapshot (&surface->base, &image->base, NULL); 1.214 + 1.215 + *image_out = image; 1.216 + *extra_out = NULL; 1.217 + return CAIRO_STATUS_SUCCESS; 1.218 + } 1.219 + } 1.220 + 1.221 + extra = malloc (sizeof (struct extra)); 1.222 +diff --git a/gfx/cairo/cairo/src/cairo-surface.c b/gfx/cairo/cairo/src/cairo-surface.c 1.223 +--- a/gfx/cairo/cairo/src/cairo-surface.c 1.224 ++++ b/gfx/cairo/cairo/src/cairo-surface.c 1.225 +@@ -305,51 +305,51 @@ _cairo_surface_detach_mime_data (cairo_s 1.226 + if (! _cairo_surface_has_mime_data (surface)) 1.227 + return; 1.228 + 1.229 + _cairo_user_data_array_fini (&surface->mime_data); 1.230 + _cairo_user_data_array_init (&surface->mime_data); 1.231 + } 1.232 + 1.233 + static void 1.234 +-_cairo_surface_detach_snapshots (cairo_surface_t *surface) 1.235 ++cairo_surface_detach_snapshots (cairo_surface_t *surface) 1.236 + { 1.237 + while (_cairo_surface_has_snapshots (surface)) { 1.238 +- _cairo_surface_detach_snapshot (cairo_list_first_entry (&surface->snapshots, 1.239 ++ cairo_surface_detach_snapshot (cairo_list_first_entry (&surface->snapshots, 1.240 + cairo_surface_t, 1.241 + snapshot)); 1.242 + } 1.243 + } 1.244 + 1.245 + void 1.246 +-_cairo_surface_detach_snapshot (cairo_surface_t *snapshot) 1.247 ++cairo_surface_detach_snapshot (cairo_surface_t *snapshot) 1.248 + { 1.249 + assert (snapshot->snapshot_of != NULL); 1.250 + 1.251 + snapshot->snapshot_of = NULL; 1.252 + cairo_list_del (&snapshot->snapshot); 1.253 + 1.254 + if (snapshot->snapshot_detach != NULL) 1.255 + snapshot->snapshot_detach (snapshot); 1.256 + 1.257 + cairo_surface_destroy (snapshot); 1.258 + } 1.259 + 1.260 + void 1.261 +-_cairo_surface_attach_snapshot (cairo_surface_t *surface, 1.262 ++cairo_surface_attach_snapshot (cairo_surface_t *surface, 1.263 + cairo_surface_t *snapshot, 1.264 + cairo_surface_func_t detach_func) 1.265 + { 1.266 + assert (surface != snapshot); 1.267 + assert (snapshot->snapshot_of != surface); 1.268 + 1.269 + cairo_surface_reference (snapshot); 1.270 + 1.271 + if (snapshot->snapshot_of != NULL) 1.272 +- _cairo_surface_detach_snapshot (snapshot); 1.273 ++ cairo_surface_detach_snapshot (snapshot); 1.274 + 1.275 + snapshot->snapshot_of = surface; 1.276 + snapshot->snapshot_detach = detach_func; 1.277 + 1.278 + cairo_list_add (&snapshot->snapshot, &surface->snapshots); 1.279 + 1.280 + assert (_cairo_surface_has_snapshot (surface, snapshot->backend) == snapshot); 1.281 + } 1.282 +@@ -382,17 +382,17 @@ _cairo_surface_is_writable (cairo_surfac 1.283 + 1.284 + static void 1.285 + _cairo_surface_begin_modification (cairo_surface_t *surface) 1.286 + { 1.287 + assert (surface->status == CAIRO_STATUS_SUCCESS); 1.288 + assert (! surface->finished); 1.289 + assert (surface->snapshot_of == NULL); 1.290 + 1.291 +- _cairo_surface_detach_snapshots (surface); 1.292 ++ cairo_surface_detach_snapshots (surface); 1.293 + _cairo_surface_detach_mime_data (surface); 1.294 + } 1.295 + 1.296 + void 1.297 + _cairo_surface_init (cairo_surface_t *surface, 1.298 + const cairo_surface_backend_t *backend, 1.299 + cairo_device_t *device, 1.300 + cairo_content_t content) 1.301 +@@ -711,19 +711,19 @@ cairo_surface_finish (cairo_surface_t *s 1.302 + 1.303 + if (CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) 1.304 + return; 1.305 + 1.306 + if (surface->finished) 1.307 + return; 1.308 + 1.309 + /* update the snapshots *before* we declare the surface as finished */ 1.310 +- _cairo_surface_detach_snapshots (surface); 1.311 ++ cairo_surface_detach_snapshots (surface); 1.312 + if (surface->snapshot_of != NULL) 1.313 +- _cairo_surface_detach_snapshot (surface); 1.314 ++ cairo_surface_detach_snapshot (surface); 1.315 + 1.316 + cairo_surface_flush (surface); 1.317 + surface->finished = TRUE; 1.318 + 1.319 + /* call finish even if in error mode */ 1.320 + if (surface->backend->finish) { 1.321 + status = surface->backend->finish (surface); 1.322 + if (unlikely (status)) 1.323 +@@ -1106,17 +1106,17 @@ cairo_surface_flush (cairo_surface_t *su 1.324 + 1.325 + if (surface->status) 1.326 + return; 1.327 + 1.328 + if (surface->finished) 1.329 + return; 1.330 + 1.331 + /* update the current snapshots *before* the user updates the surface */ 1.332 +- _cairo_surface_detach_snapshots (surface); 1.333 ++ cairo_surface_detach_snapshots (surface); 1.334 + 1.335 + if (surface->backend->flush) { 1.336 + status = surface->backend->flush (surface); 1.337 + if (unlikely (status)) 1.338 + status = _cairo_surface_set_error (surface, status); 1.339 + } 1.340 + } 1.341 + slim_hidden_def (cairo_surface_flush); 1.342 +@@ -1628,17 +1628,17 @@ _cairo_recording_surface_clone_similar ( 1.343 + return similar->status; 1.344 + 1.345 + status = _cairo_recording_surface_replay (src, similar); 1.346 + if (unlikely (status)) { 1.347 + cairo_surface_destroy (similar); 1.348 + return status; 1.349 + } 1.350 + 1.351 +- _cairo_surface_attach_snapshot (src, similar, NULL); 1.352 ++ cairo_surface_attach_snapshot (src, similar, NULL); 1.353 + 1.354 + src_x = src_y = 0; 1.355 + } 1.356 + 1.357 + *clone_out = similar; 1.358 + *clone_offset_x = src_x; 1.359 + *clone_offset_y = src_y; 1.360 + return CAIRO_STATUS_SUCCESS; 1.361 +diff --git a/gfx/cairo/cairo/src/cairo-vg-surface.c b/gfx/cairo/cairo/src/cairo-vg-surface.c 1.362 +--- a/gfx/cairo/cairo/src/cairo-vg-surface.c 1.363 ++++ b/gfx/cairo/cairo/src/cairo-vg-surface.c 1.364 +@@ -977,17 +977,17 @@ _vg_setup_surface_source (cairo_vg_conte 1.365 + status = _cairo_cache_insert (&context->snapshot_cache, 1.366 + &clone->snapshot_cache_entry); 1.367 + if (unlikely (status)) { 1.368 + clone->snapshot_cache_entry.hash = 0; 1.369 + cairo_surface_destroy (&clone->base); 1.370 + return status; 1.371 + } 1.372 + 1.373 +- _cairo_surface_attach_snapshot (spat->surface, &clone->base, 1.374 ++ cairo_surface_attach_snapshot (spat->surface, &clone->base, 1.375 + _vg_surface_remove_from_cache); 1.376 + 1.377 + DONE: 1.378 + cairo_surface_destroy (&context->source->base); 1.379 + context->source = clone; 1.380 + 1.381 + vgSetParameteri (context->paint, VG_PAINT_TYPE, VG_PAINT_TYPE_PATTERN); 1.382 + 1.383 +diff --git a/gfx/cairo/cairo/src/cairo-xcb-surface.c b/gfx/cairo/cairo/src/cairo-xcb-surface.c 1.384 +--- a/gfx/cairo/cairo/src/cairo-xcb-surface.c 1.385 ++++ b/gfx/cairo/cairo/src/cairo-xcb-surface.c 1.386 +@@ -560,17 +560,17 @@ _cairo_xcb_surface_acquire_source_image 1.387 + image = (cairo_image_surface_t *) cairo_surface_reference (&image->base); 1.388 + goto DONE; 1.389 + } 1.390 + 1.391 + status = _get_image (surface, FALSE, &image); 1.392 + if (unlikely (status)) 1.393 + return status; 1.394 + 1.395 +- _cairo_surface_attach_snapshot (&surface->base, &image->base, NULL); 1.396 ++ cairo_surface_attach_snapshot (&surface->base, &image->base, NULL); 1.397 + 1.398 + DONE: 1.399 + *image_out = image; 1.400 + *image_extra = NULL; 1.401 + return CAIRO_STATUS_SUCCESS; 1.402 + } 1.403 + 1.404 + static void 1.405 +@@ -713,17 +713,17 @@ _cairo_xcb_surface_flush (void *abstract 1.406 + status = cairo_surface_status (surface->fallback); 1.407 + 1.408 + if (status == CAIRO_STATUS_SUCCESS) { 1.409 + status = _put_image (surface, 1.410 + (cairo_image_surface_t *) surface->fallback); 1.411 + } 1.412 + 1.413 + if (status == CAIRO_STATUS_SUCCESS) { 1.414 +- _cairo_surface_attach_snapshot (&surface->base, 1.415 ++ cairo_surface_attach_snapshot (&surface->base, 1.416 + surface->fallback, 1.417 + cairo_surface_finish); 1.418 + } 1.419 + } 1.420 + 1.421 + cairo_surface_destroy (surface->fallback); 1.422 + surface->fallback = NULL; 1.423 + 1.424 +diff --git a/gfx/cairo/cairo/src/cairo.h b/gfx/cairo/cairo/src/cairo.h 1.425 +--- a/gfx/cairo/cairo/src/cairo.h 1.426 ++++ b/gfx/cairo/cairo/src/cairo.h 1.427 +@@ -214,16 +214,25 @@ typedef struct _cairo_pattern cairo_patt 1.428 + * 1.429 + * #cairo_destroy_func_t the type of function which is called when a 1.430 + * data element is destroyed. It is passed the pointer to the data 1.431 + * element and should free any memory and resources allocated for it. 1.432 + **/ 1.433 + typedef void (*cairo_destroy_func_t) (void *data); 1.434 + 1.435 + /** 1.436 ++ * cairo_surface_func_t: 1.437 ++ * @surface: The surface being referred to. 1.438 ++ * 1.439 ++ * #cairo_surface_func_t the type of function which is used for callback 1.440 ++ * when a surface needs to be apssed as a parameter. 1.441 ++ */ 1.442 ++typedef void (*cairo_surface_func_t) (cairo_surface_t *surface); 1.443 ++ 1.444 ++/** 1.445 + * cairo_user_data_key_t: 1.446 + * @unused: not used; ignore. 1.447 + * 1.448 + * #cairo_user_data_key_t is used for attaching user data to cairo 1.449 + * data structures. The actual contents of the struct is never used, 1.450 + * and there is no need to initialize the object; only the unique 1.451 + * address of a #cairo_data_key_t object is used. Typically, you 1.452 + * would just use the address of a static #cairo_data_key_t object. 1.453 +@@ -2150,16 +2159,24 @@ cairo_surface_get_user_data (cairo_surfa 1.454 + const cairo_user_data_key_t *key); 1.455 + 1.456 + cairo_public cairo_status_t 1.457 + cairo_surface_set_user_data (cairo_surface_t *surface, 1.458 + const cairo_user_data_key_t *key, 1.459 + void *user_data, 1.460 + cairo_destroy_func_t destroy); 1.461 + 1.462 ++cairo_public void 1.463 ++cairo_surface_attach_snapshot (cairo_surface_t *surface, 1.464 ++ cairo_surface_t *snapshot, 1.465 ++ cairo_surface_func_t detach_func); 1.466 ++ 1.467 ++cairo_public void 1.468 ++cairo_surface_detach_snapshot (cairo_surface_t *snapshot); 1.469 ++ 1.470 + #define CAIRO_MIME_TYPE_JPEG "image/jpeg" 1.471 + #define CAIRO_MIME_TYPE_PNG "image/png" 1.472 + #define CAIRO_MIME_TYPE_JP2 "image/jp2" 1.473 + #define CAIRO_MIME_TYPE_URI "text/x-uri" 1.474 + 1.475 + cairo_public void 1.476 + cairo_surface_get_mime_data (cairo_surface_t *surface, 1.477 + const char *mime_type, 1.478 +@@ -2328,16 +2345,21 @@ cairo_recording_surface_create (cairo_co 1.479 + 1.480 + cairo_public void 1.481 + cairo_recording_surface_ink_extents (cairo_surface_t *surface, 1.482 + double *x0, 1.483 + double *y0, 1.484 + double *width, 1.485 + double *height); 1.486 + 1.487 ++/* Null-surface functions */ 1.488 ++ 1.489 ++cairo_public cairo_surface_t * 1.490 ++cairo_null_surface_create (cairo_content_t content); 1.491 ++ 1.492 + /* Pattern creation functions */ 1.493 + 1.494 + cairo_public cairo_pattern_t * 1.495 + cairo_pattern_create_rgb (double red, double green, double blue); 1.496 + 1.497 + cairo_public cairo_pattern_t * 1.498 + cairo_pattern_create_rgba (double red, double green, double blue, 1.499 + double alpha); 1.500 +diff --git a/gfx/cairo/cairo/src/cairoint.h b/gfx/cairo/cairo/src/cairoint.h 1.501 +--- a/gfx/cairo/cairo/src/cairoint.h 1.502 ++++ b/gfx/cairo/cairo/src/cairoint.h 1.503 +@@ -1770,27 +1770,19 @@ _cairo_surface_clone_similar (cairo_surf 1.504 + int height, 1.505 + int *clone_offset_x, 1.506 + int *clone_offset_y, 1.507 + cairo_surface_t **clone_out); 1.508 + 1.509 + cairo_private cairo_surface_t * 1.510 + _cairo_surface_snapshot (cairo_surface_t *surface); 1.511 + 1.512 +-cairo_private void 1.513 +-_cairo_surface_attach_snapshot (cairo_surface_t *surface, 1.514 +- cairo_surface_t *snapshot, 1.515 +- cairo_surface_func_t detach_func); 1.516 +- 1.517 + cairo_private cairo_surface_t * 1.518 + _cairo_surface_has_snapshot (cairo_surface_t *surface, 1.519 +- const cairo_surface_backend_t *backend); 1.520 +- 1.521 +-cairo_private void 1.522 +-_cairo_surface_detach_snapshot (cairo_surface_t *snapshot); 1.523 ++ const cairo_surface_backend_t *backend); 1.524 + 1.525 + cairo_private cairo_bool_t 1.526 + _cairo_surface_is_similar (cairo_surface_t *surface_a, 1.527 + cairo_surface_t *surface_b); 1.528 + 1.529 + cairo_private cairo_bool_t 1.530 + _cairo_surface_get_extents (cairo_surface_t *surface, 1.531 + cairo_rectangle_int_t *extents);