diff --git a/ChangeLog b/ChangeLog index 3d9de1693..a2eb459be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ * config submenu now sets "config" category * e_menu_category_callback create callback parameter order has been changed * composite settings dialog is now accessible from Settings menu + * modules no longer require shutdown or save functions 2013-01-10 Deon Thomas diff --git a/NEWS b/NEWS index 82f439915..2b1047e88 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,9 @@ Additions: * Added option for disabling pointer warping when performing directional focus changes using winlist Changes: + Modules: + * modules no longer require shutdown or save functions + API: * e_menu_category_callback create callback parameter order has been changed diff --git a/src/bin/e_module.c b/src/bin/e_module.c index c9d884f26..44d96f94d 100644 --- a/src/bin/e_module.c +++ b/src/bin/e_module.c @@ -56,8 +56,8 @@ e_module_shutdown(void) m = _e_modules->data; if ((m) && (m->enabled) && !(m->error)) { - m->func.save(m); - m->func.shutdown(m); + if (m->func.save) m->func.save(m); + if (m->func.shutdown) m->func.shutdown(m); m->enabled = 0; } e_object_del(E_OBJECT(m)); @@ -185,7 +185,7 @@ e_module_new(const char *name) m->func.shutdown = dlsym(m->handle, "e_modapi_shutdown"); m->func.save = dlsym(m->handle, "e_modapi_save"); - if ((!m->func.init) || (!m->func.shutdown) || (!m->func.save) || (!m->api)) + if ((!m->func.init) || (!m->api)) { snprintf(body, sizeof(body), _("There was an error loading the module named: %s
" @@ -276,7 +276,7 @@ e_module_save(E_Module *m) E_OBJECT_CHECK_RETURN(m, 0); E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0); if ((!m->enabled) || (m->error)) return 0; - return m->func.save(m); + return m->func.save ? m->func.save(m) : 1; } EAPI const char * @@ -335,7 +335,7 @@ e_module_disable(E_Module *m) E_OBJECT_CHECK_RETURN(m, 0); E_OBJECT_TYPE_CHECK_RETURN(m, E_MODULE_TYPE, 0); if ((!m->enabled) || (m->error)) return 0; - ret = m->func.shutdown(m); + ret = m->func.shutdown ? m->func.shutdown(m) : 1; m->data = NULL; m->enabled = 0; EINA_LIST_FOREACH(e_config->modules, l, em) @@ -377,7 +377,7 @@ e_module_save_all(void) EINA_LIST_FOREACH(_e_modules, l, m) if ((m->enabled) && (!m->error)) { - if (!m->func.save(m)) ret = 0; + if (m->func.save && (!m->func.save(m))) ret = 0; } EINA_LIST_FOREACH(_e_modules, l, m) e_object_unref(E_OBJECT(m)); @@ -519,8 +519,8 @@ _e_module_free(E_Module *m) if ((m->enabled) && (!m->error)) { - m->func.save(m); - m->func.shutdown(m); + if (m->func.save) m->func.save(m); + if (m->func.shutdown) m->func.shutdown(m); } if (m->name) eina_stringshare_del(m->name); if (m->dir) eina_stringshare_del(m->dir);