diff --git a/src/pgtkterm.c b/src/pgtkterm.c index 321514fbf79..617ed3c5135 100644 --- a/src/pgtkterm.c +++ b/src/pgtkterm.c @@ -181,13 +181,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); - snprintf (printbuf, 1026, "%u:%s", - gdk_device_get_source (rec->device), - gdk_device_get_name (rec->device)); + 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)); + + 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->name = build_string (printbuf); rec->next = dpyinfo->devices; dpyinfo->devices = rec; }