diff --git a/src/cairo-quartz-surface.c b/src/cairo-quartz-surface.c index 0a5c72f0d..6e5e5612b 100644 --- a/src/cairo-quartz-surface.c +++ b/src/cairo-quartz-surface.c @@ -970,6 +970,7 @@ _cairo_quartz_setup_pattern_source (cairo_quartz_drawing_state_t *state, _cairo_quartz_cairo_matrix_to_quartz (&m, &state->transform); state->rect = CGRectMake (0, 0, quartz_surf->extents.width, quartz_surf->extents.height); state->layer = quartz_surf->cgLayer; + CGLayerRetain (state->layer); // Will be released by _cairo_quartz_teardown_state state->action = DO_LAYER; return CAIRO_STATUS_SUCCESS; } @@ -1138,7 +1139,6 @@ _cairo_quartz_setup_state (cairo_quartz_drawing_state_t *state, state->shading = NULL; state->cgDrawContext = NULL; state->cgMaskContext = NULL; - state->layer = NULL; status = _cairo_surface_clipper_set_clip (&surface->clipper, clip); if (unlikely (status))