diff options
| author | Lennart Poettering <lennart@poettering.net> | 2009-07-22 22:49:06 +0200 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2009-07-22 22:49:06 +0200 | 
| commit | 41ad33dfe7334705939c9cf8f2e53f8ca1bf62ba (patch) | |
| tree | d645c42514d8fc9f70ca8d987748422f6ee7f358 | |
| parent | e3b0ce57e0f44790bd75412778cce8129e3945eb (diff) | |
| parent | 7e4509f9e5a1add8bd7efaf69cefd35a291b6253 (diff) | |
Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
| -rw-r--r-- | configure.ac | 7 | ||||
| -rw-r--r-- | src/Makefile.am | 4 | ||||
| -rw-r--r-- | src/daemon/main.c | 22 | ||||
| -rw-r--r-- | src/pulse/introspect.c | 10 | 
4 files changed, 18 insertions, 25 deletions
diff --git a/configure.ac b/configure.ac index 00121f82..cc7f674a 100644 --- a/configure.ac +++ b/configure.ac @@ -113,6 +113,12 @@ CC_CHECK_LDFLAGS([${tmp_ldflag}],      [VERSIONING_LDFLAGS='-Wl,-version-script=$(srcdir)/map-file'])  AC_SUBST([VERSIONING_LDFLAGS]) +dnl Use immediate (now) bindings; avoids the funky re-call in itself +dnl  the -z now syntax is lifted from Sun's linker and works with GNU's too +dnl  other linkes might be added later +CC_CHECK_LDFLAGS([-Wl,-z,now], [IMMEDIATE_LDFLAGS="-Wl,-z,now"]) +AC_SUBST([IMMEDIATE_LDFLAGS]) +  dnl Check for the proper way to build libraries that have no undefined  dnl symbols; on some hosts this needs to be avoided but the macro  dnl takes care of it. @@ -388,6 +394,7 @@ AC_SEARCH_LIBS([timer_create], [rt])  # BSD  AC_SEARCH_LIBS([connect], [socket]) +AC_SEARCH_LIBS([backtrace], [execinfo])  # Non-standard diff --git a/src/Makefile.am b/src/Makefile.am index 7ebf1f8a..ac627c84 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -183,9 +183,9 @@ PREOPEN_LIBS = $(modlibexec_LTLIBRARIES)  endif  if FORCE_PREOPEN -pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f)) +pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlpreopen force $(foreach f,$(PREOPEN_LIBS),-dlpreopen $(f))  else -pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f)) +pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(IMMEDIATE_LDFLAGS) -dlopen force $(foreach f,$(PREOPEN_LIBS),-dlopen $(f))  endif  ################################### diff --git a/src/daemon/main.c b/src/daemon/main.c index c759df53..587fd175 100644 --- a/src/daemon/main.c +++ b/src/daemon/main.c @@ -405,28 +405,6 @@ int main(int argc, char *argv[]) {      pa_log_set_level(PA_LOG_NOTICE);      pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET); -#if defined(__linux__) && defined(__OPTIMIZE__) -    /* -       Disable lazy relocations to make usage of external libraries -       more deterministic for our RT threads. We abuse __OPTIMIZE__ as -       a check whether we are a debug build or not. -    */ - -    if (!getenv("LD_BIND_NOW")) { -        char *rp; - -        /* We have to execute ourselves, because the libc caches the -         * value of $LD_BIND_NOW on initialization. */ - -        pa_set_env("LD_BIND_NOW", "1"); - -        if ((rp = pa_readlink("/proc/self/exe"))) -            pa_assert_se(execv(rp, argv) == 0); -        else -            pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?"); -    } -#endif -      if ((e = getenv("PULSE_PASSED_FD"))) {          passed_fd = atoi(e); diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c index 3414f7de..27a587cb 100644 --- a/src/pulse/introspect.c +++ b/src/pulse/introspect.c @@ -212,8 +212,8 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u                              pa_tagstruct_getu32(t, &i.ports[0][j].priority) < 0) {                              pa_context_fail(o->context, PA_ERR_PROTOCOL); -                            pa_xfree(i.ports);                              pa_xfree(i.ports[0]); +                            pa_xfree(i.ports);                              pa_proplist_free(i.proplist);                              goto finish;                          } @@ -250,6 +250,10 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u                  cb(o->context, &i, 0, o->userdata);              } +            if (i.ports) { +                pa_xfree(i.ports[0]); +                pa_xfree(i.ports); +            }              pa_proplist_free(i.proplist);          }      } @@ -479,6 +483,10 @@ static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command,                  cb(o->context, &i, 0, o->userdata);              } +            if (i.ports) { +                pa_xfree(i.ports[0]); +                pa_xfree(i.ports); +            }              pa_proplist_free(i.proplist);          }      }  | 
