raster pushed a commit to branch efl-1.20. http://git.enlightenment.org/core/efl.git/commit/?id=685cff045cc49c0888dff2d58d61f65a961356e5
commit 685cff045cc49c0888dff2d58d61f65a961356e5 Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> Date: Wed Aug 23 17:23:57 2017 +0900 elm init - fix init seq and quicklaunch as we shut down x before evas ... and others. this leads to crashes if x ops are busy in a thread or engine evas thread shutdown happens to call engine calls that then do x calls... should apply in general to wl too. fixes some segv's on shutdown given the new gl thread patches. @fix --- src/lib/elementary/elm_main.c | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index 743a9820fd..cc38bfe3b1 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -737,7 +737,6 @@ elm_quicklaunch_init(int argc, eet_init(); ecore_init(); - edje_init(); #ifdef HAVE_ELEMENTARY_EMAP emap_init(); @@ -794,26 +793,26 @@ elm_quicklaunch_sub_init(int argc, if (_elm_sub_init_count > 1) return _elm_sub_init_count; if (quicklaunch_on) { - _elm_config_init(); -#ifdef SEMI_BROKEN_QUICKLAUNCH - return _elm_sub_init_count; -#endif +// _elm_config_init(); +//#ifdef SEMI_BROKEN_QUICKLAUNCH +// return _elm_sub_init_count; +//#endif } if (!quicklaunch_on) { ecore_app_args_set(argc, (const char **)argv); - evas_init(); + ecore_evas_init(); // FIXME: check errors + edje_init(); + elm_color_class_init(); _elm_module_init(); _elm_config_init(); _elm_config_sub_init(); - ecore_evas_init(); // FIXME: check errors ecore_imf_init(); ecore_con_init(); ecore_con_url_init(); _elm_prefs_initted = _elm_prefs_init(); _elm_ews_wm_init(); - elm_color_class_init(); } return _elm_sub_init_count; } @@ -825,23 +824,25 @@ elm_quicklaunch_sub_shutdown(void) if (_elm_sub_init_count > 0) return _elm_sub_init_count; if (quicklaunch_on) { -#ifdef SEMI_BROKEN_QUICKLAUNCH - return _elm_sub_init_count; -#endif +//#ifdef SEMI_BROKEN_QUICKLAUNCH +// return _elm_sub_init_count; +//#endif } if (!quicklaunch_on) { _elm_win_shutdown(); - _elm_module_shutdown(); - if (_elm_prefs_initted) - _elm_prefs_shutdown(); _elm_ews_wm_shutdown(); ecore_con_url_shutdown(); ecore_con_shutdown(); ecore_imf_shutdown(); + edje_shutdown(); ecore_evas_shutdown(); _elm_config_sub_shutdown(); - evas_shutdown(); + _elm_config_shutdown(); + _elm_module_shutdown(); + if (_elm_prefs_initted) + _elm_prefs_shutdown(); + elm_color_class_shutdown(); } return _elm_sub_init_count; } @@ -864,9 +865,6 @@ elm_quicklaunch_shutdown(void) ELM_SAFE_FREE(_elm_lib_dir, eina_stringshare_del); ELM_SAFE_FREE(_elm_appname, free); - _elm_config_shutdown(); - elm_color_class_shutdown(); - ELM_SAFE_FREE(_elm_exit_handler, ecore_event_handler_del); _elm_theme_shutdown(); @@ -878,15 +876,14 @@ elm_quicklaunch_shutdown(void) _elm_unneed_elocation(); _elm_unneed_ethumb(); _elm_unneed_web(); - eio_shutdown(); - ecore_file_shutdown(); #ifdef HAVE_ELEMENTARY_EMAP emap_shutdown(); #endif _elm_emotion_shutdown(); - edje_shutdown(); + ecore_file_shutdown(); + eio_init(); ecore_shutdown(); eet_shutdown(); --