testsuite: Don't destroy surfaces that are still used

Coercing the surfaces must not unref the old surface, because the old
surface is going to be saved to a file.
This commit is contained in:
Benjamin Otte 2020-02-13 03:23:51 +01:00
parent c313a71c3a
commit 9d8ceb0cb2
2 changed files with 20 additions and 16 deletions

View File

@ -61,7 +61,6 @@ coerce_surface_for_comparison (cairo_surface_t *surface,
cairo_paint (cr);
cairo_destroy (cr);
cairo_surface_destroy (surface);
g_assert (cairo_surface_status (coerced) == CAIRO_STATUS_SUCCESS);
@ -152,21 +151,24 @@ reftest_compare_surfaces (cairo_surface_t *surface1,
cairo_surface_t *surface2)
{
int w1, h1, w2, h2, w, h;
cairo_surface_t *diff;
cairo_surface_t *coerced1, *coerced2, *diff;
get_surface_size (surface1, &w1, &h1);
get_surface_size (surface2, &w2, &h2);
w = MAX (w1, w2);
h = MAX (h1, h2);
surface1 = coerce_surface_for_comparison (surface1, w, h);
surface2 = coerce_surface_for_comparison (surface2, w, h);
coerced1 = coerce_surface_for_comparison (surface1, w, h);
coerced2 = coerce_surface_for_comparison (surface2, w, h);
diff = buffer_diff_core (cairo_image_surface_get_data (surface1),
cairo_image_surface_get_stride (surface1),
cairo_image_surface_get_data (surface2),
cairo_image_surface_get_stride (surface2),
diff = buffer_diff_core (cairo_image_surface_get_data (coerced1),
cairo_image_surface_get_stride (coerced1),
cairo_image_surface_get_data (coerced2),
cairo_image_surface_get_stride (coerced2),
w, h);
cairo_surface_destroy (coerced1);
cairo_surface_destroy (coerced2);
return diff;
}

View File

@ -61,7 +61,6 @@ coerce_surface_for_comparison (cairo_surface_t *surface,
cairo_paint (cr);
cairo_destroy (cr);
cairo_surface_destroy (surface);
g_assert (cairo_surface_status (coerced) == CAIRO_STATUS_SUCCESS);
@ -152,21 +151,24 @@ reftest_compare_surfaces (cairo_surface_t *surface1,
cairo_surface_t *surface2)
{
int w1, h1, w2, h2, w, h;
cairo_surface_t *diff;
cairo_surface_t *coerced1, *coerced2, *diff;
get_surface_size (surface1, &w1, &h1);
get_surface_size (surface2, &w2, &h2);
w = MAX (w1, w2);
h = MAX (h1, h2);
surface1 = coerce_surface_for_comparison (surface1, w, h);
surface2 = coerce_surface_for_comparison (surface2, w, h);
coerced1 = coerce_surface_for_comparison (surface1, w, h);
coerced2 = coerce_surface_for_comparison (surface2, w, h);
diff = buffer_diff_core (cairo_image_surface_get_data (surface1),
cairo_image_surface_get_stride (surface1),
cairo_image_surface_get_data (surface2),
cairo_image_surface_get_stride (surface2),
diff = buffer_diff_core (cairo_image_surface_get_data (coerced1),
cairo_image_surface_get_stride (coerced1),
cairo_image_surface_get_data (coerced2),
cairo_image_surface_get_stride (coerced2),
w, h);
cairo_surface_destroy (coerced1);
cairo_surface_destroy (coerced2);
return diff;
}