This function finishes the surface and drops all references to external resources. For example, for the Xlib backend it means that cairo will no longer access the drawable, which can be freed. After calling cairo_surface_finish() the only valid operations on a surface are checking status, getting and setting user, referencing and destroying, and flushing and finishing it. Further drawing to the surface will not affect the surface but will instead trigger a %CAIRO_STATUS_SURFACE_FINISHED error.

cairo_surface_finish(surface)

Arguments

surface

[cairo_surface_t *] the #cairo_surface_t to finish

Details

When the last call to cairo_surface_destroy() decreases the reference count to zero, cairo will call cairo_surface_finish() if it hasn't been called already, before freeing the resources associated with the surface.

Since: 1.0

C function prototype: void cairo_surface_finish (cairo_surface_t *surface)

See also

Other cairo-surface: cairo_surface_flush()