backends/native: Add udev abstraction layer

To be used to signal devices added, hotplugs and other udev events.
Currently the only event emitted is when a device is added.

https://gitlab.gnome.org/GNOME/mutter/issues/548
https://gitlab.gnome.org/GNOME/mutter/merge_requests/525
This commit is contained in:
Jonas Ådahl
2019-01-10 11:30:02 +01:00
committed by Georges Basile Stavracas Neto
parent 11e2005563
commit 73e8127d5d
5 changed files with 159 additions and 0 deletions

View File

@ -64,6 +64,7 @@ struct _MetaBackendNative
MetaBackend parent;
MetaLauncher *launcher;
MetaUdev *udev;
MetaBarrierManagerNative *barrier_manager;
};
@ -81,6 +82,7 @@ meta_backend_native_finalize (GObject *object)
{
MetaBackendNative *native = META_BACKEND_NATIVE (object);
g_clear_object (&native->udev);
meta_launcher_free (native->launcher);
G_OBJECT_CLASS (meta_backend_native_parent_class)->finalize (object);
@ -516,6 +518,8 @@ meta_backend_native_initable_init (GInitable *initable,
GCancellable *cancellable,
GError **error)
{
MetaBackendNative *native = META_BACKEND_NATIVE (initable);
if (!meta_is_stage_views_enabled ())
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
@ -523,6 +527,8 @@ meta_backend_native_initable_init (GInitable *initable,
return FALSE;
}
native->udev = meta_udev_new ();
return initable_parent_iface->init (initable, cancellable, error);
}
@ -585,6 +591,12 @@ meta_backend_native_get_launcher (MetaBackendNative *native)
return native->launcher;
}
MetaUdev *
meta_backend_native_get_udev (MetaBackendNative *native)
{
return native->udev;
}
gboolean
meta_activate_vt (int vt, GError **error)
{