diff --git a/gfx/cairo/README b/gfx/cairo/README index 220bcc3a6c1..a2af5c15df1 100644 --- a/gfx/cairo/README +++ b/gfx/cairo/README @@ -19,6 +19,9 @@ VC6 is not supported. Please upgrade to VC8. Some specific things: +cairo git commit ea6dbfd36f2182fda16cb82bca92007e0f7b8d77 - + [cairo-meta-surface] Save and restore the original clip. + max-font-size.patch: Clamp freetype font size to 1000 to avoid overflow issues win32-logical-font-scale.patch: set CAIRO_WIN32_LOGICAL_FONT_SCALE to 1 diff --git a/gfx/cairo/cairo/src/cairo-meta-surface.c b/gfx/cairo/cairo/src/cairo-meta-surface.c index 441a7d65b0d..61c9b5d3ea9 100644 --- a/gfx/cairo/cairo/src/cairo-meta-surface.c +++ b/gfx/cairo/cairo/src/cairo-meta-surface.c @@ -658,8 +658,8 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface, cairo_meta_surface_t *meta; cairo_command_t *command, **elements; int i, num_elements; - cairo_int_status_t status; - cairo_clip_t clip; + cairo_int_status_t status, status2; + cairo_clip_t clip, *old_clip; cairo_bool_t has_device_transform = _cairo_surface_has_device_transform (target); cairo_matrix_t *device_transform = &target->device_transform; cairo_path_fixed_t path_copy, *dev_path; @@ -674,6 +674,7 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface, status = CAIRO_STATUS_SUCCESS; _cairo_clip_init (&clip, target); + old_clip = _cairo_surface_get_clip (target); num_elements = meta->commands.num_elements; elements = _cairo_array_index (&meta->commands, 0); @@ -867,6 +868,9 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface, } _cairo_clip_reset (&clip); + status2 = _cairo_surface_set_clip (target, old_clip); + if (status == CAIRO_STATUS_SUCCESS) + status = status2; return _cairo_surface_set_error (surface, status); }