Skip to content

st: Do not force allocation updates during shadow creation

If an actor is pending a relayout when get_allocation_box() is called, the method forces an allocation update. In case of StWidget, this might then result in a style update and a consecutive invalidation of the shadow spec.

A helper method that invalidates one of its parameters as a side effect (and by extension its return value as well) is most unexpected, so cur- rently _st_create_shadow_pipeline_from_actor() poses an easy trap to callers to run into.

Remove that trap by calling get_size()/get_position() instead, which don't have the unintended side effect - it is still a good idea to fix callers who were running into this to not waste resources on creating shadows that are invalidated before the next paint, but throwing un- defined behavior at them is harsh ...

https://bugzilla.gnome.org/show_bug.cgi?id=788908

Merge request reports