summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cairo-surface-observer.c24
-rw-r--r--src/cairo.h4
2 files changed, 14 insertions, 14 deletions
diff --git a/src/cairo-surface-observer.c b/src/cairo-surface-observer.c
index e5d33714d..3ac089290 100644
--- a/src/cairo-surface-observer.c
+++ b/src/cairo-surface-observer.c
@@ -1957,7 +1957,7 @@ _cairo_observation_print (cairo_output_stream_t *stream,
cairo_device_destroy (script);
}
-void
+cairo_status_t
cairo_surface_observer_print (cairo_surface_t *abstract_surface,
cairo_write_func_t write_func,
void *closure)
@@ -1965,17 +1965,17 @@ cairo_surface_observer_print (cairo_surface_t *abstract_surface,
cairo_output_stream_t *stream;
cairo_surface_observer_t *surface;
- if (unlikely (CAIRO_REFERENCE_COUNT_IS_INVALID (&abstract_surface->ref_count)))
- return;
+ if (unlikely (abstract_surface->status))
+ return abstract_surface->status;
- if (! _cairo_surface_is_observer (abstract_surface))
- return;
+ if (unlikely (! _cairo_surface_is_observer (abstract_surface)))
+ return _cairo_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH);
surface = (cairo_surface_observer_t *) abstract_surface;
stream = _cairo_output_stream_create (write_func, NULL, closure);
_cairo_observation_print (stream, &surface->log);
- _cairo_output_stream_destroy (stream);
+ return _cairo_output_stream_destroy (stream);
}
double
@@ -1993,7 +1993,7 @@ cairo_surface_observer_elapsed (cairo_surface_t *abstract_surface)
return _cairo_time_to_ns (_cairo_observation_total_elapsed (&surface->log));
}
-void
+cairo_status_t
cairo_device_observer_print (cairo_device_t *abstract_device,
cairo_write_func_t write_func,
void *closure)
@@ -2001,17 +2001,17 @@ cairo_device_observer_print (cairo_device_t *abstract_device,
cairo_output_stream_t *stream;
cairo_device_observer_t *device;
- if (unlikely (CAIRO_REFERENCE_COUNT_IS_INVALID (&abstract_device->ref_count)))
- return;
+ if (unlikely (abstract_device->status))
+ return abstract_device->status;
- if (! _cairo_device_is_observer (abstract_device))
- return;
+ if (unlikely (! _cairo_device_is_observer (abstract_device)))
+ return _cairo_error (CAIRO_STATUS_DEVICE_TYPE_MISMATCH);
device = (cairo_device_observer_t *) abstract_device;
stream = _cairo_output_stream_create (write_func, NULL, closure);
_cairo_observation_print (stream, &device->log);
- _cairo_output_stream_destroy (stream);
+ return _cairo_output_stream_destroy (stream);
}
double
diff --git a/src/cairo.h b/src/cairo.h
index a64a8a00c..0a004f3d1 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -2192,14 +2192,14 @@ cairo_surface_observer_add_finish_callback (cairo_surface_t *abstract_surface,
cairo_surface_observer_callback_t func,
void *data);
-cairo_public void
+cairo_public cairo_status_t
cairo_surface_observer_print (cairo_surface_t *surface,
cairo_write_func_t write_func,
void *closure);
cairo_public double
cairo_surface_observer_elapsed (cairo_surface_t *surface);
-cairo_public void
+cairo_public cairo_status_t
cairo_device_observer_print (cairo_device_t *device,
cairo_write_func_t write_func,
void *closure);