From 5a72aac5982015a2b237afeb13164e0c5f5185ed Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Fri, 23 Feb 2007 14:24:04 -0800 Subject: [PATCH] [core] put back REF_COUNT_INVALID to be -1, fix finish Previous commit broke cairo_surface_finish, since it was checking for ref_count == CAIRO_REF_COUNT_INVALID and bailing. But, that condition was reached from destroy, so finish was bailing out early. --- src/cairo-font.c | 3 +++ src/cairo-pattern.c | 3 +++ src/cairo-scaled-font.c | 3 +++ src/cairo-surface.c | 3 +++ src/cairo.c | 3 +++ src/cairoint.h | 2 +- 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/cairo-font.c b/src/cairo-font.c index 1b62aed0d..7fefea763 100644 --- a/src/cairo-font.c +++ b/src/cairo-font.c @@ -178,6 +178,9 @@ cairo_font_face_get_type (cairo_font_face_t *font_face) unsigned int cairo_font_face_get_reference_count (cairo_font_face_t *font_face) { + if (font_face->ref_count == CAIRO_REF_COUNT_INVALID) + return 0; + return font_face->ref_count; } diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c index 5060eff85..0c428ba9d 100644 --- a/src/cairo-pattern.c +++ b/src/cairo-pattern.c @@ -592,6 +592,9 @@ slim_hidden_def (cairo_pattern_destroy); unsigned int cairo_pattern_get_reference_count (cairo_pattern_t *pattern) { + if (pattern->ref_count == CAIRO_REF_COUNT_INVALID) + return 0; + return pattern->ref_count; } diff --git a/src/cairo-scaled-font.c b/src/cairo-scaled-font.c index 46ba5717b..4020acf3e 100755 --- a/src/cairo-scaled-font.c +++ b/src/cairo-scaled-font.c @@ -638,6 +638,9 @@ slim_hidden_def (cairo_scaled_font_destroy); unsigned int cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font) { + if (scaled_font->ref_count == CAIRO_REF_COUNT_INVALID) + return 0; + return scaled_font->ref_count; } diff --git a/src/cairo-surface.c b/src/cairo-surface.c index e640fac12..12240811d 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -405,6 +405,9 @@ slim_hidden_def(cairo_surface_destroy); unsigned int cairo_surface_get_reference_count (cairo_surface_t *surface) { + if (surface->ref_count == CAIRO_REF_COUNT_INVALID) + return 0; + return surface->ref_count; } diff --git a/src/cairo.c b/src/cairo.c index 5eda36efb..36fd07bb1 100644 --- a/src/cairo.c +++ b/src/cairo.c @@ -345,6 +345,9 @@ cairo_set_user_data (cairo_t *cr, unsigned int cairo_get_reference_count (cairo_t *cr) { + if (cr->ref_count == CAIRO_REF_COUNT_INVALID) + return 0; + return cr->ref_count; } diff --git a/src/cairoint.h b/src/cairoint.h index 65b0123a8..eff83444a 100755 --- a/src/cairoint.h +++ b/src/cairoint.h @@ -241,7 +241,7 @@ do { \ assert (NOT_REACHED); \ } while (0) -#define CAIRO_REF_COUNT_INVALID (0) +#define CAIRO_REF_COUNT_INVALID ((unsigned int) -1) #include "cairo-wideint-private.h"