Skip to content

clutter: Use G_PARAM_EXPLICIT_NOTIFY for actor and stage properties

Jonas Dreßler requested to merge verdre/mutter:use-explicit-notify into master

Turns out GObject implicitly notifies all properties by default as soon as a property setter is called, no matter if the property actually changed or not. One can opt-out of this behavior by setting the G_PARAM_EXPLICIT_NOTIFY flag.

So since almost all our properties get notified explicitely (well, except ClutterActors deprecated show-on-set-parent property), set this flag for all properties of ClutterActor and ClutterStage now. This significantly reduces the number of notify:: signals emitted on ClutterActors, because in gnome-shell javascript we usually set GObject properties directly, not by going through the extra setter method.

More cleanups can be done in the future, since this flag is suitable for almost every property in Clutter and even Mutter.

This fixes a crash where we'd hit a newly introduced assertion in on_device_actor_reactive_changed() of ClutterStage because notify::reactive got emitted multiple times.

Merge request reports