packages/gdm: fix crash on monitor connect/disconnect event

This commit is contained in:
Max Headroom 2022-08-29 21:46:41 +02:00
parent 33fe857817
commit 725b7aecc2
3 changed files with 37 additions and 1 deletions

View file

@ -29,7 +29,7 @@
};
gnome = super.gnome.overrideScope' (self': super': {
inherit (patched) nautilus;
inherit (patched) nautilus gdm;
gnome-control-center = patched.gnome-control-center.override { inherit (self') gnome-user-share; };
gnome-shell = super'.gnome-shell.overrideAttrs (old: {
preFixup = old.preFixup + ''

View file

@ -9,6 +9,8 @@ super: rec {
ipfs = patch super.ipfs "patches/base/ipfs";
gdm = patch' super.gnome.gdm;
gnome-control-center = patch' super.gnome.gnome-control-center;
nautilus = (patch' super.gnome.nautilus).overrideAttrs (attrs: {

View file

@ -0,0 +1,34 @@
diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c
index 7de7b99cff5901458fb2155ede7c2aaf24a9fee6..b3335cd49915f2f8fecc666843e3c7262ab848f0 100644
--- a/daemon/gdm-local-display-factory.c
+++ b/daemon/gdm-local-display-factory.c
@@ -78,7 +78,7 @@ struct _GdmLocalDisplayFactory
gboolean seat0_graphics_check_timed_out;
guint seat0_graphics_check_timeout_id;
- guint uevent_handler_id;
+ gulong uevent_handler_id;
#if defined(ENABLE_USER_DISPLAY_SERVER)
unsigned int active_vt;
@@ -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");
}