summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-09-20 21:00:33 -0400
committerMatthias Clasen <mclasen@redhat.com>2017-09-20 21:08:36 -0400
commit3a6dd85e7f64f89153dbc4fc004f90b226d0d55c (patch)
treed18a22bbb768cf5cbf9d4b9f998a39ce4ef153f3
parent25cd8230f3a1f89e70a9427ea19925b754c36f11 (diff)
downloadgtk+-wip/matthiasc/glyph-cache.tar.gz
gsk: Fix serialization of text nodeswip/matthiasc/glyph-cache
-rw-r--r--gsk/gskrendernodeimpl.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index a71bea7515..ad6ffdace5 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -3901,6 +3901,8 @@ gsk_text_node_serialize (GskRenderNode *node)
desc = pango_font_describe (self->font);
s = pango_font_description_to_string (desc);
+
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(uiiii)"));
for (i = 0; i < self->glyphs->num_glyphs; i++)
{
PangoGlyphInfo *glyph = &self->glyphs->glyphs[i];
@@ -3912,7 +3914,6 @@ gsk_text_node_serialize (GskRenderNode *node)
glyph->attr.is_cluster_start);
}
- g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(uiiii)"));
v = g_variant_new (GSK_TEXT_NODE_VARIANT_TYPE,
s,
self->color.red,
@@ -3935,7 +3936,7 @@ gsk_text_node_deserialize (GVariant *variant,
{
PangoFont *font;
PangoGlyphString *glyphs;
- GVariantIter iter;
+ GVariantIter *iter;
GskRenderNode *result;
PangoGlyphInfo glyph;
PangoFontDescription *desc;
@@ -3950,7 +3951,7 @@ gsk_text_node_deserialize (GVariant *variant,
if (!check_variant_type (variant, GSK_TEXT_NODE_VARIANT_TYPE, error))
return NULL;
- g_variant_get (variant, "(&sddddiidda(uiiii))",
+ g_variant_get (variant, "(&sdddddda(uiiii))",
&s, &color.red, &color.green, &color.blue, &color.alpha,
&x, &y, &iter);
@@ -3960,9 +3961,9 @@ gsk_text_node_deserialize (GVariant *variant,
font = pango_font_map_load_font (fontmap, context, desc);
glyphs = pango_glyph_string_new ();
- pango_glyph_string_set_size (glyphs, g_variant_iter_n_children (&iter));
+ pango_glyph_string_set_size (glyphs, g_variant_iter_n_children (iter));
i = 0;
- while (g_variant_iter_next (&iter, "(uiiii)",
+ while (g_variant_iter_next (iter, "(uiiii)",
&glyph.glyph, &glyph.geometry.width,
&glyph.geometry.x_offset, &glyph.geometry.y_offset,
&cluster_start))
@@ -3971,6 +3972,7 @@ gsk_text_node_deserialize (GVariant *variant,
glyphs->glyphs[i] = glyph;
i++;
}
+ g_variant_iter_free (iter);
result = gsk_text_node_new (font, glyphs, &color, x, y); /* FIXME: Avoid copying glyphs */