gsk: Use the right pointer to the parent RenderItem

We copy the local RenderItem into the render items array, so we need to
use the copy in the array in order to get the correct reference.
This commit is contained in:
Emmanuele Bassi
2016-07-06 17:10:12 +01:00
parent 07d823e9ff
commit e3bf255d2f

View File

@@ -699,6 +699,7 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
graphene_rect_t bounds;
GskRenderNode *child;
RenderItem item;
RenderItem *ritem = NULL;
int program_id;
if (gsk_render_node_is_hidden (node))
@@ -801,14 +802,24 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
node->name != NULL ? node->name : "unnamed",
node));
if (gsk_render_node_is_opaque (node) && gsk_render_node_get_opacity (node) == 1.f)
g_array_append_val (self->opaque_render_items, item);
{
g_array_append_val (self->opaque_render_items, item);
ritem = &g_array_index (self->opaque_render_items,
RenderItem,
self->opaque_render_items->len - 1);
}
else
g_array_prepend_val (self->transparent_render_items, item);
{
g_array_append_val (self->transparent_render_items, item);
ritem = &g_array_index (self->transparent_render_items,
RenderItem,
self->transparent_render_items->len - 1);
}
recurse_children:
gsk_render_node_iter_init (&iter, node);
while (gsk_render_node_iter_next (&iter, &child))
gsk_gl_renderer_add_render_item (self, child, &item);
gsk_gl_renderer_add_render_item (self, child, ritem);
}
static gboolean