discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a95e49fe6bb119cbd98ceae5240153f1ae2e687c
commit a95e49fe6bb119cbd98ceae5240153f1ae2e687c Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Mon Jan 22 16:51:40 2018 -0500 further protect against crashes when xwayland crashes --- src/bin/e_comp_x.c | 31 +++++++++++++++++-------------- src/bin/e_xsettings.c | 2 +- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c index 5ba087032..aed0add7a 100644 --- a/src/bin/e_comp_x.c +++ b/src/bin/e_comp_x.c @@ -5380,23 +5380,26 @@ _e_comp_x_del(E_Comp *c) ecore_x_window_key_ungrab(c->root, "F", ECORE_EVENT_MODIFIER_SHIFT | ECORE_EVENT_MODIFIER_CTRL | ECORE_EVENT_MODIFIER_ALT, 0); - if (c->grabbed) + if (ecore_x_display_get()) { - c->grabbed = 0; - ecore_x_ungrab(); - } + if (c->grabbed) + { + c->grabbed = 0; + ecore_x_ungrab(); + } - for (i = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); i <= e_comp_canvas_layer_map(E_LAYER_CLIENT_PRIO); i++) - ecore_x_window_free(c->layers[i].win); + for (i = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); i <= e_comp_canvas_layer_map(E_LAYER_CLIENT_PRIO); i++) + ecore_x_window_free(c->layers[i].win); - ecore_x_composite_unredirect_subwindows - (c->root, ECORE_X_COMPOSITE_UPDATE_MANUAL); - if (c->block_win) ecore_x_window_free(c->block_win); - ecore_x_composite_render_window_disable(c->win); - e_alert_composite_win(c->root, 0); + ecore_x_composite_unredirect_subwindows + (c->root, ECORE_X_COMPOSITE_UPDATE_MANUAL); + if (c->block_win) ecore_x_window_free(c->block_win); + ecore_x_composite_render_window_disable(c->win); + e_alert_composite_win(c->root, 0); - ecore_x_window_free(c->cm_selection); - ecore_x_screen_is_composited_set(0, 0); + ecore_x_window_free(c->cm_selection); + ecore_x_screen_is_composited_set(0, 0); + } eina_list_free(c->x_comp_data->retry_clients); ecore_timer_del(c->x_comp_data->retry_timer); @@ -5967,9 +5970,9 @@ e_comp_x_shutdown(void) E_FREE_FUNC(frame_extents, eina_hash_free); E_FREE_FUNC(mouse_in_fix_check_timer, ecore_timer_del); e_xsettings_shutdown(); + if (x_fatal) return; if (e_comp->comp_type == E_PIXMAP_TYPE_X) ecore_x_screensaver_custom_blanking_disable(); - if (x_fatal) return; e_atoms_shutdown(); /* ecore_x_ungrab(); */ ecore_x_focus_reset(); diff --git a/src/bin/e_xsettings.c b/src/bin/e_xsettings.c index f3bdab1b3..8bc275b55 100644 --- a/src/bin/e_xsettings.c +++ b/src/bin/e_xsettings.c @@ -622,7 +622,7 @@ _e_xsettings_stop(void) if (manager->timer_retry) ecore_timer_del(manager->timer_retry); - if (!stopping) + if ((!stopping) && (!x_fatal)) _e_xsettings_deactivate(manager); E_FREE(manager); --