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

-- 


Reply via email to