rendernode: Don't leak mem_surface

This commit is contained in:
Timm Bäder 2017-10-10 09:07:34 +02:00
parent 657983cfda
commit af734c4007

View File

@ -1749,6 +1749,7 @@ gsk_cairo_node_serialize (GskRenderNode *node)
int width, height;
int stride, i;
guchar *mem_surface, *data;
GVariant *result;
width = cairo_image_surface_get_width (self->surface);
height = cairo_image_surface_get_height (self->surface);
@ -1760,17 +1761,18 @@ gsk_cairo_node_serialize (GskRenderNode *node)
for (i = 0; i < height; i++)
memcpy (mem_surface + i * width * 4, data + i * stride, width * 4);
return g_variant_new ("(dddduu@au)",
(double) node->bounds.origin.x, (double) node->bounds.origin.y,
(double) node->bounds.size.width, (double) node->bounds.size.height,
(guint32) width,
(guint32) height,
g_variant_new_fixed_array (G_VARIANT_TYPE ("u"),
mem_surface,
width * height,
sizeof (guint32)));
result = g_variant_new ("(dddduu@au)",
(double) node->bounds.origin.x, (double) node->bounds.origin.y,
(double) node->bounds.size.width, (double) node->bounds.size.height,
(guint32) width,
(guint32) height,
g_variant_new_fixed_array (G_VARIANT_TYPE ("u"),
mem_surface,
width * height,
sizeof (guint32)));
g_free (mem_surface);
return result;
}
}