discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=70c6dc30d19b98cb11ff806d8ad8b42cff7bc11a
commit 70c6dc30d19b98cb11ff806d8ad8b42cff7bc11a Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Tue Nov 24 15:34:42 2015 -0500 use separate handler for x11 fatal errors when using xwayland a fatal error with xwayland is not a fatal error for the compositor, so this should not result in a dead session --- src/bin/e_comp_x.c | 3 ++- src/modules/xwayland/e_mod_main.c | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 2fedda4..fde492e 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -5333,7 +5333,8 @@ e_comp_x_init(void) return EINA_FALSE; } - ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL); + if (e_comp->comp_type == E_PIXMAP_TYPE_X) + ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL); if (!ecore_x_composite_query()) { diff --git a/src/modules/xwayland/e_mod_main.c b/src/modules/xwayland/e_mod_main.c index e73e254..eed026d 100644 --- a/src/modules/xwayland/e_mod_main.c +++ b/src/modules/xwayland/e_mod_main.c @@ -253,6 +253,14 @@ fail: } static void +xwayland_fatal(void *d EINA_UNUSED) +{ + /* on xwayland fatal, attempt to restart it */ + e_modapi_shutdown(NULL); + e_modapi_init(NULL); +} + +static void xnotify(void *d EINA_UNUSED, Ecore_Thread *eth EINA_UNUSED, void *disp) { if (!disp) @@ -263,6 +271,7 @@ xnotify(void *d EINA_UNUSED, Ecore_Thread *eth EINA_UNUSED, void *disp) assert(ecore_x_init_from_display(disp)); e_comp_x_init(); dnd_init(); + ecore_x_io_error_handler_set(xwayland_fatal, NULL); } static void --