mirror of
https://github.com/brl/mutter.git
synced 2025-01-27 11:59:12 +00:00
Robert Bragg
14dbe81deb
material: Don't prune ancestry if it owns some layers
Each time a material property changes we look to see if any of its ancestry has become redundant and if so we prune that redundant ancestry. There was a problem with the logic that handles this though because we weren't considering that a material which is a layer state authority may still defer to ancestors to define the state of individual layers. For example a material that derives from a parent with 5 layers can become a STATE_LAYERS authority by simply changing it's ->n_layers count to 4 and in that case it can still defer to its ancestors to define the state of those 4 layers. This patch checks first if a material is a layer state authority and if so only tries to prune its ancestry if it also *owns* all the individual layers it depends on. (I.e. if g_list_length (material->layer_differences) != material->n_layers then it's not safe to try pruning its ancestry!) http://bugzilla-attachments.gnome.org/attachment.cgi?id=170907
Description
Languages
C
98.9%
Meson
0.7%
Python
0.3%