From: Po Lu Date: Mon, 17 Feb 2025 02:56:37 +0000 (+0800) Subject: * src/pgtkterm.c (pgtk_enumerate_devices): Circumvent bug#76239. X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e432786b1af921a9e8ac3f858fb11469574307e3;p=emacs.git * src/pgtkterm.c (pgtk_enumerate_devices): Circumvent bug#76239. (cherry picked from commit e34ea5db5f1c09582e3779828ba248eec5769eb2) --- 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; }