use macro for registering modules

SVN revision: 48747
This commit is contained in:
Hannes Janetzek 2010-05-11 01:53:34 +00:00
parent 0727615962
commit 1760d392d4
8 changed files with 49 additions and 80 deletions

View File

@ -651,8 +651,6 @@ EAPI E_Module_Api e_modapi =
EAPI void * EAPI void *
e_modapi_init(E_Module *m) e_modapi_init(E_Module *m)
{ {
Eina_List *l;
_conf_init(m); _conf_init(m);
if ((evry = e_datastore_get("everything_loaded"))) if ((evry = e_datastore_get("everything_loaded")))
@ -661,10 +659,7 @@ e_modapi_init(E_Module *m)
evry_module = E_NEW(Evry_Module, 1); evry_module = E_NEW(Evry_Module, 1);
evry_module->init = &_plugins_init; evry_module->init = &_plugins_init;
evry_module->shutdown = &_plugins_shutdown; 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); e_module_delayed_set(m, 1);
@ -674,19 +669,12 @@ e_modapi_init(E_Module *m)
EAPI int EAPI int
e_modapi_shutdown(E_Module *m) e_modapi_shutdown(E_Module *m)
{ {
Eina_List *l; EVRY_MODULE_UNREGISTER(evry_module);
_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);
E_FREE(evry_module); E_FREE(evry_module);
_plugins_shutdown();
_conf_shutdown();
return 1; return 1;
} }

View File

@ -252,6 +252,7 @@ static void
_plugins_shutdown(void) _plugins_shutdown(void)
{ {
if (!active) return; if (!active) return;
printf("calc shut down\n");
EVRY_PLUGIN_FREE(p1); EVRY_PLUGIN_FREE(p1);
@ -269,18 +270,13 @@ EAPI E_Module_Api e_modapi =
EAPI void * EAPI void *
e_modapi_init(E_Module *m) e_modapi_init(E_Module *m)
{ {
Eina_List *l;
if ((evry = e_datastore_get("everything_loaded"))) if ((evry = e_datastore_get("everything_loaded")))
_plugins_init(evry); _plugins_init(evry);
evry_module = E_NEW(Evry_Module, 1); evry_module = E_NEW(Evry_Module, 1);
evry_module->init = &_plugins_init; evry_module->init = &_plugins_init;
evry_module->shutdown = &_plugins_shutdown; 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); e_module_delayed_set(m, 1);
@ -290,17 +286,11 @@ e_modapi_init(E_Module *m)
EAPI int EAPI int
e_modapi_shutdown(E_Module *m) e_modapi_shutdown(E_Module *m)
{ {
Eina_List *l; EVRY_MODULE_UNREGISTER(evry_module);
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);
E_FREE(evry_module); E_FREE(evry_module);
_plugins_shutdown();
return 1; return 1;
} }

View File

@ -154,18 +154,13 @@ EAPI E_Module_Api e_modapi =
EAPI void * EAPI void *
e_modapi_init(E_Module *m) e_modapi_init(E_Module *m)
{ {
Eina_List *l;
if ((evry = e_datastore_get("everything_loaded"))) if ((evry = e_datastore_get("everything_loaded")))
_plugins_init(evry); _plugins_init(evry);
evry_module = E_NEW(Evry_Module, 1); evry_module = E_NEW(Evry_Module, 1);
evry_module->init = &_plugins_init; evry_module->init = &_plugins_init;
evry_module->shutdown = &_plugins_shutdown; 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); e_module_delayed_set(m, 1);
@ -175,17 +170,11 @@ e_modapi_init(E_Module *m)
EAPI int EAPI int
e_modapi_shutdown(E_Module *m) e_modapi_shutdown(E_Module *m)
{ {
Eina_List *l; EVRY_MODULE_UNREGISTER(evry_module);
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);
E_FREE(evry_module); E_FREE(evry_module);
_plugins_shutdown();
return 1; return 1;
} }

View File

@ -381,10 +381,7 @@ e_modapi_init(E_Module *m)
evry_module = E_NEW(Evry_Module, 1); evry_module = E_NEW(Evry_Module, 1);
evry_module->init = &_plugins_init; evry_module->init = &_plugins_init;
evry_module->shutdown = &_plugins_shutdown; 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); e_module_delayed_set(m, 1);
@ -396,15 +393,11 @@ e_modapi_shutdown(E_Module *m)
{ {
Eina_List *l; Eina_List *l;
if (e_datastore_get("everything_loaded")) EVRY_MODULE_UNREGISTER(evry_module);
_plugins_shutdown();
l = e_datastore_get("everything_modules");
l = eina_list_remove(l, evry_module);
e_datastore_set("everything_modules", l);
E_FREE(evry_module); E_FREE(evry_module);
_plugins_shutdown();
return 1; return 1;
} }

View File

@ -435,18 +435,13 @@ EAPI E_Module_Api e_modapi =
EAPI void * EAPI void *
e_modapi_init(E_Module *m) e_modapi_init(E_Module *m)
{ {
Eina_List *l;
if ((evry = e_datastore_get("everything_loaded"))) if ((evry = e_datastore_get("everything_loaded")))
_plugins_init(evry); _plugins_init(evry);
evry_module = E_NEW(Evry_Module, 1); evry_module = E_NEW(Evry_Module, 1);
evry_module->init = &_plugins_init; evry_module->init = &_plugins_init;
evry_module->shutdown = &_plugins_shutdown; 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); e_module_delayed_set(m, 1);
@ -456,17 +451,11 @@ e_modapi_init(E_Module *m)
EAPI int EAPI int
e_modapi_shutdown(E_Module *m) e_modapi_shutdown(E_Module *m)
{ {
Eina_List *l; EVRY_MODULE_UNREGISTER(evry_module);
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);
E_FREE(evry_module); E_FREE(evry_module);
_plugins_shutdown();
return 1; return 1;
} }

View File

@ -4,7 +4,7 @@
#include "e.h" #include "e.h"
#include "evry_types.h" #include "evry_types.h"
#define EVRY_API_VERSION 17 #define EVRY_API_VERSION 18
#define EVRY_ACTION_OTHER 0 #define EVRY_ACTION_OTHER 0
#define EVRY_ACTION_FINISHED 1 #define EVRY_ACTION_FINISHED 1

View File

@ -185,6 +185,7 @@ e_modapi_init(E_Module *m)
SET(action_free); SET(action_free);
SET(action_register); SET(action_register);
SET(action_unregister); SET(action_unregister);
SET(action_find);
SET(api_version_check); SET(api_version_check);
SET(type_register); SET(type_register);
SET(icon_mime_get); SET(icon_mime_get);
@ -223,7 +224,10 @@ e_modapi_shutdown(E_Module *m __UNUSED__)
Evry_Module *em; Evry_Module *em;
EINA_LIST_FOREACH(e_datastore_get("everything_modules"), l, em) EINA_LIST_FOREACH(e_datastore_get("everything_modules"), l, em)
{
printf("call shutdown\n");
em->shutdown(); em->shutdown();
}
e_datastore_del("everything_loaded"); e_datastore_del("everything_loaded");
E_FREE(_api); E_FREE(_api);

View File

@ -4,7 +4,7 @@
#ifndef EVRY_H #ifndef EVRY_H
#include "evry_types.h" #include "evry_types.h"
#define EVRY_API_VERSION 17 #define EVRY_API_VERSION 18
#define EVRY_ACTION_OTHER 0 #define EVRY_ACTION_OTHER 0
#define EVRY_ACTION_FINISHED 1 #define EVRY_ACTION_FINISHED 1
@ -97,7 +97,7 @@ struct _Evry_API
void (*action_free)(Evry_Action *act); void (*action_free)(Evry_Action *act);
void (*action_register)(Evry_Action *act, int priority); void (*action_register)(Evry_Action *act, int priority);
void (*action_unregister)(Evry_Action *act); void (*action_unregister)(Evry_Action *act);
Evry_Action *(*action_find)(const char *name);
Evry_Type (*type_register)(const char *type); Evry_Type (*type_register)(const char *type);
/* evry_util.c */ /* evry_util.c */
@ -202,6 +202,22 @@ struct _Evry_API
#define EVRY_PLUGIN_UPDATE(_p, _action) \ #define EVRY_PLUGIN_UPDATE(_p, _action) \
if (_p) evry->plugin_update(EVRY_PLUGIN(_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 #ifndef EINA_LOG_DEFAULT_COLOR