mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-03 09:01:50 -05:00
ladspa-sink: fix search path
Having a single level macro for stringizing LADSPA_PATH doesn't work, because the '#' preprocessor operator doesn't expand any macros in its parameter. As a result, we used the string "LADSPA_PATH" as the search path, and obviously no plugins were ever found. This adds a two-level macro in macro.h and uses that to expand and stringize LADSPA_PATH. Bug link: https://bugs.freedesktop.org/show_bug.cgi?id=107078
This commit is contained in:
parent
c4efbc81b0
commit
1b377d4428
2 changed files with 12 additions and 8 deletions
|
|
@ -1054,15 +1054,13 @@ int pa__init(pa_module*m) {
|
||||||
u->output = NULL;
|
u->output = NULL;
|
||||||
u->ss = ss;
|
u->ss = ss;
|
||||||
|
|
||||||
/* If the LADSPA_PATH environment variable is not set, we use the
|
|
||||||
* LADSPA_PATH preprocessor macro instead. The macro can contain characters
|
|
||||||
* that need to be escaped (especially on Windows backslashes are common).
|
|
||||||
* The "#" preprocessor operator helpfully adds the required escaping while
|
|
||||||
* turning the LADSPA_PATH macro into a string. */
|
|
||||||
#define QUOTE_MACRO(x) #x
|
|
||||||
if (!(e = getenv("LADSPA_PATH")))
|
if (!(e = getenv("LADSPA_PATH")))
|
||||||
e = QUOTE_MACRO(LADSPA_PATH);
|
/* The LADSPA_PATH preprocessor macro isn't a string literal (i.e. it
|
||||||
#undef QUOTE_MACRO
|
* doesn't contain quotes), because otherwise the build system would
|
||||||
|
* have an extra burden of getting the escaping right (Windows paths
|
||||||
|
* are especially tricky). PA_EXPAND_AND_STRINGIZE does the necessary
|
||||||
|
* escaping. */
|
||||||
|
e = PA_EXPAND_AND_STRINGIZE(LADSPA_PATH);
|
||||||
|
|
||||||
/* FIXME: This is not exactly thread safe */
|
/* FIXME: This is not exactly thread safe */
|
||||||
t = pa_xstrdup(lt_dlgetsearchpath());
|
t = pa_xstrdup(lt_dlgetsearchpath());
|
||||||
|
|
|
||||||
|
|
@ -298,6 +298,12 @@ static inline size_t PA_ALIGN(size_t l) {
|
||||||
? (-1 - PA_INT_TYPE_MAX(type)) \
|
? (-1 - PA_INT_TYPE_MAX(type)) \
|
||||||
: (type) 0))
|
: (type) 0))
|
||||||
|
|
||||||
|
/* The '#' preprocessor operator doesn't expand any macros that are in the
|
||||||
|
* parameter, which is why we need a separate macro for those cases where the
|
||||||
|
* parameter contains a macro that needs expanding. */
|
||||||
|
#define PA_STRINGIZE(x) #x
|
||||||
|
#define PA_EXPAND_AND_STRINGIZE(x) PA_STRINGIZE(x)
|
||||||
|
|
||||||
/* We include this at the very last place */
|
/* We include this at the very last place */
|
||||||
#include <pulsecore/log.h>
|
#include <pulsecore/log.h>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue