XEmacs 21.4.7 "Economic Science".
[chise/xemacs-chise.git.1] / src / device-x.c
index a0586b6..4bfa4b0 100644 (file)
@@ -168,6 +168,8 @@ get_x_display (Lisp_Object device)
 /*                   initializing an X connection                      */
 /************************************************************************/
 
+static struct device *device_being_initialized = NULL;
+
 static void
 allocate_x_device_struct (struct device *d)
 {
@@ -562,7 +564,9 @@ x_init_device (struct device *d, Lisp_Object props)
    */
   slow_down_interrupts ();
   /* May not be needed but XtOpenDisplay could not deal with signals here. */
+  device_being_initialized = d;
   dpy = DEVICE_X_DISPLAY (d) = XOpenDisplay (disp_name);
+  device_being_initialized = NULL;
   speed_up_interrupts ();
 
   if (dpy == 0)
@@ -1116,6 +1120,9 @@ x_IO_error_handler (Display *disp)
   Lisp_Object dev;
   struct device *d = get_device_from_display_1 (disp);
 
+  if (!d)
+    d = device_being_initialized;
+
   assert (d != NULL);
   XSETDEVICE (dev, d);
 
@@ -1434,13 +1441,13 @@ found.  If the third arg is `string', a string is returned, and if it is
 returned value is the list (t) for true, (nil) for false, and is nil to
 mean ``unspecified''.
 */
-       (name, class, type, locale, device, no_error))
+       (name, class, type, locale, device, noerror))
 {
   char* name_string, *class_string;
   char *raw_result;
   XrmDatabase db;
   Display *display;
-  Error_behavior errb = decode_error_behavior_flag (no_error);
+  Error_behavior errb = decode_error_behavior_flag (noerror);
 
   CHECK_STRING (name);
   CHECK_STRING (class);