Mercurial > hg > xemacs-beta
diff src/device-x.c @ 756:00793f182d30
[xemacs-hg @ 2002-02-22 17:12:26 by michaels]
2002-02-11 Mike Sperber <mike@xemacs.org>
* device-x.c:
(x_IO_error_handler):
(x_init_device): Temporarily keep device in static variable
`device_being_initialized' so we can recover gracefully from
internal XOpenDevice failure. (XOpenDevice is documented to
return NULL on failure, but sometimes calls the IO error handler
instead.)
author | michaels |
---|---|
date | Fri, 22 Feb 2002 17:12:27 +0000 |
parents | fdefd0186b75 |
children | 943eaba38521 |
line wrap: on
line diff
--- a/src/device-x.c Sat Feb 16 07:25:39 2002 +0000 +++ b/src/device-x.c Fri Feb 22 17:12:27 2002 +0000 @@ -168,6 +168,8 @@ /* initializing an X connection */ /************************************************************************/ +static struct device *device_being_initialized = NULL; + static void allocate_x_device_struct (struct device *d) { @@ -563,7 +565,9 @@ */ 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) @@ -1117,6 +1121,9 @@ Lisp_Object dev; struct device *d = get_device_from_display_1 (disp); + if (!d) + d = device_being_initialized; + assert (d != NULL); XSETDEVICE (dev, d);