]> git.sesse.net Git - vlc/blobdiff - src/modules/entry.c
threads: Make sure we don't re-create a thread if the object has already one.
[vlc] / src / modules / entry.c
index f7405bf67b5397cc8b2b99e0f4bf67e0d45363c8..3c2628a945cd0a37a8412dd25cb26d503ee90375 100644 (file)
@@ -23,7 +23,7 @@
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <assert.h>
 #include <stdarg.h>
@@ -31,6 +31,9 @@
 #include "modules/modules.h"
 #include "config/configuration.h"
 #include "libvlc.h"
+#ifndef ENABLE_NLS
+# define dgettext(d, m) ((char *)(m))
+#endif
 
 static const char default_name[] = "unnamed";
 
@@ -108,17 +111,26 @@ int vlc_module_set (module_t *module, int propid, ...)
             break;
         }
 
-        case VLC_MODULE_SHORTNAME:
-            module->psz_shortname = dgettext (PACKAGE, va_arg (ap, char *));
+        case VLC_MODULE_SHORTNAME_NODOMAIN:
+        {
+            const char *name = va_arg (ap, char *);
+            ret = vlc_module_set (module, VLC_MODULE_SHORTNAME, NULL, name);
             break;
+        }
 
-        case VLC_MODULE_DESCRIPTION:
-            module->psz_longname = dgettext (PACKAGE, va_arg (ap, char *));
+        case VLC_MODULE_DESCRIPTION_NODOMAIN:
+        {
+            const char *desc = va_arg (ap, char *);
+            ret = vlc_module_set (module, VLC_MODULE_DESCRIPTION, NULL, desc);
             break;
+        }
 
-        case VLC_MODULE_HELP:
-            module->psz_help = dgettext (PACKAGE, va_arg (ap, char *));
+        case VLC_MODULE_HELP_NODOMAIN:
+        {
+            const char *help = va_arg (ap, char *);
+            ret = vlc_module_set (module, VLC_MODULE_HELP, NULL, help);
             break;
+        }
 
         case VLC_MODULE_CAPABILITY:
             module->psz_capability = va_arg (ap, char *);
@@ -128,6 +140,10 @@ int vlc_module_set (module_t *module, int propid, ...)
             module->i_score = va_arg (ap, int);
             break;
 
+        case VLC_MODULE_PROGRAM:
+            msg_Warn (module, "deprecated module property %d", propid);
+            break;
+
         case VLC_MODULE_CB_OPEN:
             module->pf_activate = va_arg (ap, int (*) (vlc_object_t *));
             break;
@@ -151,9 +167,32 @@ int vlc_module_set (module_t *module, int propid, ...)
             break;
         }
 
-        case VLC_MODULE_PROGRAM:
-            msg_Warn (module, "deprecated module property %d", propid);
+        case VLC_MODULE_SHORTNAME:
+        {
+            const char *domain = va_arg (ap, const char *);
+            if (domain == NULL)
+                domain = PACKAGE;
+            module->psz_shortname = dgettext (domain, va_arg (ap, char *));
             break;
+        }
+
+        case VLC_MODULE_DESCRIPTION:
+        {
+            const char *domain = va_arg (ap, const char *);
+            if (domain == NULL)
+                domain = PACKAGE;
+            module->psz_longname = dgettext (domain, va_arg (ap, char *));
+            break;
+        }
+
+        case VLC_MODULE_HELP:
+        {
+            const char *domain = va_arg (ap, const char *);
+            if (domain == NULL)
+                domain = PACKAGE;
+            module->psz_help = dgettext (domain, va_arg (ap, char *));
+            break;
+        }
 
         default:
             msg_Err (module, "unknown module property %d", propid);
@@ -181,7 +220,7 @@ 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->object_lock;
+    tab[confsize].p_lock = &(vlc_internals(module)->lock);
 
     if (type & CONFIG_ITEM)
     {
@@ -216,15 +255,11 @@ int vlc_config_set (module_config_t *restrict item, int id, ...)
             break;
         }
 
-        case VLC_CONFIG_DESC:
+        case VLC_CONFIG_DESC_NODOMAIN:
         {
             const char *text = va_arg (ap, const char *);
             const char *longtext = va_arg (ap, const char *);
-
-            item->psz_text = text ? strdup (dgettext (PACKAGE, text)) : NULL;
-            item->psz_longtext =
-                longtext ? strdup (dgettext (PACKAGE, longtext)) : NULL;
-            ret = 0;
+            ret = vlc_config_set (item, VLC_CONFIG_DESC, NULL, text, longtext);
             break;
         }
 
@@ -316,8 +351,66 @@ int vlc_config_set (module_config_t *restrict item, int id, ...)
             ret = 0;
             break;
 
+        case VLC_CONFIG_LIST_NODOMAIN:
+        {
+            size_t len = va_arg (ap, size_t);
+            if (IsConfigIntegerType (item->i_type))
+            {
+                const int *src = va_arg (ap, const int *);
+                const char *const *text = va_arg (ap, const char *const *);
+                ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src,
+                                      text);
+            }
+            else
+            if (IsConfigStringType (item->i_type))
+            {
+                const char *const *src = va_arg (ap, const char *const *);
+                const char *const *text = va_arg (ap, const char *const *);
+                ret = vlc_config_set (item, VLC_CONFIG_LIST, NULL, len, src,
+                                      text);
+            }
+            break;
+        }
+
+        case VLC_CONFIG_ADD_ACTION_NODOMAIN:
+        {
+            vlc_callback_t cb = va_arg (ap, vlc_callback_t);
+            const char *name = va_arg (ap, const char *);
+            ret = vlc_config_set (item, VLC_CONFIG_ADD_ACTION, NULL, cb, name);
+            break;
+        }
+
+        case VLC_CONFIG_OLDNAME:
+        {
+            const char *oldname = va_arg (ap, const char *);
+            item->psz_oldname = oldname ? strdup (oldname) : NULL;
+            ret = 0;
+            break;
+        }
+
+        case VLC_CONFIG_SAFE:
+            item->b_safe = true;
+            ret = 0;
+            break;
+
+        case VLC_CONFIG_DESC:
+        {
+            const char *domain = va_arg (ap, const char *);
+            const char *text = va_arg (ap, const char *);
+            const char *longtext = va_arg (ap, const char *);
+
+            if (domain == NULL)
+                domain = PACKAGE;
+            item->psz_text = text ? strdup (dgettext (domain, text)) : NULL;
+            item->psz_longtext =
+                longtext ? strdup (dgettext (domain, longtext)) : NULL;
+            ret = 0;
+            break;
+        }
+
         case VLC_CONFIG_LIST:
         {
+            const char *domain = va_arg (ap, const char *);
             size_t len = va_arg (ap, size_t);
             char **dtext = malloc (sizeof (char *) * (len + 1));
 
@@ -370,12 +463,15 @@ int vlc_config_set (module_config_t *restrict item, int id, ...)
                 break;
 
             /* Copy textual descriptions */
+            if (domain == NULL)
+                domain = PACKAGE;
+
             const char *const *text = va_arg (ap, const char *const *);
             if (text != NULL)
             {
                 for (size_t i = 0; i < len; i++)
                     dtext[i] =
-                        text[i] ? strdup (dgettext (PACKAGE, text[i])) : NULL;
+                        text[i] ? strdup (dgettext (domain, text[i])) : NULL;
 
                 dtext[len] = NULL;
                 item->ppsz_list_text = dtext;
@@ -394,6 +490,7 @@ int vlc_config_set (module_config_t *restrict item, int id, ...)
 
         case VLC_CONFIG_ADD_ACTION:
         {
+            const char *domain = va_arg (ap, const char *);
             vlc_callback_t cb = va_arg (ap, vlc_callback_t), *tabcb;
             const char *name = va_arg (ap, const char *);
             char **tabtext;
@@ -412,8 +509,10 @@ int vlc_config_set (module_config_t *restrict item, int id, ...)
                 break;
             item->ppsz_action_text = tabtext;
 
+            if (domain == NULL)
+                domain = PACKAGE;
             if (name)
-                tabtext[item->i_action] = strdup (dgettext (PACKAGE, name));
+                tabtext[item->i_action] = strdup (dgettext (domain, name));
             else
                 tabtext[item->i_action] = NULL;
             tabtext[item->i_action + 1] = NULL;
@@ -422,19 +521,6 @@ int vlc_config_set (module_config_t *restrict item, int id, ...)
             ret = 0;
             break;
         }
-
-        case VLC_CONFIG_OLDNAME:
-        {
-            const char *oldname = va_arg (ap, const char *);
-            item->psz_oldname = oldname ? strdup (oldname) : NULL;
-            ret = 0;
-            break;
-        }
-
-        case VLC_CONFIG_SAFE:
-            item->b_safe = true;
-            ret = 0;
-            break;
     }
 
     va_end (ap);