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 Surface.finish() the only
valid operations on a surface are 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 exception.
When the reference count id decreased to zero, cairo will call
Surface.finish() if it hasn't been called already, before
freeing the resources associated with the surface.
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 Surface.finish() the only valid operations on a surface are 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 exception.
When the reference count id decreased to zero, cairo will call Surface.finish() if it hasn't been called already, before freeing the resources associated with the surface.