summaryrefslogtreecommitdiff
path: root/src/cairo-clip.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-10-12 16:19:33 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-10-12 16:19:33 +0100
commit9c63168b5f4cccdda5cad939f6d3f0745202069d (patch)
tree309dc76f034bd888ef3de3a251041b7af8aab389 /src/cairo-clip.c
parent17173f961369fe4210588a8cf56f9b8276d1e10f (diff)
downloadcairo-9c63168b5f4cccdda5cad939f6d3f0745202069d.tar.gz
clip: Replace the original clip when transforming
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-clip.c')
-rw-r--r--src/cairo-clip.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cairo-clip.c b/src/cairo-clip.c
index 0fabe39d6..c89e8be04 100644
--- a/src/cairo-clip.c
+++ b/src/cairo-clip.c
@@ -423,7 +423,7 @@ _cairo_clip_translate (cairo_clip_t *clip, int tx, int ty)
cairo_clip_path_t *clip_path;
if (clip == NULL || _cairo_clip_is_all_clipped (clip))
- return (cairo_clip_t *)clip;
+ return clip;
if (tx == 0 && ty == 0)
return clip;
@@ -532,6 +532,9 @@ _cairo_clip_transform (cairo_clip_t *clip, const cairo_matrix_t *m)
{
cairo_clip_t *copy;
+ if (clip == NULL || _cairo_clip_is_all_clipped (clip))
+ return clip;
+
if (_cairo_matrix_is_translation (m))
return _cairo_clip_translate (clip, m->x0, m->y0);
@@ -556,6 +559,7 @@ _cairo_clip_transform (cairo_clip_t *clip, const cairo_matrix_t *m)
if (clip->path)
copy = _cairo_clip_intersect_clip_path_transformed (copy, clip->path,m);
+ _cairo_clip_destroy (clip);
return copy;
}