udev: Create udev in MetaBackend
So we can use it for backlight control in both the native and X11 backends. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4130>
This commit is contained in:
parent
387a6e82e5
commit
e68728f151
@ -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
|
||||
|
@ -97,3 +97,4 @@ typedef struct _MetaEis MetaEis;
|
||||
typedef struct _MetaEisClient MetaEisClient;
|
||||
|
||||
typedef struct _MetaLauncher MetaLauncher;
|
||||
typedef struct _MetaUdev MetaUdev;
|
||||
|
@ -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:
|
||||
*
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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',
|
||||
]
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user