diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h index f09e4c99d..ee2d6c91d 100644 --- a/src/backends/meta-backend-private.h +++ b/src/backends/meta-backend-private.h @@ -165,6 +165,11 @@ MetaColorManager * meta_backend_get_color_manager (MetaBackend *backend); META_EXPORT_TEST MetaLauncher * meta_backend_get_launcher (MetaBackend *backend); +#ifdef HAVE_LIBGUDEV +META_EXPORT_TEST +MetaUdev * meta_backend_get_udev (MetaBackend *backend); +#endif + MetaCursorRenderer * meta_backend_get_cursor_renderer_for_device (MetaBackend *backend, ClutterInputDevice *device); META_EXPORT_TEST diff --git a/src/backends/meta-backend-types.h b/src/backends/meta-backend-types.h index 42d571709..f7803ec24 100644 --- a/src/backends/meta-backend-types.h +++ b/src/backends/meta-backend-types.h @@ -97,3 +97,4 @@ typedef struct _MetaEis MetaEis; typedef struct _MetaEisClient MetaEisClient; typedef struct _MetaLauncher MetaLauncher; +typedef struct _MetaUdev MetaUdev; diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c index 5eb94f902..f87dcdfa3 100644 --- a/src/backends/meta-backend.c +++ b/src/backends/meta-backend.c @@ -95,6 +95,10 @@ #include "wayland/meta-wayland.h" #endif +#ifdef HAVE_LIBGUDEV +#include "backends/meta-udev.h" +#endif + enum { PROP_0, @@ -146,6 +150,9 @@ struct _MetaBackendPrivate MetaRenderer *renderer; MetaColorManager *color_manager; MetaLauncher *launcher; +#ifdef HAVE_LIBGUDEV + MetaUdev *udev; +#endif #ifdef HAVE_EGL MetaEgl *egl; #endif @@ -260,6 +267,10 @@ meta_backend_finalize (GObject *object) g_clear_object (&priv->launcher); +#ifdef HAVE_LIBGUDEV + g_clear_object (&priv->udev); +#endif + if (priv->sleep_signal_id) { g_dbus_connection_signal_unsubscribe (priv->system_bus, priv->sleep_signal_id); @@ -636,6 +647,9 @@ meta_backend_real_pause (MetaBackend *backend) MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); meta_renderer_pause (priv->renderer); +#ifdef HAVE_LIBGUDEV + meta_udev_pause (priv->udev); +#endif } static void @@ -644,6 +658,9 @@ meta_backend_real_resume (MetaBackend *backend) MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); ClutterStage *stage = CLUTTER_STAGE (meta_backend_get_stage (backend)); +#ifdef HAVE_LIBGUDEV + meta_udev_resume (priv->udev); +#endif meta_renderer_resume (priv->renderer); clutter_actor_queue_redraw (CLUTTER_ACTOR (stage)); } @@ -1312,6 +1329,10 @@ meta_backend_initable_init (GInitable *initable, if (!meta_backend_create_launcher (backend, &priv->launcher, error)) return FALSE; +#ifdef HAVE_LIBGUDEV + priv->udev = meta_udev_new (backend); +#endif + priv->settings = meta_settings_new (backend); priv->dnd = meta_dnd_new (backend); @@ -1523,6 +1544,16 @@ meta_backend_get_launcher (MetaBackend *backend) return priv->launcher; } +#ifdef HAVE_LIBGUDEV +MetaUdev * +meta_backend_get_udev (MetaBackend *backend) +{ + MetaBackendPrivate *priv = meta_backend_get_instance_private (backend); + + return priv->udev; +} +#endif + /** * meta_backend_get_orientation_manager: * diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index ea1829aa9..ec6de8fc7 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -84,7 +84,6 @@ typedef struct _MetaBackendNativePrivate MetaBackend parent; MetaDevicePool *device_pool; - MetaUdev *udev; MetaKms *kms; GHashTable *startup_render_devices; @@ -115,7 +114,6 @@ meta_backend_native_dispose (GObject *object) g_clear_pointer (&priv->startup_render_devices, g_hash_table_unref); g_clear_object (&priv->kms); - g_clear_object (&priv->udev); g_clear_object (&priv->device_pool); } @@ -643,7 +641,7 @@ init_gpus (MetaBackendNative *native, MetaBackendNativePrivate *priv = meta_backend_native_get_instance_private (native); MetaBackend *backend = META_BACKEND (native); - MetaUdev *udev = meta_backend_native_get_udev (native); + MetaUdev *udev = meta_backend_get_udev (backend); MetaKms *kms = meta_backend_native_get_kms (native); g_autoptr (GError) local_error = NULL; MetaUdevDeviceType device_type = 0; @@ -719,9 +717,10 @@ init_gpus (MetaBackendNative *native, return FALSE; } - g_signal_connect_object (priv->udev, "device-added", - G_CALLBACK (on_udev_device_added), native, - 0); + g_signal_connect_object (udev, "device-added", + G_CALLBACK (on_udev_device_added), + native, + G_CONNECT_DEFAULT); return TRUE; } @@ -803,7 +802,6 @@ meta_backend_native_init_basic (MetaBackend *backend, g_free, g_object_unref); priv->device_pool = meta_device_pool_new (native); - priv->udev = meta_udev_new (backend); kms_flags = META_KMS_FLAG_NONE; if (meta_backend_is_headless (backend)) @@ -913,15 +911,6 @@ meta_backend_native_get_device_pool (MetaBackendNative *backend_native) return priv->device_pool; } -MetaUdev * -meta_backend_native_get_udev (MetaBackendNative *backend_native) -{ - MetaBackendNativePrivate *priv = - meta_backend_native_get_instance_private (backend_native); - - return priv->udev; -} - MetaKms * meta_backend_native_get_kms (MetaBackendNative *backend_native) { @@ -959,9 +948,6 @@ meta_backend_native_activate_vt (MetaBackendNative *backend_native, static void meta_backend_native_pause (MetaBackend *backend) { - MetaBackendNative *native = META_BACKEND_NATIVE (backend); - MetaBackendNativePrivate *priv = - meta_backend_native_get_instance_private (native); MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); MetaMonitorManagerNative *monitor_manager_native = @@ -971,7 +957,6 @@ meta_backend_native_pause (MetaBackend *backend) META_SEAT_NATIVE (clutter_backend_get_default_seat (clutter_backend)); meta_seat_native_release_devices (seat); - meta_udev_pause (priv->udev); meta_monitor_manager_native_pause (monitor_manager_native); META_BACKEND_CLASS (meta_backend_native_parent_class)->pause (backend); @@ -996,7 +981,6 @@ meta_backend_native_resume (MetaBackend *backend) META_BACKEND_CLASS (meta_backend_native_parent_class)->resume (backend); meta_monitor_manager_native_resume (monitor_manager_native); - meta_udev_resume (priv->udev); meta_kms_resume (priv->kms); meta_seat_native_reclaim_devices (seat); diff --git a/src/backends/native/meta-backend-native.h b/src/backends/native/meta-backend-native.h index 315898622..47a42e88f 100644 --- a/src/backends/native/meta-backend-native.h +++ b/src/backends/native/meta-backend-native.h @@ -43,9 +43,6 @@ gboolean meta_backend_native_activate_vt (MetaBackendNative *backend_native, MetaLauncher * meta_backend_native_get_launcher (MetaBackendNative *native); -META_EXPORT_TEST -MetaUdev * meta_backend_native_get_udev (MetaBackendNative *native); - META_EXPORT_TEST MetaKms * meta_backend_native_get_kms (MetaBackendNative *native); diff --git a/src/backends/native/meta-kms.c b/src/backends/native/meta-kms.c index fb9864b60..b1aac8756 100644 --- a/src/backends/native/meta-kms.c +++ b/src/backends/native/meta-kms.c @@ -378,8 +378,7 @@ meta_kms_new (MetaBackend *backend, MetaKmsFlags flags, GError **error) { - MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend); - MetaUdev *udev = meta_backend_native_get_udev (backend_native); + MetaUdev *udev = meta_backend_get_udev (backend); MetaKms *kms; const char *thread_type_string; const char *preferred_scheduling_priority_string; @@ -473,8 +472,7 @@ meta_kms_finalize (GObject *object) { MetaKms *kms = META_KMS (object); MetaBackend *backend = meta_thread_get_backend (META_THREAD (kms)); - MetaBackendNative *backend_native = META_BACKEND_NATIVE (backend); - MetaUdev *udev = meta_backend_native_get_udev (backend_native); + MetaUdev *udev = meta_backend_get_udev (backend); g_list_free_full (kms->devices, g_object_unref); diff --git a/src/meson.build b/src/meson.build index 885fd222e..054f6ef69 100644 --- a/src/meson.build +++ b/src/meson.build @@ -279,8 +279,6 @@ mutter_sources = [ 'backends/meta-stage-private.h', 'backends/meta-stage-view.c', 'backends/meta-stage-view-private.h', - 'backends/meta-udev.c', - 'backends/meta-udev.h', 'backends/meta-viewport-info.c', 'backends/meta-viewport-info.h', 'backends/meta-virtual-monitor.c', @@ -913,6 +911,13 @@ if have_wayland_eglstream ] endif +if have_libgudev + mutter_sources += [ + 'backends/meta-udev.c', + 'backends/meta-udev.h', + ] +endif + mutter_private_enum_sources = [ 'core/window-private.h', ] diff --git a/src/tests/native-kms-headless-start.c b/src/tests/native-kms-headless-start.c index 9f5d0b664..bea310fe5 100644 --- a/src/tests/native-kms-headless-start.c +++ b/src/tests/native-kms-headless-start.c @@ -72,7 +72,7 @@ static void meta_test_headless_monitor_connect (void) { MetaBackend *backend = meta_context_get_backend (test_context); - MetaUdev *udev = meta_backend_native_get_udev (META_BACKEND_NATIVE (backend)); + MetaUdev *udev = meta_backend_get_udev (backend); MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); g_autolist (GObject) udev_devices = NULL; diff --git a/src/tests/native-kms-hotplug.c b/src/tests/native-kms-hotplug.c index 9574834f0..db97a6f72 100644 --- a/src/tests/native-kms-hotplug.c +++ b/src/tests/native-kms-hotplug.c @@ -136,7 +136,7 @@ meta_test_disconnect_connect (void) MetaMonitorManager *monitor_manager = meta_backend_get_monitor_manager (backend); ClutterActor *stage = meta_backend_get_stage (backend); - MetaUdev *udev = meta_backend_native_get_udev (META_BACKEND_NATIVE (backend)); + MetaUdev *udev = meta_backend_get_udev (backend); g_autolist (GObject) udev_devices = NULL; GUdevDevice *udev_device; GList *logical_monitors; @@ -371,7 +371,7 @@ static void emulate_hotplug (void) { MetaBackend *backend = meta_context_get_backend (test_context); - MetaUdev *udev = meta_backend_native_get_udev (META_BACKEND_NATIVE (backend)); + MetaUdev *udev = meta_backend_get_udev (backend); g_autoptr (GError) error = NULL; g_autolist (GObject) udev_devices = NULL; GUdevDevice *udev_device;