summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2020-02-13 03:23:51 +0100
committerBenjamin Otte <otte@redhat.com>2020-02-13 06:15:44 +0100
commit9d8ceb0cb2f331ec79305ec2022192714a89d783 (patch)
treeead34cc00bc0b3d9662dd2479d7ee3906add0ad3
parentc313a71c3a0757d07bcf26a03236ea8cad624880 (diff)
downloadgtk+-9d8ceb0cb2f331ec79305ec2022192714a89d783.tar.gz
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.
-rw-r--r--testsuite/gsk/reftest-compare.c18
-rw-r--r--testsuite/reftests/reftest-compare.c18
2 files changed, 20 insertions, 16 deletions
diff --git a/testsuite/gsk/reftest-compare.c b/testsuite/gsk/reftest-compare.c
index 84c560cabc..f63af72419 100644
--- a/testsuite/gsk/reftest-compare.c
+++ b/testsuite/gsk/reftest-compare.c
@@ -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;
}
diff --git a/testsuite/reftests/reftest-compare.c b/testsuite/reftests/reftest-compare.c
index 84c560cabc..f63af72419 100644
--- a/testsuite/reftests/reftest-compare.c
+++ b/testsuite/reftests/reftest-compare.c
@@ -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;
}