mirror of
https://github.com/brl/mutter.git
synced 2024-12-23 19:42:05 +00:00
MetaWayland: install an X io error handler
This way can detect X disconnections correctly, crash with a core dump and reset the tty. https://bugzilla.gnome.org/show_bug.cgi?id=706962
This commit is contained in:
parent
c9830c13b4
commit
0cceddab75
@ -75,6 +75,8 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "meta-xwayland-private.h"
|
||||||
|
|
||||||
#define GRAB_OP_IS_WINDOW_SWITCH(g) \
|
#define GRAB_OP_IS_WINDOW_SWITCH(g) \
|
||||||
(g == META_GRAB_OP_KEYBOARD_TABBING_NORMAL || \
|
(g == META_GRAB_OP_KEYBOARD_TABBING_NORMAL || \
|
||||||
g == META_GRAB_OP_KEYBOARD_TABBING_DOCK || \
|
g == META_GRAB_OP_KEYBOARD_TABBING_DOCK || \
|
||||||
@ -516,6 +518,9 @@ meta_display_open (void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
meta_xwayland_complete_init ();
|
||||||
|
|
||||||
if (meta_is_syncing ())
|
if (meta_is_syncing ())
|
||||||
XSynchronize (xdisplay, True);
|
XSynchronize (xdisplay, True);
|
||||||
|
|
||||||
|
@ -27,6 +27,9 @@
|
|||||||
gboolean
|
gboolean
|
||||||
meta_xwayland_start (MetaWaylandCompositor *compositor);
|
meta_xwayland_start (MetaWaylandCompositor *compositor);
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_xwayland_complete_init (void);
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_xwayland_stop (MetaWaylandCompositor *compositor);
|
meta_xwayland_stop (MetaWaylandCompositor *compositor);
|
||||||
|
|
||||||
|
@ -301,6 +301,14 @@ xserver_died (GPid pid,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
x_io_error (Display *display)
|
||||||
|
{
|
||||||
|
g_error ("Connection to xwayland lost");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
meta_xwayland_start (MetaWaylandCompositor *compositor)
|
meta_xwayland_start (MetaWaylandCompositor *compositor)
|
||||||
{
|
{
|
||||||
@ -425,6 +433,18 @@ meta_xwayland_start (MetaWaylandCompositor *compositor)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* To be called right after connecting */
|
||||||
|
void
|
||||||
|
meta_xwayland_complete_init (void)
|
||||||
|
{
|
||||||
|
/* We install an X IO error handler in addition to the child watch,
|
||||||
|
because after Xlib connects our child watch may not be called soon
|
||||||
|
enough, and therefore we won't crash when X exits (and most important
|
||||||
|
we won't reset the tty).
|
||||||
|
*/
|
||||||
|
XSetIOErrorHandler (x_io_error);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
meta_xwayland_stop (MetaWaylandCompositor *compositor)
|
meta_xwayland_stop (MetaWaylandCompositor *compositor)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user