backend: Take over seat ownership from the clutter backend

Having the clutter backend owning and managing creates complication for
implementing graceful shutdown, so move it to the real backend.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1775>
This commit is contained in:
Jonas Ådahl
2021-03-12 08:31:50 +01:00
committed by Marge Bot
parent 16b63451a3
commit 6ecd911dd0
9 changed files with 96 additions and 105 deletions

View File

@ -149,6 +149,7 @@ struct _MetaBackendPrivate
#endif
ClutterBackend *clutter_backend;
ClutterSeat *default_seat;
ClutterActor *stage;
GList *gpus;
@ -244,6 +245,7 @@ meta_backend_dispose (GObject *object)
g_clear_object (&priv->profiler);
#endif
g_clear_object (&priv->default_seat);
g_clear_object (&priv->clutter_backend);
G_OBJECT_CLASS (meta_backend_parent_class)->dispose (object);
@ -1047,10 +1049,18 @@ meta_get_clutter_backend (void)
return meta_backend_get_clutter_backend (backend);
}
static ClutterSeat *
meta_backend_create_default_seat (MetaBackend *backend,
GError **error)
{
return META_BACKEND_GET_CLASS (backend)->create_default_seat (backend, error);
}
static gboolean
init_clutter (MetaBackend *backend,
GError **error)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
MetaBackendSource *backend_source;
GSource *source;
@ -1063,6 +1073,10 @@ init_clutter (MetaBackend *backend,
return FALSE;
}
priv->default_seat = meta_backend_create_default_seat (backend, error);
if (!priv->default_seat)
return FALSE;
source = g_source_new (&clutter_source_funcs, sizeof (MetaBackendSource));
backend_source = (MetaBackendSource *) source;
backend_source->backend = backend;
@ -1393,6 +1407,14 @@ meta_backend_get_stage (MetaBackend *backend)
return priv->stage;
}
ClutterSeat *
meta_backend_get_default_seat (MetaBackend *backend)
{
MetaBackendPrivate *priv = meta_backend_get_instance_private (backend);
return priv->default_seat;
}
static gboolean
update_last_device (MetaBackend *backend)
{