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 #1050062
manual
check-commit-log
manual #1050063
manual
check-merge-request
 
  Prepare
created #1050065
aarch64
build-fedora-container@aarch64
created #1050064
build-fedora-container@x86_64
 
  Build
created #1050067
aarch64
build-mutter@aarch64
created #1050066
build-mutter@x86_64
created #1050069
build-without-native-backend-and-wayland@x86_64
created #1050068
build-without-opengl-and-glx@x86_64
 
  Test
created #1050072
can-build-gnome-shell@x86_64
created #1050071
aarch64
test-mutter@aarch64
created #1050070
test-mutter@x86_64
 
  Coverage
created #1050074
aarch64
test-mutter-coverage@aarch64
created #1050073
test-mutter-coverage@x86_64