clutter: Use G_PARAM_EXPLICIT_NOTIFY for actor and stage properties

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.
13 jobs for use-explicit-notify
Status Job ID Name Coverage
  Review
manual #1049027
manual
check-commit-log
manual #1049028
manual
check-merge-request
 
  Prepare
created #1049030
aarch64
build-fedora-container@aarch64
created #1049029
build-fedora-container@x86_64
 
  Build
created #1049032
aarch64
build-mutter@aarch64
created #1049031
build-mutter@x86_64
created #1049034
build-without-native-backend-and-wayland@x86_64
created #1049033
build-without-opengl-and-glx@x86_64
 
  Test
created #1049037
can-build-gnome-shell@x86_64
created #1049036
aarch64
test-mutter@aarch64
created #1049035
test-mutter@x86_64
 
  Coverage
created #1049039
aarch64
test-mutter-coverage@aarch64
created #1049038
test-mutter-coverage@x86_64