forked from enlightenment/efl
ecore: fix shutdown when using system module.
This patch will detect how many more times ecore_init was called during initialization and use that as a threshold to do a clean shutdown. It is a necessary evil as we do have ecore module that will initialize eldbus that will then reinit ecore_init from within ecore_init and without a chance for the application to act on it. I also reenable a test to make sure we will catch earlier this kind of issue.
This commit is contained in:
parent
923459f926
commit
324f4aebe8
|
@ -58,6 +58,7 @@ Eo *_ecore_parent = NULL;
|
||||||
|
|
||||||
static const char *_ecore_magic_string_get(Ecore_Magic m);
|
static const char *_ecore_magic_string_get(Ecore_Magic m);
|
||||||
static int _ecore_init_count = 0;
|
static int _ecore_init_count = 0;
|
||||||
|
static int _ecore_init_count_threshold = 0;
|
||||||
int _ecore_log_dom = -1;
|
int _ecore_log_dom = -1;
|
||||||
int _ecore_fps_debug = 0;
|
int _ecore_fps_debug = 0;
|
||||||
|
|
||||||
|
@ -331,6 +332,8 @@ ecore_init(void)
|
||||||
if (!_no_system_modules)
|
if (!_no_system_modules)
|
||||||
ecore_system_modules_load();
|
ecore_system_modules_load();
|
||||||
|
|
||||||
|
_ecore_init_count_threshold = _ecore_init_count;
|
||||||
|
|
||||||
eina_log_timing(_ecore_log_dom,
|
eina_log_timing(_ecore_log_dom,
|
||||||
EINA_LOG_STATE_STOP,
|
EINA_LOG_STATE_STOP,
|
||||||
EINA_LOG_STATE_INIT);
|
EINA_LOG_STATE_INIT);
|
||||||
|
@ -375,7 +378,7 @@ ecore_shutdown(void)
|
||||||
_ecore_unlock();
|
_ecore_unlock();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (--_ecore_init_count != 0)
|
if (_ecore_init_count-- != _ecore_init_count_threshold)
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
ecore_system_modules_unload();
|
ecore_system_modules_unload();
|
||||||
|
|
|
@ -42,6 +42,7 @@ START_TEST(ecore_test_ecore_init)
|
||||||
fail_if(ret < 1);
|
fail_if(ret < 1);
|
||||||
|
|
||||||
ret = ecore_shutdown();
|
ret = ecore_shutdown();
|
||||||
|
fail_if(ret != 0);
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue