summaryrefslogtreecommitdiff
path: root/src/cairo-surface-subsurface.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2010-08-26 11:17:06 +0200
committerBenjamin Otte <otte@redhat.com>2010-08-26 11:20:36 +0200
commite65bf64c4a6e2c7ff673449b8459b3150e438e21 (patch)
treebc46c8df2d48eafa71e742d36916a15e52fef1de /src/cairo-surface-subsurface.c
parent8e9c4ea5890a4df3f463e592dc3aa429bb423608 (diff)
downloadcairo-e65bf64c4a6e2c7ff673449b8459b3150e438e21.tar.gz
subsurface: Properly account for device offsets in the target
Diffstat (limited to 'src/cairo-surface-subsurface.c')
-rw-r--r--src/cairo-surface-subsurface.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/cairo-surface-subsurface.c b/src/cairo-surface-subsurface.c
index 3cbb51608..5611850c0 100644
--- a/src/cairo-surface-subsurface.c
+++ b/src/cairo-surface-subsurface.c
@@ -515,6 +515,11 @@ cairo_surface_create_for_rectangle (cairo_surface_t *target,
surface->extents.width = floor (x + width) - surface->extents.x;
surface->extents.height = floor (y + height) - surface->extents.y;
+ ret = _cairo_matrix_is_integer_translation (&target->device_transform, &tx, &ty);
+ assert (ret);
+ surface->extents.x += tx;
+ surface->extents.y += ty;
+
if (_cairo_surface_get_extents (target, &target_extents))
ret = _cairo_rectangle_intersect (&surface->extents, &target_extents);
@@ -524,11 +529,6 @@ cairo_surface_create_for_rectangle (cairo_surface_t *target,
surface->extents.x += sub->extents.x;
surface->extents.y += sub->extents.y;
target = sub->target;
- } else {
- ret = _cairo_matrix_is_integer_translation (&target->device_transform, &tx, &ty);
- assert (ret);
- surface->extents.x += tx;
- surface->extents.y += ty;
}
surface->target = cairo_surface_reference (target);