Remove unneeded psz_program hack.
[vlc.git] / src / modules / entry.c
index 76ca57d..8086517 100644 (file)
 #include <vlc/vlc.h>
 #include <assert.h>
 
+#include "modules/modules.h"
+#include "libvlc.h"
+#include "../libvlc.h"
+
+static const char default_name[] = "unnamed";
+
+module_t *vlc_module_create (vlc_object_t *obj)
+{
+    module_t *module =
+        (module_t *)vlc_custom_create (obj, sizeof (module_t),
+                                       VLC_OBJECT_MODULE, "module");
+    if (module == NULL)
+        return NULL;
+
+    module->b_reentrant = module->b_unloadable = VLC_TRUE;
+    module->psz_object_name = module->psz_longname = default_name;
+    module->psz_capability = "";
+    module->i_score = 1;
+    return module;
+}
+
 
 module_t *vlc_submodule_create (module_t *module)
 {
@@ -28,7 +49,8 @@ module_t *vlc_submodule_create (module_t *module)
     assert (!module->b_submodule); // subsubmodules are not supported
 
     module_t *submodule =
-            (module_t *)vlc_object_create (module, VLC_OBJECT_MODULE);
+        (module_t *)vlc_custom_create (VLC_OBJECT (module), sizeof (module_t),
+                                       VLC_OBJECT_MODULE, "submodule");
     if (submodule == NULL)
         return NULL;
 
@@ -42,29 +64,27 @@ module_t *vlc_submodule_create (module_t *module)
     submodule->psz_object_name = module->psz_object_name;
     submodule->psz_shortname = module->psz_shortname;
     submodule->psz_longname = module->psz_longname;
-    submodule->psz_program = module->psz_program;
     submodule->psz_capability = module->psz_capability;
     submodule->i_score = module->i_score;
     submodule->i_cpu = module->i_cpu;
-    submodule->pf_activate = NULL;
-    submodule->pf_deactivate = NULL;
     return submodule;
 }
 
+
 int vlc_module_set (module_t *module, int propid, void *value)
 {
     switch (propid)
     {
         case VLC_MODULE_CPU_REQUIREMENT:
             assert (!module->b_submodule);
-            module->i_cpu |= (int)value;
+            module->i_cpu |= (intptr_t)value;
             break;
 
         case VLC_MODULE_SHORTCUT:
         {
             unsigned i;
             for (i = 0; module->pp_shortcuts[i] != NULL; i++);
-            if (i >= MODULE_SHORTCUT_MAX)
+            if (i >= (MODULE_SHORTCUT_MAX - 1))
                 return VLC_ENOMEM;
 
             module->pp_shortcuts[i] = (char *)value;
@@ -88,11 +108,7 @@ int vlc_module_set (module_t *module, int propid, void *value)
             break;
 
         case VLC_MODULE_SCORE:
-            module->i_score = (int)value;
-            break;
-
-        case VLC_MODULE_PROGRAM:
-            module->psz_program = (char *)value;
+            module->i_score = (intptr_t)value;
             break;
 
         case VLC_MODULE_CB_OPEN:
@@ -107,6 +123,16 @@ int vlc_module_set (module_t *module, int propid, void *value)
             module->b_unloadable = (value != NULL);
             break;
 
+        case VLC_MODULE_NAME:
+            module->pp_shortcuts[0] = module->psz_object_name = (char *)value;
+            if (module->psz_longname == default_name)
+                module->psz_longname = (char *)value;
+            break;
+
+        case VLC_MODULE_PROGRAM:
+            msg_Warn (module, "deprecated module property %d", propid);
+            return 0;
+
         default:
             msg_Err (module, "unknown module property %d", propid);
             msg_Err (module, "LibVLC might be too old to use this module.");