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->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")))
 | 
			
		||||
        e = QUOTE_MACRO(LADSPA_PATH);
 | 
			
		||||
#undef QUOTE_MACRO
 | 
			
		||||
        /* The LADSPA_PATH preprocessor macro isn't a string literal (i.e. it
 | 
			
		||||
         * 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 */
 | 
			
		||||
    t = pa_xstrdup(lt_dlgetsearchpath());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -298,6 +298,12 @@ static inline size_t PA_ALIGN(size_t l) {
 | 
			
		|||
             ? (-1 - PA_INT_TYPE_MAX(type))                            \
 | 
			
		||||
             : (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 */
 | 
			
		||||
#include <pulsecore/log.h>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue