forked from enlightenment/efl
ecore_evas: avoid crash during shutdown due to Ecore_Event queue.
This commit is contained in:
parent
0e8a20a0a6
commit
0cd43b45d9
|
@ -573,8 +573,12 @@ ecore_evas_shutdown(void)
|
|||
return _ecore_evas_init_count;
|
||||
|
||||
eina_log_timing(_ecore_evas_log_dom,
|
||||
EINA_LOG_STATE_START,
|
||||
EINA_LOG_STATE_SHUTDOWN);
|
||||
EINA_LOG_STATE_START,
|
||||
EINA_LOG_STATE_SHUTDOWN);
|
||||
|
||||
#ifdef BUILD_ECORE_EVAS_EWS
|
||||
_ecore_evas_ews_events_flush();
|
||||
#endif
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
|
||||
|
@ -590,7 +594,7 @@ ecore_evas_shutdown(void)
|
|||
_ecore_evas_engine_shutdown();
|
||||
if (_ecore_evas_async_events_fd)
|
||||
ecore_main_fd_handler_del(_ecore_evas_async_events_fd);
|
||||
|
||||
|
||||
ecore_fork_reset_callback_del(_ecore_evas_fork_cb, NULL);
|
||||
|
||||
eina_log_domain_unregister(_ecore_evas_log_dom);
|
||||
|
|
|
@ -705,6 +705,28 @@ _ecore_evas_ews_events_init(void)
|
|||
ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE = ecore_event_type_new();
|
||||
}
|
||||
|
||||
void
|
||||
_ecore_evas_ews_events_flush(void)
|
||||
{
|
||||
ecore_event_type_flush(ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE,
|
||||
ECORE_EVAS_EWS_EVENT_ADD,
|
||||
ECORE_EVAS_EWS_EVENT_DEL,
|
||||
ECORE_EVAS_EWS_EVENT_RESIZE,
|
||||
ECORE_EVAS_EWS_EVENT_MOVE,
|
||||
ECORE_EVAS_EWS_EVENT_SHOW,
|
||||
ECORE_EVAS_EWS_EVENT_HIDE,
|
||||
ECORE_EVAS_EWS_EVENT_FOCUS,
|
||||
ECORE_EVAS_EWS_EVENT_UNFOCUS,
|
||||
ECORE_EVAS_EWS_EVENT_RAISE,
|
||||
ECORE_EVAS_EWS_EVENT_LOWER,
|
||||
ECORE_EVAS_EWS_EVENT_ACTIVATE,
|
||||
ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE,
|
||||
ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE,
|
||||
ECORE_EVAS_EWS_EVENT_LAYER_CHANGE,
|
||||
ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE,
|
||||
ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE);
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_ews_init(void)
|
||||
{
|
||||
|
|
|
@ -11,6 +11,7 @@ EAPI int ECORE_EVAS_EXTN_CLIENT_DEL = 0;
|
|||
void
|
||||
_ecore_evas_extn_init(void)
|
||||
{
|
||||
if (ECORE_EVAS_EXTN_CLIENT_ADD != 0) return ;
|
||||
ECORE_EVAS_EXTN_CLIENT_ADD = ecore_event_type_new();
|
||||
ECORE_EVAS_EXTN_CLIENT_DEL = ecore_event_type_new();
|
||||
}
|
||||
|
@ -18,6 +19,6 @@ _ecore_evas_extn_init(void)
|
|||
void
|
||||
_ecore_evas_extn_shutdown(void)
|
||||
{
|
||||
ECORE_EVAS_EXTN_CLIENT_ADD = 0;
|
||||
ECORE_EVAS_EXTN_CLIENT_DEL = 0;
|
||||
ecore_event_type_flush(ECORE_EVAS_EXTN_CLIENT_ADD,
|
||||
ECORE_EVAS_EXTN_CLIENT_DEL);
|
||||
}
|
||||
|
|
|
@ -443,6 +443,7 @@ EAPI void _ecore_evas_window_available_profiles_free(Ecore_Evas *ee);
|
|||
|
||||
#ifdef BUILD_ECORE_EVAS_EWS
|
||||
void _ecore_evas_ews_events_init(void);
|
||||
void _ecore_evas_ews_events_flush(void);
|
||||
int _ecore_evas_ews_shutdown(void);
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue