Michel Dänzer
50980f995b
tree-wide: Fix spelling of "inhibition"
...
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3444 >
2023-12-06 16:01:36 +00:00
Michel Dänzer
200fc76f14
wayland/idle-inhibit: Pass actor instance in on_actor_changed
...
This matches the other g_signal_connect / g_clear_signal_handler calls
for these signal handlers.
Fixes: a3c62bf8aa
("wayland/idle-inhibit: Add state tracking to fix races")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3444 >
2023-12-06 16:01:36 +00:00
Michel Dänzer
212283c13b
wayland/idle-inhibit: Handle NULL inhibitor->actor
...
Fixes: a3c62bf8aa
("wayland/idle-inhibit: Add state tracking to fix races")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3444 >
2023-12-06 16:01:36 +00:00
Jonas Ådahl
ec35d74f1f
wayland/idle-inhibit: Handle actor going away
...
There were some fixes to how to handle actor going away and being
recreated, but it didn't go all the way. This is the last step that
should have been.
Fixes: a3c62bf8aa
("wayland/idle-inhibit: Add state tracking to fix races")
Related: https://bugzilla.redhat.com/show_bug.cgi?id=2238785
Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/3014
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3277 >
2023-09-13 23:06:28 +00:00
Jonas Ådahl
88fef1d021
wayland/idle-inhibit: Handle immediate inhibitor destruction
...
If the inhibitor object was destroyed immediately, the proxy
construction completing would try to update the inhibitation state, but
this didn't work since it was already freed. Fix this by adding an
'initializing' state that keeps track of this.
Fixes: a3c62bf8aa
("wayland/idle-inhibit: Add state tracking to fix races")
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2998
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3234 >
2023-09-01 23:17:06 +00:00
Jonas Ådahl
a3c62bf8aa
wayland/idle-inhibit: Add state tracking to fix races
...
This changes how state is tracked by introducing an explicit state. We
need this since we use asynchronous calls to the out of process
component that handles actual inhibitation, including idleness.
This means if inhibitations changes rapidly, we might end up with an
incorrect state if we e.g. try to uninhibit while we're currently trying
to inhibit.
This is done by adding a state variable that accounts for the pending
state, as well as the active state, with a function that looks at the
current conditions to derive what state we should be in, and what state
we are in, to decide what the next action should be.
For example, if we're trying to inhibit, but now wants to uninhibit,
we'll wait for the inhibit call to complete, recheck what we want, which
would result in an async uninhibit call being made.
Fixes: 388b534062
("wayland: Implement idle inhibit protocol")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3219 >
2023-08-28 19:16:04 +02:00
Jonas Ådahl
170ba63dbf
wayland/idle-inhibit: Change to use GObject signals
...
Fixes: 388b534062
("wayland: Implement idle inhibit protocol")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3219 >
2023-08-28 16:25:03 +02:00
Jonas Ådahl
45abae7ebb
wayland/idle-inhibit: Remove confusing comment
...
Something about the surface being destroyed and visibility checked,
which isn't what is going on.
Fixes: 388b534062
("wayland: Implement idle inhibit protocol")
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3219 >
2023-08-28 16:24:59 +02:00
Charbel Assaad
388b534062
wayland: Implement idle inhibit protocol
...
This is based on the original work done by:
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/111
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/20
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3145 >
2023-08-26 20:19:22 +02:00