From 1760d392d4e7cab7f8bc395d719f6040edcf5e7e Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Tue, 11 May 2010 01:53:34 +0000 Subject: [PATCH] use macro for registering modules SVN revision: 48747 --- src/modules/everything-aspell/e_mod_main.c | 24 +++++-------------- src/modules/everything-calc/e_mod_main.c | 22 +++++------------ src/modules/everything-settings/e_mod_main.c | 19 ++++----------- src/modules/everything-wallpaper/e_mod_main.c | 15 ++++-------- src/modules/everything-windows/e_mod_main.c | 19 ++++----------- src/modules/everything/Evry.h | 2 +- src/modules/everything/e_mod_main.c | 8 +++++-- src/modules/everything/evry_api.h | 20 ++++++++++++++-- 8 files changed, 49 insertions(+), 80 deletions(-) diff --git a/src/modules/everything-aspell/e_mod_main.c b/src/modules/everything-aspell/e_mod_main.c index 6679bbcbb..bfba5b137 100644 --- a/src/modules/everything-aspell/e_mod_main.c +++ b/src/modules/everything-aspell/e_mod_main.c @@ -651,8 +651,6 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - Eina_List *l; - _conf_init(m); if ((evry = e_datastore_get("everything_loaded"))) @@ -661,11 +659,8 @@ e_modapi_init(E_Module *m) evry_module = E_NEW(Evry_Module, 1); evry_module->init = &_plugins_init; evry_module->shutdown = &_plugins_shutdown; - - l = e_datastore_get("everything_modules"); - l = eina_list_append(l, evry_module); - e_datastore_set("everything_modules", l); - + EVRY_MODULE_REGISTER(evry_module); + e_module_delayed_set(m, 1); return m; @@ -674,19 +669,12 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - Eina_List *l; - - _conf_shutdown(); - - if (e_datastore_get("everything_loaded")) - _plugins_shutdown(); - - l = e_datastore_get("everything_modules"); - l = eina_list_remove(l, evry_module); - e_datastore_set("everything_modules", l); - + EVRY_MODULE_UNREGISTER(evry_module); E_FREE(evry_module); + _plugins_shutdown(); + _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 d95cce6b4..5dd35a2bf 100644 --- a/src/modules/everything-calc/e_mod_main.c +++ b/src/modules/everything-calc/e_mod_main.c @@ -252,6 +252,7 @@ static void _plugins_shutdown(void) { if (!active) return; + printf("calc shut down\n"); EVRY_PLUGIN_FREE(p1); @@ -269,18 +270,13 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - Eina_List *l; - if ((evry = e_datastore_get("everything_loaded"))) _plugins_init(evry); evry_module = E_NEW(Evry_Module, 1); evry_module->init = &_plugins_init; evry_module->shutdown = &_plugins_shutdown; - - l = e_datastore_get("everything_modules"); - l = eina_list_append(l, evry_module); - e_datastore_set("everything_modules", l); + EVRY_MODULE_REGISTER(evry_module); e_module_delayed_set(m, 1); @@ -290,17 +286,11 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - Eina_List *l; - - if (e_datastore_get("everything_loaded")) - _plugins_shutdown(); - - l = e_datastore_get("everything_modules"); - l = eina_list_remove(l, evry_module); - e_datastore_set("everything_modules", l); - + EVRY_MODULE_UNREGISTER(evry_module); E_FREE(evry_module); - + + _plugins_shutdown(); + return 1; } diff --git a/src/modules/everything-settings/e_mod_main.c b/src/modules/everything-settings/e_mod_main.c index e668dffe0..4e7df4d8a 100644 --- a/src/modules/everything-settings/e_mod_main.c +++ b/src/modules/everything-settings/e_mod_main.c @@ -154,19 +154,14 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - Eina_List *l; - if ((evry = e_datastore_get("everything_loaded"))) _plugins_init(evry); evry_module = E_NEW(Evry_Module, 1); evry_module->init = &_plugins_init; evry_module->shutdown = &_plugins_shutdown; + EVRY_MODULE_REGISTER(evry_module); - l = e_datastore_get("everything_modules"); - l = eina_list_append(l, evry_module); - e_datastore_set("everything_modules", l); - e_module_delayed_set(m, 1); return m; @@ -175,16 +170,10 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - Eina_List *l; - - if (e_datastore_get("everything_loaded")) - _plugins_shutdown(); - - l = e_datastore_get("everything_modules"); - l = eina_list_remove(l, evry_module); - e_datastore_set("everything_modules", l); - + EVRY_MODULE_UNREGISTER(evry_module); E_FREE(evry_module); + + _plugins_shutdown(); return 1; } diff --git a/src/modules/everything-wallpaper/e_mod_main.c b/src/modules/everything-wallpaper/e_mod_main.c index 129433a3c..9b4512c44 100644 --- a/src/modules/everything-wallpaper/e_mod_main.c +++ b/src/modules/everything-wallpaper/e_mod_main.c @@ -381,10 +381,7 @@ e_modapi_init(E_Module *m) evry_module = E_NEW(Evry_Module, 1); evry_module->init = &_plugins_init; evry_module->shutdown = &_plugins_shutdown; - - l = e_datastore_get("everything_modules"); - l = eina_list_append(l, evry_module); - e_datastore_set("everything_modules", l); + EVRY_MODULE_REGISTER(evry_module); e_module_delayed_set(m, 1); @@ -396,14 +393,10 @@ e_modapi_shutdown(E_Module *m) { Eina_List *l; - if (e_datastore_get("everything_loaded")) - _plugins_shutdown(); - - l = e_datastore_get("everything_modules"); - l = eina_list_remove(l, evry_module); - e_datastore_set("everything_modules", l); - + EVRY_MODULE_UNREGISTER(evry_module); E_FREE(evry_module); + + _plugins_shutdown(); return 1; } diff --git a/src/modules/everything-windows/e_mod_main.c b/src/modules/everything-windows/e_mod_main.c index 0aa28c69d..7a9dac301 100644 --- a/src/modules/everything-windows/e_mod_main.c +++ b/src/modules/everything-windows/e_mod_main.c @@ -435,18 +435,13 @@ EAPI E_Module_Api e_modapi = EAPI void * e_modapi_init(E_Module *m) { - Eina_List *l; - if ((evry = e_datastore_get("everything_loaded"))) _plugins_init(evry); evry_module = E_NEW(Evry_Module, 1); evry_module->init = &_plugins_init; evry_module->shutdown = &_plugins_shutdown; - - l = e_datastore_get("everything_modules"); - l = eina_list_append(l, evry_module); - e_datastore_set("everything_modules", l); + EVRY_MODULE_REGISTER(evry_module); e_module_delayed_set(m, 1); @@ -456,17 +451,11 @@ e_modapi_init(E_Module *m) EAPI int e_modapi_shutdown(E_Module *m) { - Eina_List *l; - - if (e_datastore_get("everything_loaded")) - _plugins_shutdown(); - - l = e_datastore_get("everything_modules"); - l = eina_list_remove(l, evry_module); - e_datastore_set("everything_modules", l); - + EVRY_MODULE_UNREGISTER(evry_module); E_FREE(evry_module); + _plugins_shutdown(); + return 1; } diff --git a/src/modules/everything/Evry.h b/src/modules/everything/Evry.h index 1b43d85ad..f8e9d12ff 100644 --- a/src/modules/everything/Evry.h +++ b/src/modules/everything/Evry.h @@ -4,7 +4,7 @@ #include "e.h" #include "evry_types.h" -#define EVRY_API_VERSION 17 +#define EVRY_API_VERSION 18 #define EVRY_ACTION_OTHER 0 #define EVRY_ACTION_FINISHED 1 diff --git a/src/modules/everything/e_mod_main.c b/src/modules/everything/e_mod_main.c index 2a308cf52..0171da11c 100644 --- a/src/modules/everything/e_mod_main.c +++ b/src/modules/everything/e_mod_main.c @@ -185,6 +185,7 @@ e_modapi_init(E_Module *m) SET(action_free); SET(action_register); SET(action_unregister); + SET(action_find); SET(api_version_check); SET(type_register); SET(icon_mime_get); @@ -223,8 +224,11 @@ e_modapi_shutdown(E_Module *m __UNUSED__) Evry_Module *em; EINA_LIST_FOREACH(e_datastore_get("everything_modules"), l, em) - em->shutdown(); - + { + printf("call shutdown\n"); + em->shutdown(); + } + e_datastore_del("everything_loaded"); E_FREE(_api); diff --git a/src/modules/everything/evry_api.h b/src/modules/everything/evry_api.h index bcf40fda4..c0ee01da9 100644 --- a/src/modules/everything/evry_api.h +++ b/src/modules/everything/evry_api.h @@ -4,7 +4,7 @@ #ifndef EVRY_H #include "evry_types.h" -#define EVRY_API_VERSION 17 +#define EVRY_API_VERSION 18 #define EVRY_ACTION_OTHER 0 #define EVRY_ACTION_FINISHED 1 @@ -97,7 +97,7 @@ struct _Evry_API void (*action_free)(Evry_Action *act); void (*action_register)(Evry_Action *act, int priority); void (*action_unregister)(Evry_Action *act); - + Evry_Action *(*action_find)(const char *name); Evry_Type (*type_register)(const char *type); /* evry_util.c */ @@ -202,6 +202,22 @@ struct _Evry_API #define EVRY_PLUGIN_UPDATE(_p, _action) \ if (_p) evry->plugin_update(EVRY_PLUGIN(_p), _action) +#define IF_RELEASE(x) do { \ + if (x) { \ + const char *__tmp; __tmp = (x); (x) = NULL; eina_stringshare_del(__tmp); \ + } \ + (x) = NULL; \ + } while (0) + +#define EVRY_MODULE_REGISTER(_module) { \ + Eina_List *l = e_datastore_get("everything_modules"); \ + l = eina_list_append(l, _module); \ + e_datastore_set("everything_modules", l); } + +#define EVRY_MODULE_UNREGISTER(_module) { \ + Eina_List *l = e_datastore_get("everything_modules"); \ + l = eina_list_remove(l, _module); \ + e_datastore_set("everything_modules", l); } #ifndef EINA_LOG_DEFAULT_COLOR