]> git.sesse.net Git - vlc/blobdiff - src/modules/entry.c
Fix comment
[vlc] / src / modules / entry.c
index ef83dd7e14dba5e97ef13fce8c7acbbf44e0eef0..e0b48d293faed0f5915388378fe527537b6f05ac 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <vlc_common.h>
 #include <vlc_plugin.h>
+#include <vlc_memory.h>
 #include <assert.h>
 #include <stdarg.h>
 
@@ -36,7 +37,7 @@ static void vlc_module_destruct (gc_object_t *obj)
 {
     module_t *module = vlc_priv (obj, module_t);
 
-    vlc_mutex_destroy (&module->lock);
+    free (module->pp_shortcuts);
     free (module->psz_object_name);
     free (module);
 }
@@ -55,18 +56,15 @@ module_t *vlc_module_create (vlc_object_t *obj)
     module->parent = NULL;
     module->submodule_count = 0;
     vlc_gc_init (module, vlc_module_destruct);
-    vlc_mutex_init (&module->lock);
 
     module->psz_shortname = NULL;
     module->psz_longname = (char*)default_name;
     module->psz_help = NULL;
-    for (unsigned i = 0; i < MODULE_SHORTCUT_MAX; i++)
-        module->pp_shortcuts[i] = NULL;
+    module->pp_shortcuts = NULL;
+    module->i_shortcuts = 0;
     module->psz_capability = (char*)"";
     module->i_score = 1;
-    module->i_cpu = 0;
     module->b_unloadable = true;
-    module->b_reentrant = true;
     module->b_submodule = false;
     module->pf_activate = NULL;
     module->pf_deactivate = NULL;
@@ -76,6 +74,7 @@ module_t *vlc_module_create (vlc_object_t *obj)
     module->i_bool_items = 0;
     /*module->handle = garbage */
     module->psz_filename = NULL;
+    module->domain = NULL;
     module->b_builtin = false;
     module->b_loaded = false;
 
@@ -87,6 +86,7 @@ module_t *vlc_module_create (vlc_object_t *obj)
 static void vlc_submodule_destruct (gc_object_t *obj)
 {
     module_t *module = vlc_priv (obj, module_t);
+    free (module->pp_shortcuts);
     free (module->psz_object_name);
     free (module);
 }
@@ -107,17 +107,17 @@ module_t *vlc_submodule_create (module_t *module)
     module->submodule_count++;
 
     /* Muahahaha! Heritage! Polymorphism! Ugliness!! */
+    submodule->pp_shortcuts = malloc( sizeof( char ** ) );
     submodule->pp_shortcuts[0] = module->pp_shortcuts[0]; /* object name */
-    for (unsigned i = 1; i < MODULE_SHORTCUT_MAX; i++)
-        submodule->pp_shortcuts[i] = NULL;
+    submodule->i_shortcuts = 1;
 
     submodule->psz_object_name = strdup( module->psz_object_name );
     submodule->psz_shortname = module->psz_shortname;
     submodule->psz_longname = module->psz_longname;
     submodule->psz_capability = module->psz_capability;
     submodule->i_score = module->i_score;
-    submodule->i_cpu = module->i_cpu;
     submodule->b_submodule = true;
+    submodule->domain = module->domain;
     return submodule;
 }
 
@@ -128,7 +128,7 @@ static module_config_t *vlc_config_create (module_t *module, int type)
 
     if ((confsize & 0xf) == 0)
     {
-        tab = realloc (tab, (confsize + 17) * sizeof (*tab));
+        tab = realloc_or_free (tab, (confsize + 17) * sizeof (*tab));
         if (tab == NULL)
             return NULL;
 
@@ -137,7 +137,6 @@ static module_config_t *vlc_config_create (module_t *module, int type)
 
     memset (tab + confsize, 0, sizeof (tab[confsize]));
     tab[confsize].i_type = type;
-    tab[confsize].p_lock = &module->lock;
 
     if (type & CONFIG_ITEM)
     {
@@ -155,6 +154,8 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
 {
     va_list ap;
     int ret = 0;
+    typedef int(*int_fp_vlcobjectt)(vlc_object_t *) ;
+    typedef void(*void_fp_vlcobjectt)(vlc_object_t *);
 
     va_start (ap, propid);
     switch (propid)
@@ -178,19 +179,11 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
             break;
         }
 
-        case VLC_MODULE_CPU_REQUIREMENT:
-            assert (!module->b_submodule);
-            module->i_cpu |= va_arg (ap, int);
-            break;
-
         case VLC_MODULE_SHORTCUT:
         {
-            unsigned i;
-            for (i = 0; module->pp_shortcuts[i] != NULL; i++);
-                if (i >= (MODULE_SHORTCUT_MAX - 1))
-                    break;
-
-            module->pp_shortcuts[i] = va_arg (ap, char *);
+            const char *psz_new = va_arg (ap, char*);
+            module->pp_shortcuts = realloc (module->pp_shortcuts, sizeof( char ** ) * (module->i_shortcuts + 1));
+            module->pp_shortcuts[module->i_shortcuts++] = psz_new;
             break;
         }
 
@@ -203,11 +196,11 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
             break;
 
         case VLC_MODULE_CB_OPEN:
-            module->pf_activate = va_arg (ap, int (*) (vlc_object_t *));
+            module->pf_activate = va_arg (ap, int_fp_vlcobjectt);
             break;
 
         case VLC_MODULE_CB_CLOSE:
-            module->pf_deactivate = va_arg (ap, void (*) (vlc_object_t *));
+            module->pf_deactivate = va_arg (ap, void_fp_vlcobjectt);
             break;
 
         case VLC_MODULE_NO_UNLOAD:
@@ -219,7 +212,10 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
             const char *value = va_arg (ap, const char *);
             free( module->psz_object_name );
             module->psz_object_name = strdup( value );
+            module->pp_shortcuts = malloc( sizeof( char ** ) );
             module->pp_shortcuts[0] = (char*)value; /* dooh! */
+            module->i_shortcuts = 1;
+
             if (module->psz_longname == default_name)
                 module->psz_longname = (char*)value; /* dooh! */
             break;
@@ -237,6 +233,10 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...)
             module->psz_help = va_arg (ap, char *);
             break;
 
+        case VLC_MODULE_TEXTDOMAIN:
+            module->domain = va_arg (ap, char *);
+            break;
+
         case VLC_CONFIG_NAME:
         {
             const char *name = va_arg (ap, const char *);