--- src/modules/module-allow-passthrough.c | 5 +++-- src/modules/module-null-sink.c | 6 +++--- src/pulsecore/module.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/modules/module-allow-passthrough.c b/src/modules/module-allow-passthrough.c index aea81cb52..5fda6878a 100644 --- a/src/modules/module-allow-passthrough.c +++ b/src/modules/module-allow-passthrough.c @@ -25,6 +25,9 @@ #include <pulse/xmalloc.h> +#define PA_MODULE_NAME module_allow_passthrough +#include <pulsecore/module.h> + #include <pulsecore/core.h> #include <pulsecore/i18n.h> #include <pulsecore/sink-input.h> @@ -34,8 +37,6 @@ #include <pulsecore/namereg.h> #include <pulsecore/core-util.h> -#include "module-allow-passthrough-symdef.h" - PA_MODULE_AUTHOR("Guillaume Desmottes"); PA_MODULE_DESCRIPTION("When a passthrough stream is requested, route all the other streams to a dummy device"); PA_MODULE_VERSION(PACKAGE_VERSION); diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c index 9237656a3..f4107f554 100644 --- a/src/modules/module-null-sink.c +++ b/src/modules/module-null-sink.c @@ -30,10 +30,12 @@ #include <pulse/timeval.h> #include <pulse/xmalloc.h> +#define PA_MODULE_NAME module_null_sink +#include <pulsecore/module.h> + #include <pulsecore/i18n.h> #include <pulsecore/macro.h> #include <pulsecore/sink.h> -#include <pulsecore/module.h> #include <pulsecore/core-util.h> #include <pulsecore/modargs.h> #include <pulsecore/log.h> @@ -41,8 +43,6 @@ #include <pulsecore/thread-mq.h> #include <pulsecore/rtpoll.h> -#include "module-null-sink-symdef.h" - PA_MODULE_AUTHOR("Lennart Poettering"); PA_MODULE_DESCRIPTION(_("Clocked NULL sink")); PA_MODULE_VERSION(PACKAGE_VERSION); diff --git a/src/pulsecore/module.h b/src/pulsecore/module.h index ec2de0b94..d20c80258 100644 --- a/src/pulsecore/module.h +++ b/src/pulsecore/module.h @@ -92,4 +92,33 @@ void pa_module_hook_connect(pa_module *m, pa_hook *hook, pa_hook_priority_t prio bool pa__load_once(void) { return b; } \ struct __stupid_useless_struct_to_allow_trailing_semicolon +/* Check if we're defining a module */ +#ifdef PA_MODULE_NAME + +/* Jump through some double-indirection hoops to get PA_MODULE_NAME substituted before the concatenation */ +#define _PA_MACRO_CONCAT1(a, b) a ## b +#define _PA_MACRO_CONCAT(a, b) _PA_MACRO_CONCAT1(a, b) + +#define pa__init _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__init) +#define pa__done _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__done) +#define pa__get_author _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__get_author) +#define pa__get_description _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__get_description) +#define pa__get_usage _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__get_usage) +#define pa__get_version _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__get_version) +#define pa__get_deprecated _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__get_deprecated) +#define pa__load_once _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__load_once) +#define pa__get_n_used _PA_MACRO_CONCAT(PA_MODULE_NAME, _LTX_pa__get_n_used) + +int pa__init(pa_module*m); +void pa__done(pa_module*m); +int pa__get_n_used(pa_module*m); + +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); +bool pa__load_once(void); +#endif /* PA_MODULE_NAME */ + #endif -- 2.14.3