diff --git a/src/modules/everything-apps/e_mod_main.c b/src/modules/everything-apps/e_mod_main.c index b4482bb78..91e716315 100644 --- a/src/modules/everything-apps/e_mod_main.c +++ b/src/modules/everything-apps/e_mod_main.c @@ -1361,13 +1361,7 @@ e_modapi_init(E_Module *m) { _conf_init(m); - evry_module = E_NEW(Evry_Module, 1); - evry_module->init = &_plugins_init; - evry_module->shutdown = &_plugins_shutdown; - EVRY_MODULE_REGISTER(evry_module); - - if ((evry = e_datastore_get("everything_loaded"))) - evry_module->active = _plugins_init(evry); + EVRY_MODULE_NEW(evry_module, evry, _plugins_init, _plugins_shutdown); /* taken from e_exebuf.c */ exelist_exe_edd = E_CONFIG_DD_NEW("E_Exe", E_Exe); @@ -1392,10 +1386,7 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m __UNUSED__) { - _plugins_shutdown(); - - EVRY_MODULE_UNREGISTER(evry_module); - E_FREE(evry_module); + EVRY_MODULE_FREE(evry_module); _conf_shutdown(); diff --git a/src/modules/everything-aspell/e_mod_main.c b/src/modules/everything-aspell/e_mod_main.c index d2fb2fc2e..efc0005ab 100644 --- a/src/modules/everything-aspell/e_mod_main.c +++ b/src/modules/everything-aspell/e_mod_main.c @@ -637,13 +637,7 @@ e_modapi_init(E_Module *m) { _conf_init(m); - evry_module = E_NEW(Evry_Module, 1); - evry_module->init = &_plugins_init; - evry_module->shutdown = &_plugins_shutdown; - EVRY_MODULE_REGISTER(evry_module); - - if ((evry = e_datastore_get("everything_loaded"))) - evry_module->active = _plugins_init(evry); + EVRY_MODULE_NEW(evry_module, evry, _plugins_init, _plugins_shutdown); e_module_delayed_set(m, 1); @@ -653,11 +647,8 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m __UNUSED__) { - _plugins_shutdown(); - - EVRY_MODULE_UNREGISTER(evry_module); - E_FREE(evry_module); - + EVRY_MODULE_FREE(evry_module); + _conf_shutdown(); return 1; diff --git a/src/modules/everything-calc/e_mod_main.c b/src/modules/everything-calc/e_mod_main.c index 4a5ffb51b..21c5fdf28 100644 --- a/src/modules/everything-calc/e_mod_main.c +++ b/src/modules/everything-calc/e_mod_main.c @@ -298,13 +298,7 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - evry_module = E_NEW(Evry_Module, 1); - evry_module->init = &_plugins_init; - evry_module->shutdown = &_plugins_shutdown; - EVRY_MODULE_REGISTER(evry_module); - - if ((evry = e_datastore_get("everything_loaded"))) - evry_module->active = _plugins_init(evry); + EVRY_MODULE_NEW(evry_module, evry, _plugins_init, _plugins_shutdown); e_module_delayed_set(m, 1); @@ -314,10 +308,7 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m __UNUSED__) { - _plugins_shutdown(); - - EVRY_MODULE_UNREGISTER(evry_module); - E_FREE(evry_module); + EVRY_MODULE_FREE(evry_module); return 1; } diff --git a/src/modules/everything-files/e_mod_main.c b/src/modules/everything-files/e_mod_main.c index 033cd98f8..d15d4f4be 100644 --- a/src/modules/everything-files/e_mod_main.c +++ b/src/modules/everything-files/e_mod_main.c @@ -1647,13 +1647,7 @@ e_modapi_init(E_Module *m) { _conf_init(m); - evry_module = E_NEW(Evry_Module, 1); - evry_module->init = &_plugins_init; - evry_module->shutdown = &_plugins_shutdown; - EVRY_MODULE_REGISTER(evry_module); - - if ((evry = e_datastore_get("everything_loaded"))) - evry_module->active = _plugins_init(evry); + EVRY_MODULE_NEW(evry_module, evry, _plugins_init, _plugins_shutdown); e_module_delayed_set(m, 1); @@ -1663,10 +1657,7 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m __UNUSED__) { - _plugins_shutdown(); - - EVRY_MODULE_UNREGISTER(evry_module); - E_FREE(evry_module); + EVRY_MODULE_FREE(evry_module); _conf_shutdown(); diff --git a/src/modules/everything-settings/e_mod_main.c b/src/modules/everything-settings/e_mod_main.c index 95b51bf20..cb053493c 100644 --- a/src/modules/everything-settings/e_mod_main.c +++ b/src/modules/everything-settings/e_mod_main.c @@ -227,27 +227,18 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - evry_module = E_NEW(Evry_Module, 1); - evry_module->init = &_plugins_init; - evry_module->shutdown = &_plugins_shutdown; - EVRY_MODULE_REGISTER(evry_module); - - if ((evry = e_datastore_get("everything_loaded"))) - evry_module->active = _plugins_init(evry); + EVRY_MODULE_NEW(evry_module, evry, _plugins_init, _plugins_shutdown); e_module_delayed_set(m, 1); - + return m; } EAPI int e_modapi_shutdown(E_Module *m __UNUSED__) { - _plugins_shutdown(); - - EVRY_MODULE_UNREGISTER(evry_module); - E_FREE(evry_module); - + EVRY_MODULE_FREE(evry_module); + return 1; } diff --git a/src/modules/everything-windows/e_mod_main.c b/src/modules/everything-windows/e_mod_main.c index 985ca06d0..39d3f703a 100644 --- a/src/modules/everything-windows/e_mod_main.c +++ b/src/modules/everything-windows/e_mod_main.c @@ -488,13 +488,7 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - evry_module = E_NEW(Evry_Module, 1); - evry_module->init = &_plugins_init; - evry_module->shutdown = &_plugins_shutdown; - EVRY_MODULE_REGISTER(evry_module); - - if ((evry = e_datastore_get("everything_loaded"))) - evry_module->active = _plugins_init(evry); + EVRY_MODULE_NEW(evry_module, evry, _plugins_init, _plugins_shutdown); e_module_delayed_set(m, 1); @@ -504,10 +498,7 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m __UNUSED__) { - _plugins_shutdown(); - - EVRY_MODULE_UNREGISTER(evry_module); - E_FREE(evry_module); + EVRY_MODULE_FREE(evry_module); return 1; } diff --git a/src/modules/everything/e_mod_main.c b/src/modules/everything/e_mod_main.c index 2a2f57fb0..652f630bc 100644 --- a/src/modules/everything/e_mod_main.c +++ b/src/modules/everything/e_mod_main.c @@ -132,9 +132,9 @@ e_modapi_init(E_Module *m) evry_history_init(); evry_plug_actions_init(); - e_datastore_set("everything_loaded", _api); + e_datastore_set("evry_api", _api); - EINA_LIST_FOREACH(e_datastore_get("everything_modules"), l, em) + EINA_LIST_FOREACH(e_datastore_get("evry_modules"), l, em) em->active = em->init(_api); evry_plug_collection_init(); @@ -161,10 +161,10 @@ e_modapi_shutdown(E_Module *m __UNUSED__) Eina_List *l; Evry_Module *em; - EINA_LIST_FOREACH(e_datastore_get("everything_modules"), l, em) + EINA_LIST_FOREACH(e_datastore_get("evry_modules"), l, em) em->shutdown(); - e_datastore_del("everything_loaded"); + e_datastore_del("evry_api"); E_FREE(_api); evry_gadget_shutdown(); diff --git a/src/modules/everything/evry_api.h b/src/modules/everything/evry_api.h index c954004bb..600b19b7a 100644 --- a/src/modules/everything/evry_api.h +++ b/src/modules/everything/evry_api.h @@ -260,16 +260,28 @@ typedef void (*Evry_Item_Free_Cb) (Evry_Item *it); #define EVRY_ACTION_FREE(_act) if (_act) evry->action_free(EVRY_ACTN(_act)) #endif -#define EVRY_MODULE_REGISTER(_module) { \ - Eina_List *l = e_datastore_get("everything_modules"); \ +#define EVRY_MODULE_NEW(_module, _evry_api, _init, _shutdown) \ + { \ + _module = E_NEW(Evry_Module, 1); \ + _module->init = &_init; \ + _module->shutdown = &_shutdown; \ + Eina_List *l = e_datastore_get("evry_modules"); \ l = eina_list_append(l, _module); \ - e_datastore_set("everything_modules", l); } + e_datastore_set("evry_modules", l); \ + if ((_evry_api = e_datastore_get("evry_api"))) \ + evry_module->active = _init(_evry_api); \ + } + +#define EVRY_MODULE_FREE(_module) \ + { \ + _module->shutdown(); \ + Eina_List *l = e_datastore_get("evry_modules"); \ + l = eina_list_remove(l, _module); \ + if (l) e_datastore_set("evry_modules", l); \ + else e_datastore_del("evry_modules"); \ + E_FREE(_module); \ + } -#define EVRY_MODULE_UNREGISTER(_module) { \ - Eina_List *l = e_datastore_get("everything_modules"); \ - l = eina_list_remove(l, _module); \ - if (l) e_datastore_set("everything_modules", l); \ - else e_datastore_del("everything_modules"); } /*** handy macros ***/