mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 17:40:40 -05:00
Handle XError and XIOError for unknown displays
The atk-bridge GTK+ module opens its own display; if we get an XIOError on that display, we shouldn't abort with a meta_bug() but just exit normally. Also fix a segfault if we got an XError for that display. https://bugzilla.gnome.org/show_bug.cgi?id=604319
This commit is contained in:
parent
7834bba6f7
commit
708c6162c4
@ -186,10 +186,10 @@ x_error_handler (Display *xdisplay,
|
|||||||
|
|
||||||
display = meta_display_for_x_display (xdisplay);
|
display = meta_display_for_x_display (xdisplay);
|
||||||
|
|
||||||
/* Display can be NULL here because the compositing manager
|
/* Display can be NULL here Xlib only has one global error handler; and
|
||||||
* has its own Display, but Xlib only has one global error handler
|
* there might be other displays open in the process.
|
||||||
*/
|
*/
|
||||||
if (display->error_traps > 0)
|
if (display && display->error_traps > 0)
|
||||||
{
|
{
|
||||||
/* we're in an error trap, chain to the trap handler
|
/* we're in an error trap, chain to the trap handler
|
||||||
* saved from GDK
|
* saved from GDK
|
||||||
@ -228,21 +228,18 @@ x_io_error_handler (Display *xdisplay)
|
|||||||
|
|
||||||
display = meta_display_for_x_display (xdisplay);
|
display = meta_display_for_x_display (xdisplay);
|
||||||
|
|
||||||
if (display == NULL)
|
|
||||||
meta_bug ("IO error received for unknown display?\n");
|
|
||||||
|
|
||||||
if (errno == EPIPE)
|
if (errno == EPIPE)
|
||||||
{
|
{
|
||||||
meta_warning (_("Lost connection to the display '%s';\n"
|
meta_warning (_("Lost connection to the display '%s';\n"
|
||||||
"most likely the X server was shut down or you killed/destroyed\n"
|
"most likely the X server was shut down or you killed/destroyed\n"
|
||||||
"the window manager.\n"),
|
"the window manager.\n"),
|
||||||
display->name);
|
display ? display->name : DisplayString (xdisplay));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
meta_warning (_("Fatal IO error %d (%s) on display '%s'.\n"),
|
meta_warning (_("Fatal IO error %d (%s) on display '%s'.\n"),
|
||||||
errno, g_strerror (errno),
|
errno, g_strerror (errno),
|
||||||
display->name);
|
display ? display->name : DisplayString (xdisplay));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Xlib would force an exit anyhow */
|
/* Xlib would force an exit anyhow */
|
||||||
|
Loading…
Reference in New Issue
Block a user