summaryrefslogtreecommitdiff
path: root/src/cairo-surface-shadow.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cairo-surface-shadow.c')
-rw-r--r--[-rwxr-xr-x]src/cairo-surface-shadow.c48
1 files changed, 26 insertions, 22 deletions
diff --git a/src/cairo-surface-shadow.c b/src/cairo-surface-shadow.c
index 5224bee40..921258ec3 100755..100644
--- a/src/cairo-surface-shadow.c
+++ b/src/cairo-surface-shadow.c
@@ -319,7 +319,8 @@ _cairo_ensure_shadow_surface (cairo_surface_t *target,
content,
width_out,
height_out);
- _cairo_surface_release_device_reference (shadow_surface);
+ if (shadow_surface->device)
+ _cairo_surface_release_device_reference (shadow_surface);
}
shadow_surface_extents->x = 0;
@@ -407,13 +408,13 @@ _cairo_surface_shadow_paint (cairo_surface_t *target,
&shadow_source.base,
&shadow_extents,
&bounded);
- if (unlikely (status))
+ if (unlikely (status))
goto FINISH;
if (shadow_extents.width == 0 || shadow_extents.height == 0)
goto FINISH;
- x_offset = shadow_extents.x - x_blur;
+ x_offset = shadow_extents.x - x_blur;
y_offset = shadow_extents.y - y_blur;
cairo_matrix_init_scale (&m, shadow_cache->scale, shadow_cache->scale);
@@ -678,13 +679,13 @@ _cairo_surface_shadow_mask (cairo_surface_t *target,
&shadow_mask.base,
&shadow_extents,
&bounded);
- if (unlikely (status))
+ if (unlikely (status))
goto FINISH;
if (shadow_extents.width == 0 || shadow_extents.height == 0)
goto FINISH;
- x_offset = shadow_extents.x - x_blur;
+ x_offset = shadow_extents.x - x_blur;
y_offset = shadow_extents.y - y_blur;
cairo_matrix_init_scale (&m, shadow_cache->scale, shadow_cache->scale);
@@ -918,13 +919,13 @@ _cairo_surface_inset_shadow_stroke (cairo_surface_t *target,
&shadow_ctm,
&shadow_ctm_inverse,
&shadow_extents);
- if (unlikely (status))
+ if (unlikely (status))
goto FINISH;
if (shadow_extents.width == 0 || shadow_extents.height == 0)
goto FINISH;
- x_offset = shadow_extents.x - x_blur;
+ x_offset = shadow_extents.x - x_blur;
y_offset = shadow_extents.y - y_blur;
cairo_matrix_init_scale (&m, shadow_cache->scale, shadow_cache->scale);
@@ -1205,13 +1206,13 @@ _cairo_surface_shadow_stroke (cairo_surface_t *target,
&shadow_ctm,
&shadow_ctm_inverse,
&shadow_extents);
- if (unlikely (status))
+ if (unlikely (status))
goto FINISH;
if (shadow_extents.width == 0 || shadow_extents.height == 0)
goto FINISH;
- x_offset = shadow_extents.x - x_blur;
+ x_offset = shadow_extents.x - x_blur;
y_offset = shadow_extents.y - y_blur;
cairo_matrix_init_scale (&m, shadow_cache->scale, shadow_cache->scale);
@@ -1437,7 +1438,7 @@ _cairo_surface_inset_shadow_fill (cairo_surface_t *target,
if (shadow_cache != NULL) {
/* paint the shadow surface to target */
- color_pattern = cairo_pattern_create_rgba (shadow_copy.color.red,
+ color_pattern = cairo_pattern_create_rgba (shadow_copy.color.red,
shadow_copy.color.green,
shadow_copy.color.blue,
1.0);
@@ -1455,13 +1456,13 @@ _cairo_surface_inset_shadow_fill (cairo_surface_t *target,
&shadow_source.base,
&shadow_path,
&shadow_extents);
- if (unlikely (status))
+ if (unlikely (status))
goto FINISH;
if (shadow_extents.width == 0 || shadow_extents.height == 0)
goto FINISH;
- x_offset = shadow_extents.x - x_blur;
+ x_offset = shadow_extents.x - x_blur;
y_offset = shadow_extents.y - y_blur;
cairo_matrix_init_scale (&m, shadow_cache->scale, shadow_cache->scale);
@@ -1533,7 +1534,7 @@ _cairo_surface_inset_shadow_fill (cairo_surface_t *target,
cache_surface = cairo_surface_create_similar (target, content,
shadow_surface_extents.width,
shadow_surface_extents.height);
- if (unlikely (cache_surface->status))
+ if (unlikely (cache_surface->status))
goto FINISH;
if (device)
@@ -1587,7 +1588,7 @@ _cairo_surface_inset_shadow_fill (cairo_surface_t *target,
if (unlikely (status))
goto FINISH;
- cairo_pattern_destroy (shadow_pattern);
+ cairo_pattern_destroy (shadow_pattern);
size = shadow_surface_extents.width * shadow_surface_extents.height;
_cairo_shadow_cache_list_shrink_to_accomodate (&shadow_cache_list,
@@ -1755,7 +1756,7 @@ _cairo_surface_shadow_fill (cairo_surface_t *target,
if (shadow_cache != NULL) {
/* paint the shadow surface to target */
- color_pattern = cairo_pattern_create_rgba (shadow_copy.color.red,
+ color_pattern = cairo_pattern_create_rgba (shadow_copy.color.red,
shadow_copy.color.green,
shadow_copy.color.blue,
1.0);
@@ -1773,13 +1774,13 @@ _cairo_surface_shadow_fill (cairo_surface_t *target,
&shadow_source.base,
&shadow_path,
&shadow_extents);
- if (unlikely (status))
+ if (unlikely (status))
goto FINISH;
if (shadow_extents.width == 0 || shadow_extents.height == 0)
goto FINISH;
- x_offset = shadow_extents.x - x_blur;
+ x_offset = shadow_extents.x - x_blur;
y_offset = shadow_extents.y - y_blur;
cairo_matrix_init_scale (&m, shadow_cache->scale, shadow_cache->scale);
@@ -1843,7 +1844,7 @@ _cairo_surface_shadow_fill (cairo_surface_t *target,
cache_surface = cairo_surface_create_similar (target, content,
shadow_surface_extents.width,
shadow_surface_extents.height);
- if (unlikely (cache_surface->status))
+ if (unlikely (cache_surface->status))
goto FINISH;
if (device)
@@ -1889,7 +1890,7 @@ _cairo_surface_shadow_fill (cairo_surface_t *target,
if (unlikely (status))
goto FINISH;
- cairo_pattern_destroy (shadow_pattern);
+ cairo_pattern_destroy (shadow_pattern);
size = shadow_surface_extents.width * shadow_surface_extents.height;
_cairo_shadow_cache_list_shrink_to_accomodate (&shadow_cache_list,
@@ -2026,7 +2027,8 @@ _cairo_surface_inset_shadow_glyphs (cairo_surface_t *target,
content,
shadow_width,
shadow_height);
- _cairo_surface_release_device_reference (shadow_surface);
+ if (shadow_surface->device)
+ _cairo_surface_release_device_reference (shadow_surface);
}
if (! shadow_surface || unlikely (shadow_surface->status))
goto FINISH;
@@ -2045,7 +2047,8 @@ _cairo_surface_inset_shadow_glyphs (cairo_surface_t *target,
CAIRO_CONTENT_COLOR_ALPHA,
shadow_surface_extents.width,
shadow_surface_extents.height);
- _cairo_surface_release_device_reference (mask_surface);
+ if (mask_surface->device)
+ _cairo_surface_release_device_reference (mask_surface);
}
if (! mask_surface || unlikely (mask_surface->status))
goto FINISH;
@@ -2230,7 +2233,8 @@ _cairo_surface_shadow_glyphs (cairo_surface_t *target,
content,
shadow_width,
shadow_height);
- _cairo_surface_release_device_reference (shadow_surface);
+ if (shadow_surface->device)
+ _cairo_surface_release_device_reference (shadow_surface);
}
if (! shadow_surface || unlikely (shadow_surface->status))
goto FINISH;