diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-12 16:19:33 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-10-12 16:19:33 +0100 |
commit | 9c63168b5f4cccdda5cad939f6d3f0745202069d (patch) | |
tree | 309dc76f034bd888ef3de3a251041b7af8aab389 /src/cairo-clip.c | |
parent | 17173f961369fe4210588a8cf56f9b8276d1e10f (diff) | |
download | cairo-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.c | 6 |
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; } |