From f916e2178b6f52e3b3600d100dfe75bfa4bf12cb Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 7 Aug 2008 23:54:25 +0100 Subject: [PATCH] [meta] Use the pre-computed device_transform_inverse. Avoid repeatedly inverting the same matrix by using the pre-computed inverse. --- src/cairo-meta-surface.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/cairo-meta-surface.c b/src/cairo-meta-surface.c index 2b6182556..ee52b4919 100644 --- a/src/cairo-meta-surface.c +++ b/src/cairo-meta-surface.c @@ -844,14 +844,12 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface, { cairo_matrix_t dev_ctm = command->stroke.ctm; cairo_matrix_t dev_ctm_inverse = command->stroke.ctm_inverse; - cairo_matrix_t tmp; if (has_device_transform) { cairo_matrix_multiply (&dev_ctm, &dev_ctm, device_transform); - tmp = surface->device_transform; - status = cairo_matrix_invert (&tmp); - assert (status == CAIRO_STATUS_SUCCESS); - cairo_matrix_multiply (&dev_ctm_inverse, &tmp, &dev_ctm_inverse); + cairo_matrix_multiply (&dev_ctm_inverse, + &surface->device_transform_inverse, + &dev_ctm_inverse); } status = _cairo_surface_stroke (target, @@ -885,17 +883,15 @@ _cairo_meta_surface_replay_internal (cairo_surface_t *surface, _cairo_path_fixed_is_equal (dev_path, _cairo_command_get_path (stroke_command))) { cairo_matrix_t dev_ctm; cairo_matrix_t dev_ctm_inverse; - cairo_matrix_t tmp; dev_ctm = stroke_command->stroke.ctm; dev_ctm_inverse = stroke_command->stroke.ctm_inverse; if (has_device_transform) { cairo_matrix_multiply (&dev_ctm, &dev_ctm, device_transform); - tmp = surface->device_transform; - status = cairo_matrix_invert (&tmp); - assert (status == CAIRO_STATUS_SUCCESS); - cairo_matrix_multiply (&dev_ctm_inverse, &tmp, &dev_ctm_inverse); + cairo_matrix_multiply (&dev_ctm_inverse, + &surface->device_transform_inverse, + &dev_ctm_inverse); } status = _cairo_surface_fill_stroke (target,