pipeline: reclaim ownership if reverting to layer ancestor
In _cogl_pipeline_prune_empty_layer_difference if we are reverting to the immediate parent of an empty/redundant layer then it is not enough to simply add a reference to the pipeline's ->layer_differences list without also updating parent_layer->owner to point back to its new owner. This oversight was leading us to break the invariable that all layers referenced in layer_differences have an owner and was also causing us to break another invariable whereby after calling _cogl_pipeline_layer_pre_change_notify the returned layer must always be owned by the given 'required_owner'. http://bugzilla.clutter-project.org/show_bug.cgi?id=2588
This commit is contained in:
parent
12b622a320
commit
7de3655298
@ -2194,7 +2194,8 @@ _cogl_pipeline_prune_empty_layer_difference (CoglPipeline *layers_authority,
|
|||||||
if (layer_parent->index == layer->index && layer_parent->owner == NULL)
|
if (layer_parent->index == layer->index && layer_parent->owner == NULL)
|
||||||
{
|
{
|
||||||
cogl_object_ref (layer_parent);
|
cogl_object_ref (layer_parent);
|
||||||
link->data = _cogl_pipeline_layer_get_parent (layer);
|
layer_parent->owner = layers_authority;
|
||||||
|
link->data = layer_parent;
|
||||||
cogl_object_unref (layer);
|
cogl_object_unref (layer);
|
||||||
recursively_free_layer_caches (layers_authority);
|
recursively_free_layer_caches (layers_authority);
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user