]> code.delx.au - pulseaudio/commitdiff
modules: introduce PA_MODULE_DEPRECATED() macro for marking modules deprecated
authorLennart Poettering <lennart@poettering.net>
Thu, 28 May 2009 00:47:36 +0000 (02:47 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 28 May 2009 00:47:36 +0000 (02:47 +0200)
src/daemon/dumpmodules.c
src/modules/module-defs.h.m4
src/modules/module-detect.c
src/modules/module-volume-restore.c
src/modules/oss/module-oss.c
src/pulsecore/cli-command.c
src/pulsecore/ltdl-helper.h
src/pulsecore/modinfo.c
src/pulsecore/modinfo.h
src/pulsecore/module.c
src/pulsecore/module.h

index 0ffc0fc09b85bdc6dcae42c5990209afd5445eac..92470b49b02842ba7b010d671c51134a62655883 100644 (file)
@@ -71,6 +71,8 @@ static void long_info(const char *name, const char *path, pa_modinfo *i) {
         if (i->usage)
             printf(_("Usage: %s\n"), i->usage);
         printf(_("Load Once: %s\n"), pa_yes_no(i->load_once));
+        if (i->deprecated)
+            printf(_("DEPRECATION WARNING: %s\n"), i->deprecated);
     }
 
     if (path)
index f9924cfa80e141e8740bc33e7cf091851c82752d..b6a60b6ac6ee33be23053a7ab374f58154ea3b74 100644 (file)
@@ -17,6 +17,7 @@ gen_symbol(pa__get_author)
 gen_symbol(pa__get_description)
 gen_symbol(pa__get_usage)
 gen_symbol(pa__get_version)
+gen_symbol(pa__get_deprecated)
 gen_symbol(pa__load_once)
 gen_symbol(pa__get_n_used)
 
@@ -28,6 +29,7 @@ const char* pa__get_author(void);
 const char* pa__get_description(void);
 const char* pa__get_usage(void);
 const char* pa__get_version(void);
+const char* pa__get_deprecated(void);
 pa_bool_t pa__load_once(void);
 
 #endif
index 49127abcd633892a128440047e1b2bfc74955308..18479df37cc234b80020bbc2fa3b3d8910107b30 100644 (file)
@@ -50,6 +50,7 @@ PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers
 PA_MODULE_VERSION(PACKAGE_VERSION);
 PA_MODULE_LOAD_ONCE(TRUE);
 PA_MODULE_USAGE("just-one=<boolean>");
+PA_MODULE_DEPRECATED("Please use module-hal-detect instead of module-detect!");
 
 static const char* const valid_modargs[] = {
     "just-one",
index 61858afa955463602d0ae2671e8631fc737f1c51..91da598e3287589af22c75886662e10e24248c5d 100644 (file)
@@ -36,6 +36,7 @@ PA_MODULE_AUTHOR("Lennart Poettering");
 PA_MODULE_DESCRIPTION("Compatibility module");
 PA_MODULE_VERSION(PACKAGE_VERSION);
 PA_MODULE_LOAD_ONCE(TRUE);
+PA_MODULE_DEPRECATED("Please use module-stream-restore instead of module-volume-restore!");
 
 static const char* const valid_modargs[] = {
     "table",
@@ -62,7 +63,7 @@ int pa__init(pa_module*m) {
         goto fail;
     }
 
-    pa_log_warn("module-volume-restore is obsolete. It has been replaced by module-stream-restore. We will now load the latter but please make sure to remove module-volume-restore from your configuration.");
+    pa_log_warn("We will now load module-stream-restore. Please make sure to remove module-volume-restore from your configuration.");
 
     t = pa_sprintf_malloc("restore_volume=%s restore_device=%s", pa_yes_no(restore_volume), pa_yes_no(restore_device));
     pa_module_load(m->core, "module-stream-restore", t);
index 7d8d25e49bdac24b9dd2bd1ee457842744c72023..b1afcfd6631e03eb0709e47b28229bd49932e0ee 100644 (file)
@@ -98,6 +98,9 @@ PA_MODULE_USAGE(
         "fragments=<number of fragments> "
         "fragment_size=<fragment size> "
         "mmap=<enable memory mapping?>");
+#ifdef __linux__
+PA_MODULE_DEPRECATED("Please use module-alsa-card instead of module-oss!");
+#endif
 
 #define DEFAULT_DEVICE "/dev/dsp"
 
index 15fe525cd7ad616ea6ec87034e0670eade848168..dad647a83631b307daa5e3167518fd67d18a6aaf 100644 (file)
@@ -483,6 +483,8 @@ static int pa_cli_command_describe(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
             if (i->usage)
                 pa_strbuf_printf(buf, "Usage: %s\n", i->usage);
             pa_strbuf_printf(buf, "Load Once: %s\n", pa_yes_no(i->load_once));
+            if (i->deprecated)
+                pa_strbuf_printf(buf, "Warning, deprecated: %s\n", i->deprecated);
         }
 
         pa_modinfo_free(i);
index 4c4f018acb86e6b01a304a33ea37bf4802b27534..9f3469697b385b1789084c5cc7d21cb684f2e000 100644 (file)
@@ -29,4 +29,3 @@ typedef void (*pa_void_func_t)(void);
 pa_void_func_t pa_load_sym(lt_dlhandle handle, const char*module, const char *symbol);
 
 #endif
-
index 00fb9c4358fb6465c25903825025fa50b232a3e1..b5ee9f56a5086c7a03131fa86568a33c86707df1 100644 (file)
@@ -38,6 +38,7 @@
 #define PA_SYMBOL_DESCRIPTION "pa__get_description"
 #define PA_SYMBOL_USAGE "pa__get_usage"
 #define PA_SYMBOL_VERSION "pa__get_version"
+#define PA_SYMBOL_DEPRECATED "pa__get_deprecated"
 #define PA_SYMBOL_LOAD_ONCE "pa__load_once"
 
 pa_modinfo *pa_modinfo_get_by_handle(lt_dlhandle dl, const char *module_name) {
@@ -61,6 +62,9 @@ pa_modinfo *pa_modinfo_get_by_handle(lt_dlhandle dl, const char *module_name) {
     if ((func = (const char* (*)(void)) pa_load_sym(dl, module_name, PA_SYMBOL_VERSION)))
         i->version = pa_xstrdup(func());
 
+    if ((func = (const char* (*)(void)) pa_load_sym(dl, module_name, PA_SYMBOL_DEPRECATED)))
+        i->deprecated = pa_xstrdup(func());
+
     if ((func2 = (pa_bool_t (*)(void)) pa_load_sym(dl, module_name, PA_SYMBOL_LOAD_ONCE)))
         i->load_once = func2();
 
@@ -91,5 +95,6 @@ void pa_modinfo_free(pa_modinfo *i) {
     pa_xfree(i->description);
     pa_xfree(i->usage);
     pa_xfree(i->version);
+    pa_xfree(i->deprecated);
     pa_xfree(i);
 }
index 407e602a6078ed97e78e2026fa9a95f996decf83..baad0de7098a2c75f75528b1c633d4eac7b9e5e2 100644 (file)
@@ -30,6 +30,7 @@ typedef struct pa_modinfo {
     char *description;
     char *usage;
     char *version;
+    char *deprecated;
     pa_bool_t load_once;
 } pa_modinfo;
 
index 42fd912ce213b276375c625efbbc83984569821a..5bcdd8984085dd7db648216fec4e019a559ff7e9 100644 (file)
 #define PA_SYMBOL_DONE "pa__done"
 #define PA_SYMBOL_LOAD_ONCE "pa__load_once"
 #define PA_SYMBOL_GET_N_USED "pa__get_n_used"
+#define PA_SYMBOL_GET_DEPRECATE "pa__get_deprecated"
 
 pa_module* pa_module_load(pa_core *c, const char *name, const char *argument) {
     pa_module *m = NULL;
     pa_bool_t (*load_once)(void);
+    const char* (*get_deprecated)(void);
     pa_modinfo *mi;
 
     pa_assert(c);
@@ -89,6 +91,13 @@ pa_module* pa_module_load(pa_core *c, const char *name, const char *argument) {
         }
     }
 
+    if ((get_deprecated = (const char* (*) (void)) pa_load_sym(m->dl, name, PA_SYMBOL_GET_DEPRECATE))) {
+        const char *t;
+
+        if ((t = get_deprecated()))
+            pa_log_warn("%s is deprecated: %s", name, t);
+    }
+
     if (!(m->init = (int (*)(pa_module*_m)) pa_load_sym(m->dl, name, PA_SYMBOL_INIT))) {
         pa_log("Failed to load module \"%s\": symbol \""PA_SYMBOL_INIT"\" not found.", name);
         goto fail;
index 3f697348fedffa034e05969a64358147b2fad613..af89d793f67842321cd635c52b38ae3ffdd43f27 100644 (file)
@@ -78,6 +78,10 @@ int pa_module_get_n_used(pa_module*m);
     const char * pa__get_version(void) { return s; }            \
     struct __stupid_useless_struct_to_allow_trailing_semicolon
 
+#define PA_MODULE_DEPRECATED(s)                                 \
+    const char * pa__get_deprecated(void) { return s; }         \
+    struct __stupid_useless_struct_to_allow_trailing_semicolon
+
 #define PA_MODULE_LOAD_ONCE(b)                                  \
     pa_bool_t pa__load_once(void) { return b; }                 \
     struct __stupid_useless_struct_to_allow_trailing_semicolon