summaryrefslogtreecommitdiff
path: root/src/backends/native/meta-backend-native.c
diff options
context:
space:
mode:
authorMarco Trevisan (TreviƱo) <mail@3v1n0.net>2021-03-22 17:44:11 +0100
committerMarge Bot <marge-bot@gnome.org>2021-09-20 15:37:59 +0000
commitcbfb59b828dbd095b27d44e88fc77ac024fdea74 (patch)
treec3e3eac10bf77f7bf30f3abda90021c205315b28 /src/backends/native/meta-backend-native.c
parent9cb35e2c80ee88d4c6ae82638ee7d17a9203ac59 (diff)
downloadmutter-cbfb59b828dbd095b27d44e88fc77ac024fdea74.tar.gz
backends/native: Ignore udev events while we're paused
When the native backend is paused we still process the udev events even though this isn't needed and may just cause unneeded events to be triggered afterwards. Since we'll resume with full changes on such event, we can just block the signal hander when paused and restore it afterwards. As per this we can cleanup also a bit the device adding signal handling given that now we don't have to disconnect/reconnect it again. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1964>
Diffstat (limited to 'src/backends/native/meta-backend-native.c')
-rw-r--r--src/backends/native/meta-backend-native.c35
1 files changed, 5 insertions, 30 deletions
diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c
index 81d9629d0..2cc9add75 100644
--- a/src/backends/native/meta-backend-native.c
+++ b/src/backends/native/meta-backend-native.c
@@ -87,8 +87,6 @@ struct _MetaBackendNative
MetaKms *kms;
gboolean is_headless;
-
- gulong udev_device_added_handler_id;
};
static GInitableIface *initable_parent_iface;
@@ -101,19 +99,10 @@ G_DEFINE_TYPE_WITH_CODE (MetaBackendNative, meta_backend_native, META_TYPE_BACKE
initable_iface_init))
static void
-disconnect_udev_device_added_handler (MetaBackendNative *native);
-
-static void
meta_backend_native_dispose (GObject *object)
{
MetaBackendNative *native = META_BACKEND_NATIVE (object);
- if (native->udev_device_added_handler_id)
- {
- disconnect_udev_device_added_handler (native);
- native->udev_device_added_handler_id = 0;
- }
-
if (native->kms)
meta_kms_prepare_shutdown (native->kms);
@@ -485,20 +474,6 @@ on_udev_device_added (MetaUdev *udev,
meta_backend_add_gpu (backend, META_GPU (new_gpu_kms));
}
-static void
-connect_udev_device_added_handler (MetaBackendNative *native)
-{
- native->udev_device_added_handler_id =
- g_signal_connect (native->udev, "device-added",
- G_CALLBACK (on_udev_device_added), native);
-}
-
-static void
-disconnect_udev_device_added_handler (MetaBackendNative *native)
-{
- g_clear_signal_handler (&native->udev_device_added_handler_id, native->udev);
-}
-
static gboolean
init_gpus (MetaBackendNative *native,
GError **error)
@@ -549,7 +524,9 @@ init_gpus (MetaBackendNative *native,
return FALSE;
}
- connect_udev_device_added_handler (native);
+ g_signal_connect_object (native->udev, "device-added",
+ G_CALLBACK (on_udev_device_added), native,
+ 0);
return TRUE;
}
@@ -724,8 +701,7 @@ meta_backend_native_pause (MetaBackendNative *native)
meta_seat_native_release_devices (seat);
meta_renderer_pause (renderer);
-
- disconnect_udev_device_added_handler (native);
+ meta_udev_pause (native->udev);
meta_monitor_manager_native_pause (monitor_manager_native);
}
@@ -749,10 +725,9 @@ void meta_backend_native_resume (MetaBackendNative *native)
"Backend (resume)");
meta_monitor_manager_native_resume (monitor_manager_native);
+ meta_udev_resume (native->udev);
meta_kms_resume (native->kms);
- connect_udev_device_added_handler (native);
-
meta_seat_native_reclaim_devices (seat);
meta_renderer_resume (renderer);