sets the mode of operation (normal vs. record)
a pointer to the newly allocated surface. The caller owns the surface and should call cairo.surface.Surface.destroy when done with it.
This function always returns a valid pointer, but it will return a pointer to a "nil" surface if other is already in an error state or any other error occurs.
Create a new surface that exists solely to watch another is doing. In the process it will log operations and times, which are fast, which are slow, which are frequent, etc.
The mode parameter can be set to either CAIRO_SURFACE_OBSERVER_NORMAL or CAIRO_SURFACE_OBSERVER_RECORD_OPERATIONS, to control whether or not the internal observer should record operations.