From e432786b1af921a9e8ac3f858fb11469574307e3 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Mon, 17 Feb 2025 10:56:37 +0800 Subject: [PATCH] * src/pgtkterm.c (pgtk_enumerate_devices): Circumvent bug#76239. (cherry picked from commit e34ea5db5f1c09582e3779828ba248eec5769eb2) --- src/pgtkterm.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/pgtkterm.c b/src/pgtkterm.c index d47b1da7262..6840340dec6 100644 --- a/src/pgtkterm.c +++ b/src/pgtkterm.c @@ -184,11 +184,27 @@ pgtk_enumerate_devices (struct pgtk_display_info *dpyinfo, { rec = xmalloc (sizeof *rec); rec->seat = g_object_ref (seat); - rec->device = GDK_DEVICE (t1->data); - rec->name = (make_formatted_string - ("%u:%s", + + if (t1->data) + { + rec->device = GDK_DEVICE (t1->data); + snprintf (printbuf, 1026, "%u:%s", gdk_device_get_source (rec->device), - gdk_device_get_name (rec->device))); + gdk_device_get_name (rec->device)); + + rec->name = build_string (printbuf); + } + else + { + /* GTK bug 7737 results in GDK seats being initialized + with NULL devices in some cirumstances. As events will + presumably also be delivered with their device fields + set to NULL, insert a ersatz device record associated + with NULL. (bug#76239) */ + rec->device = NULL; + rec->name = build_string ("0:unknown device"); + } + rec->next = dpyinfo->devices; dpyinfo->devices = rec; } -- 2.39.5