summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2022-03-22 10:16:58 -0400
committerRay Strode <halfline@gmail.com>2022-03-23 14:28:21 +0000
commit307c683f00e1711973139837992ca0f6f55314a5 (patch)
tree3ba2b9a6e77b2cc9af052e1ce46950de4eef8312
parentf0f527ff3815caa091be24168824f74853c0c050 (diff)
downloadgdm-307c683f00e1711973139837992ca0f6f55314a5.tar.gz
local-display-factory: Stop listening to udev events when necessary
At the moment we still listen for udev events after we've determined the system has settled (or a timeout has happened). This means if there is a udev event late, the login screen could get brought back up while the user is using the system. This commit fixes that.
-rw-r--r--daemon/gdm-local-display-factory.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
index 4a66ad8f..b3335cd4 100644
--- a/daemon/gdm-local-display-factory.c
+++ b/daemon/gdm-local-display-factory.c
@@ -710,6 +710,10 @@ udev_is_settled (GdmLocalDisplayFactory *factory)
g_debug ("GdmLocalDisplayFactory: udev has %ssettled enough for graphics.", is_settled? "" : "not ");
g_list_free_full (devices, g_object_unref);
+
+ if (is_settled)
+ g_clear_signal_handler (&factory->uevent_handler_id, factory->gudev_client);
+
return is_settled;
}
#endif
@@ -1287,9 +1291,6 @@ on_uevent (GUdevClient *client,
if (!udev_is_settled (factory))
return;
- g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id);
- factory->uevent_handler_id = 0;
-
gdm_settings_direct_reload ();
ensure_display_for_seat (factory, "seat0");
}