backends: Check for updates in the last used device after dispatching events

Instead of relying in the device being updated from different parts of our
machinery for different backends, hook this up to our own event dispatching.
This will allow dropping all other places where this is done.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/285>
This commit is contained in:
Carlos Garnacho 2022-01-13 14:02:26 +01:00 committed by Marge Bot
parent ecafc489c1
commit 9708d04f7e

View File

@ -998,6 +998,22 @@ system_bus_gotten_cb (GObject *object,
NULL);
}
static void
update_last_device_from_event (MetaBackend *backend,
ClutterEvent *event)
{
ClutterInputDevice *source;
/* Handled elsewhere */
if (event->type == CLUTTER_DEVICE_ADDED ||
event->type == CLUTTER_DEVICE_REMOVED)
return;
source = clutter_event_get_source_device (event);
if (source)
meta_backend_update_last_device (backend, source);
}
/* Mutter is responsible for pulling events off the X queue, so Clutter
* doesn't need (and shouldn't) run its normal event source which polls
* the X fd, but we do have to deal with dispatching events that accumulate
@ -1037,6 +1053,7 @@ clutter_source_dispatch (GSource *source,
event->any.stage =
CLUTTER_STAGE (meta_backend_get_stage (backend_source->backend));
clutter_do_event (event);
update_last_device_from_event (backend_source->backend, event);
clutter_event_free (event);
}