diff --git a/src/cairo-surface-inline.h b/src/cairo-surface-inline.h index 1b257d5c3..27ea8f0ec 100644 --- a/src/cairo-surface-inline.h +++ b/src/cairo-surface-inline.h @@ -49,4 +49,12 @@ _cairo_surface_flush (cairo_surface_t *surface) return status; } +static inline cairo_surface_t * +_cairo_surface_reference (cairo_surface_t *surface) +{ + if (!CAIRO_REFERENCE_COUNT_IS_INVALID (&surface->ref_count)) + _cairo_reference_count_inc (&surface->ref_count); + return surface; +} + #endif /* CAIRO_SURFACE_INLINE_H */ diff --git a/src/cairo-surface-snapshot-inline.h b/src/cairo-surface-snapshot-inline.h index 7c15b81a7..bf89c772b 100644 --- a/src/cairo-surface-snapshot-inline.h +++ b/src/cairo-surface-snapshot-inline.h @@ -37,6 +37,7 @@ #define CAIRO_SURFACE_SNAPSHOT_INLINE_H #include "cairo-surface-snapshot-private.h" +#include "cairo-surface-inline.h" static inline cairo_bool_t _cairo_surface_snapshot_is_reused (cairo_surface_t *surface) @@ -51,7 +52,7 @@ _cairo_surface_snapshot_get_target (cairo_surface_t *surface) cairo_surface_t *target; CAIRO_MUTEX_LOCK (snapshot->mutex); - target = cairo_surface_reference (snapshot->target); + target = _cairo_surface_reference (snapshot->target); CAIRO_MUTEX_UNLOCK (snapshot->mutex); return target;