e modules no longer require shutdown or save functions; this should clean up module...
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 10 Jan 2013 11:31:17 +0000 (11:31 +0000)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 10 Jan 2013 11:31:17 +0000 (11:31 +0000)
SVN revision: 82552

ChangeLog
NEWS
src/bin/e_module.c

index 3d9de16..a2eb459 100644 (file)
--- 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 82f4399..2b1047e 100644 (file)
--- 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
 
index c9d884f..44d96f9 100644 (file)
@@ -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<br>"
@@ -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);