extern E_API Eina_Bool e_nopause;
extern E_API Eina_Bool e_precache_end;
-extern E_API Eina_Bool x_fatal;
extern EINTERN const char *e_first_frame;
extern EINTERN double e_first_frame_start_time;
/* local variables */
static Eina_Bool really_know = EINA_FALSE;
static Eina_Bool inloop = EINA_FALSE;
-static jmp_buf x_fatal_buff;
static int _e_main_lvl = 0;
static int(*_e_main_shutdown_func[MAX_LEVEL]) (void);
/* external variables */
E_API Eina_Bool e_precache_end = EINA_FALSE;
-E_API Eina_Bool x_fatal = EINA_FALSE;
E_API Eina_Bool good = EINA_FALSE;
E_API Eina_Bool evil = EINA_FALSE;
E_API Eina_Bool starting = EINA_TRUE;
_e_main_create_wm_ready();
TRACE_DS_END();
- if (!setjmp(x_fatal_buff))
- ecore_main_loop_begin();
- else
- CRI("FATAL: X Died. Connection gone. Abbreviated Shutdown\n");
+
+ ecore_main_loop_begin();
inloop = EINA_FALSE;
stopping = EINA_TRUE;
}
}
-EINTERN void
-_e_main_cb_x_fatal(void *data EINA_UNUSED)
-{
- e_error_message_show("Lost X Connection.\n");
- ecore_main_loop_quit();
- if (!x_fatal)
- {
- x_fatal = EINA_TRUE;
- if (inloop) longjmp(x_fatal_buff, -99);
- }
-}
-
static Eina_Bool
_e_main_cb_signal_exit(void *data EINA_UNUSED, int ev_type EINA_UNUSED, void *ev EINA_UNUSED)
{
#endif
/* do not use EINA_LIST_FREE! e_object_del modifies list */
- if (x_fatal)
- e_module_save_all();
- else
+ while (_e_modules)
{
- while (_e_modules)
+ m = _e_modules->data;
+ if ((m) && (m->enabled) && !(m->error))
{
- m = _e_modules->data;
- if ((m) && (m->enabled) && !(m->error))
- {
- // if (m->func.save) m->func.save(m); dont' save config, there is a possibility
- // that the file save operation at the time of system shutdown
- // may break when filesystem unmount.
- if (m->func.shutdown) m->func.shutdown(m);
- m->enabled = 0;
- }
- e_object_del(E_OBJECT(m));
+ // if (m->func.save) m->func.save(m); dont' save config, there is a possibility
+ // that the file save operation at the time of system shutdown
+ // may break when filesystem unmount.
+ if (m->func.shutdown) m->func.shutdown(m);
+ m->enabled = 0;
}
+ e_object_del(E_OBJECT(m));
}
E_FREE_FUNC(_e_module_path_hash, eina_hash_free);