[pulseaudio-commits] r2214 - in /branches/glitch-free: ./ src/ src/daemon/ src/modules/ src/pulse/ src/pulsecore/ src/tests/ src/utils/
svnmailer-noreply at 0pointer.de
svnmailer-noreply at 0pointer.de
Mon Mar 31 16:08:02 PDT 2008
Author: lennart
Date: Tue Apr 1 01:08:01 2008
New Revision: 2214
URL: http://0pointer.de/cgi-bin/viewcvs.cgi?rev=2214&root=pulseaudio&view=rev
Log:
catch up with trunk HEAD (i.e. 2118:2213)
Added:
branches/glitch-free/src/daemon/org.pulseaudio.policy
- copied unchanged from r2213, trunk/src/daemon/org.pulseaudio.policy
Removed:
branches/glitch-free/src/daemon/PulseAudio.policy
Modified:
branches/glitch-free/configure.ac
branches/glitch-free/src/Makefile.am
branches/glitch-free/src/daemon/caps.c
branches/glitch-free/src/daemon/caps.h
branches/glitch-free/src/daemon/cpulimit.c
branches/glitch-free/src/daemon/daemon.conf.in
branches/glitch-free/src/daemon/default.pa.in
branches/glitch-free/src/daemon/main.c
branches/glitch-free/src/daemon/polkit.c
branches/glitch-free/src/modules/bt-proximity-helper.c
branches/glitch-free/src/modules/module-ladspa-sink.c
branches/glitch-free/src/modules/module-protocol-stub.c
branches/glitch-free/src/modules/module-tunnel.c
branches/glitch-free/src/pulse/util.c
branches/glitch-free/src/pulsecore/atomic.h
branches/glitch-free/src/pulsecore/cli-command.c
branches/glitch-free/src/pulsecore/hashmap.c
branches/glitch-free/src/pulsecore/macro.h
branches/glitch-free/src/pulsecore/protocol-esound.c
branches/glitch-free/src/pulsecore/protocol-native.c
branches/glitch-free/src/tests/smoother-test.c
branches/glitch-free/src/utils/pactl.c
branches/glitch-free/src/utils/padsp.c
Modified: branches/glitch-free/configure.ac
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/configure.ac?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/configure.ac (original)
+++ branches/glitch-free/configure.ac Tue Apr 1 01:08:01 2008
@@ -5,7 +5,7 @@
# This file is part of PulseAudio.
#
-# Copyright 2004-2006 Lennart Poettering
+# Copyright 2004-2008 Lennart Poettering
# Copyright 2006-2007 Pierre Ossman <ossman at cendio.se> for Cendio AB
#
# PulseAudio is free software; you can redistribute it and/or modify it
@@ -22,11 +22,11 @@
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-AC_PREREQ(2.57)
+AC_PREREQ(2.60)
m4_define(PA_MAJOR, [0])
m4_define(PA_MINOR, [9])
-m4_define(PA_MICRO, [8])
+m4_define(PA_MICRO, [10])
AC_INIT([pulseaudio], PA_MAJOR.PA_MINOR.PA_MICRO,[mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c])
@@ -41,7 +41,7 @@
# The stable ABI for client applications, for the version info x:y:z
# always will hold y=z
-AC_SUBST(LIBPULSE_VERSION_INFO, [4:0:4])
+AC_SUBST(LIBPULSE_VERSION_INFO, [4:1:4])
# A simplified, synchronous, ABI-stable interface for client
# applications, for the version info x:y:z always will hold y=z
@@ -58,7 +58,7 @@
# An internally used, ABI-unstable library that contains the
# PulseAudio core, SONAMEs are bumped on every release, version info
# suffix will always be 0:0
-AC_SUBST(LIBPULSECORE_VERSION_INFO, [5:0:0])
+AC_SUBST(LIBPULSECORE_VERSION_INFO, [5:1:0])
AC_CANONICAL_HOST
@@ -125,6 +125,43 @@
done
fi
+# Native atomic operation support
+AC_ARG_ENABLE([atomic-arm-linux-helpers],
+ AC_HELP_STRING([--disable-atomic-arm-linux-helpers], [use inline asm or libatomic_ops instead]),
+ [
+ case "${enableval}" in
+ yes) atomic_arm_linux_helpers=yes ;;
+ no) atomic_arm_linux_helpers=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;;
+ esac
+ ],
+ [atomic_arm_linux_helpers=auto])
+
+AC_ARG_ENABLE([atomic-arm-memory-barrier],
+ AC_HELP_STRING([--enable-atomic-arm-memory-barrier], [only really needed in SMP arm systems]),
+ [
+ case "${enableval}" in
+ yes) AC_DEFINE_UNQUOTED(ATOMIC_ARM_MEMORY_BARRIER_ENABLED, 1, [Enable memory barriers]) ;;
+ no) ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-atomic-arm-linux-helpers) ;;
+ esac
+ ],)
+
+AC_MSG_CHECKING([target operating system])
+case $host in
+ *-*-linux*)
+ AC_MSG_RESULT([linux])
+ pulse_target_os=linux
+ ;;
+ *)
+ AC_MSG_RESULT([unknown])
+ pulse_target_os=unknown
+ ;;
+esac
+
+# If everything else fails use libatomic_ops
+need_libatomic_ops=yes
+
AC_MSG_CHECKING([whether $CC knows __sync_bool_compare_and_swap()])
AC_LANG_CONFTEST([int main() { int a = 4; __sync_bool_compare_and_swap(&a, 4, 5); }])
$CC conftest.c $CFLAGS -o conftest > /dev/null 2> /dev/null
@@ -133,8 +170,53 @@
if test $ret -eq 0 ; then
AC_DEFINE([HAVE_ATOMIC_BUILTINS], 1, [Have __sync_bool_compare_and_swap() and friends.])
AC_MSG_RESULT([yes])
+ need_libatomic_ops=no
else
AC_MSG_RESULT([no])
+ # HW specific atomic ops stuff
+ AC_MSG_CHECKING([architecture for native atomic operations])
+ case $host_cpu in
+ arm*)
+ AC_MSG_RESULT([arm])
+ AC_MSG_CHECKING([whether we can use Linux kernel helpers])
+ # The Linux kernel helper functions have been there since 2.6.16. However
+ # compile time checking for kernel version in cross compile environment
+ # (which is usually the case for arm cpu) is tricky (or impossible).
+ if test "x$pulse_target_os" = "xlinux" && test "x$atomic_arm_linux_helpers" != "xno"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(ATOMIC_ARM_LINUX_HELPERS, 1, [special arm linux implementation])
+ need_libatomic_ops=no
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_CHECKING([compiler support for arm inline asm atomic operations])
+ AC_LANG_CONFTEST([[int main()
+ {
+ volatile int a=0;
+ int o=0, n=1, r;
+ asm volatile ("ldrex %0, [%1]\n"
+ "subs %0, %0, %2\n"
+ "strexeq %0, %3, [%1]\n"
+ : "=&r" (r)
+ : "r" (&a), "Ir" (o), "r" (n)
+ : "cc");
+ return (a==1 ? 0 : -1);
+ }]])
+ $CC conftest.c $CFLAGS -o conftest > /dev/null 2>&1
+ ret=$?
+ rm -f conftest.o conftest
+ if test $ret -eq 0 ; then
+ AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.])
+ AC_MSG_RESULT([yes])
+ need_libatomic_ops=no
+ else
+ AC_MSG_RESULT([no])
+ fi
+ fi
+ ;;
+ *)
+ AC_MSG_RESULT([unknown])
+ ;;
+ esac
fi
AC_MSG_CHECKING([whether $CC knows __thread])
@@ -413,13 +495,19 @@
#### atomic-ops ###
-AC_CHECK_HEADERS([atomic_ops.h], [], [
-AC_MSG_ERROR([*** libatomic-ops headers not found])
-])
-
-# Win32 does not need the lib and breaks horribly if we try to include it
-if test "x$os_is_win32" != "x1" ; then
- LIBS="$LIBS -latomic_ops"
+AC_MSG_CHECKING([whether we need libatomic_ops])
+if test "x$need_libatomic_ops" = "xyes"; then
+ AC_MSG_RESULT([yes])
+ AC_CHECK_HEADERS([atomic_ops.h], [], [
+ AC_MSG_ERROR([*** libatomic-ops headers not found])
+ ])
+
+ # Win32 does not need the lib and breaks horribly if we try to include it
+ if test "x$os_is_win32" != "x1" ; then
+ LIBS="$LIBS -latomic_ops"
+ fi
+else
+ AC_MSG_RESULT([no])
fi
#### Libsamplerate support (optional) ####
@@ -889,13 +977,9 @@
if test "x${polkit}" != xno ; then
- PKG_CHECK_MODULES(POLKIT, [ polkit-dbus ],
+ PKG_CHECK_MODULES(POLKIT, [ polkit-dbus >= 0.7 ],
[
HAVE_POLKIT=1
- saved_LIBS="$LIBS"
- LIBS="$LIBS $POLKIT_LIBS"
- AC_CHECK_FUNCS(polkit_context_is_caller_authorized)
- LIBS="$saved_LIBS"
AC_DEFINE([HAVE_POLKIT], 1, [Have PolicyKit])
policydir=`pkg-config polkit-dbus --variable prefix`/share/PolicyKit/policy/
AC_SUBST(policydir)
@@ -990,10 +1074,20 @@
AC_SUBST(PA_ACCESS_GROUP)
AC_DEFINE_UNQUOTED(PA_ACCESS_GROUP,"$PA_ACCESS_GROUP", [Access group])
-AC_ARG_WITH(peruser_esound, AS_HELP_STRING([--with-peruser-esound-socket], [Use per-user esound socket directory, like /tmp/.esd-UID/socket.]))
-
-if test "x$with_peruser_esound" = "xyes"; then
- AC_DEFINE([USE_PERUSER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories])
+AC_ARG_ENABLE(
+ per_user_esound_socket,
+ AS_HELP_STRING([--disable-per-user-esound-socket], [Use global esound socket directory /tmp/.esd/socket.]),
+ [
+ case "${enableval}" in
+ yes) per_user_esound_socket=1 ;;
+ no) per_user_esound_socket=0 ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-per-user-esound-socket) ;;
+ esac
+ ],
+ [per_user_esound_socket=1])
+
+if test "x$per_user_esound_socket" = "x1"; then
+ AC_DEFINE([USE_PER_USER_ESOUND_SOCKET], [1], [Define this if you want per-user esound socket directories])
fi
#### PulseAudio system runtime dir ####
@@ -1127,32 +1221,38 @@
ENABLE_POLKIT=yes
fi
+ENABLE_PER_USER_ESOUND_SOCKET=no
+if test "x$per_user_esound_socket" = "x1" ; then
+ ENABLE_PER_USER_ESOUND_SOCKET=yes
+fi
+
echo "
---{ $PACKAGE_NAME $VERSION }---
- prefix: ${prefix}
- sysconfdir: ${sysconfdir}
- localstatedir: ${localstatedir}
- System Runtime Path: ${PA_SYSTEM_RUNTIME_PATH}
- Compiler: ${CC}
- CFLAGS: ${CFLAGS}
- Have X11: ${ENABLE_X11}
- Enable OSS: ${ENABLE_OSS}
- Enable Alsa: ${ENABLE_ALSA}
- Enable Solaris: ${ENABLE_SOLARIS}
- Enable GLib 2.0: ${ENABLE_GLIB20}
- Enable GConf: ${ENABLE_GCONF}
- Enable Avahi: ${ENABLE_AVAHI}
- Enable Jack: ${ENABLE_JACK}
- Enable Async DNS: ${ENABLE_LIBASYNCNS}
- Enable LIRC: ${ENABLE_LIRC}
- Enable HAL: ${ENABLE_HAL}
- Enable BlueZ: ${ENABLE_BLUEZ}
- Enable TCP Wrappers: ${ENABLE_TCPWRAP}
- Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}
- Enable PolicyKit: ${ENABLE_POLKIT}
- System User: ${PA_SYSTEM_USER}
- System Group: ${PA_SYSTEM_GROUP}
- Realtime Group: ${PA_REALTIME_GROUP}
- Access Group: ${PA_ACCESS_GROUP}
+ prefix: ${prefix}
+ sysconfdir: ${sysconfdir}
+ localstatedir: ${localstatedir}
+ System Runtime Path: ${PA_SYSTEM_RUNTIME_PATH}
+ Compiler: ${CC}
+ CFLAGS: ${CFLAGS}
+ Have X11: ${ENABLE_X11}
+ Enable OSS: ${ENABLE_OSS}
+ Enable Alsa: ${ENABLE_ALSA}
+ Enable Solaris: ${ENABLE_SOLARIS}
+ Enable GLib 2.0: ${ENABLE_GLIB20}
+ Enable GConf: ${ENABLE_GCONF}
+ Enable Avahi: ${ENABLE_AVAHI}
+ Enable Jack: ${ENABLE_JACK}
+ Enable Async DNS: ${ENABLE_LIBASYNCNS}
+ Enable LIRC: ${ENABLE_LIRC}
+ Enable HAL: ${ENABLE_HAL}
+ Enable BlueZ: ${ENABLE_BLUEZ}
+ Enable TCP Wrappers: ${ENABLE_TCPWRAP}
+ Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}
+ Enable PolicyKit: ${ENABLE_POLKIT}
+ System User: ${PA_SYSTEM_USER}
+ System Group: ${PA_SYSTEM_GROUP}
+ Realtime Group: ${PA_REALTIME_GROUP}
+ Access Group: ${PA_ACCESS_GROUP}
+ Enable per-user EsounD socket: ${ENABLE_PER_USER_ESOUND_SOCKET}
"
Modified: branches/glitch-free/src/Makefile.am
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/Makefile.am?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/Makefile.am (original)
+++ branches/glitch-free/src/Makefile.am Tue Apr 1 01:08:01 2008
@@ -64,7 +64,7 @@
AM_LDADD = $(PTHREAD_LIBS)
# Only required on some platforms but defined for all to avoid errors
-AM_LDFLAGS = -Wl,-no-undefined -ffunction-sections -fdata-sections -Wl,--gc-sections
+AM_LDFLAGS = -Wl,-no-undefined -Wl,--gc-sections
if STATIC_BINS
BINLDFLAGS = -static
@@ -103,7 +103,7 @@
modules/module-defs.h.m4 \
daemon/pulseaudio-module-xsmp.desktop \
map-file \
- daemon/PulseAudio.policy
+ daemon/org.pulseaudio.policy
pulseconf_DATA = \
default.pa \
@@ -154,7 +154,7 @@
if HAVE_POLKIT
-policy_DATA = daemon/PulseAudio.policy
+policy_DATA = daemon/org.pulseaudio.policy
pulseaudio_SOURCES += daemon/polkit.c daemon/polkit.h
pulseaudio_CFLAGS += $(POLKIT_CFLAGS)
@@ -202,7 +202,7 @@
pactl_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS)
pactl_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
-pasuspender_SOURCES = utils/pasuspender.c
+pasuspender_SOURCES = utils/pasuspender.c pulsecore/core-util.c pulsecore/core-util.h pulsecore/core-error.c pulsecore/core-error.h pulsecore/log.c pulsecore/log.h pulsecore/once.c pulsecore/once.h $(PA_THREAD_OBJS)
pasuspender_LDADD = $(AM_LDADD) libpulse.la $(LIBSNDFILE_LIBS)
pasuspender_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS)
pasuspender_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
@@ -275,7 +275,7 @@
thread_mainloop_test_SOURCES = tests/thread-mainloop-test.c
thread_mainloop_test_CFLAGS = $(AM_CFLAGS)
-thread_mainloop_test_LDADD = $(AM_LDADD) libpulse.la
+thread_mainloop_test_LDADD = $(AM_LDADD) libpulsecore.la libpulse.la
thread_mainloop_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
utf8_test_SOURCES = tests/utf8-test.c
@@ -577,7 +577,14 @@
libpulse_la_LIBADD += $(LIBASYNCNS_LIBS)
endif
-libpulse_simple_la_SOURCES = pulse/simple.c pulse/simple.h
+libpulse_simple_la_SOURCES = \
+ pulse/simple.c pulse/simple.h \
+ pulsecore/log.c pulsecore/log.h \
+ pulsecore/core-util.c pulsecore/core-util.h \
+ pulsecore/core-error.c pulsecore/core-error.h \
+ pulsecore/once.c pulsecore/once.h \
+ $(PA_THREAD_OBJS)
+
libpulse_simple_la_CFLAGS = $(AM_CFLAGS)
libpulse_simple_la_LIBADD = $(AM_LIBADD) libpulse.la
libpulse_simple_la_LDFLAGS = -version-info $(LIBPULSE_SIMPLE_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
@@ -587,7 +594,13 @@
libpulse_browse_la_LIBADD = $(AM_LIBADD) libpulse.la $(AVAHI_LIBS)
libpulse_browse_la_LDFLAGS = -version-info $(LIBPULSE_BROWSE_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
-libpulse_mainloop_glib_la_SOURCES = pulse/glib-mainloop.h pulse/glib-mainloop.c
+libpulse_mainloop_glib_la_SOURCES = \
+ pulse/glib-mainloop.h pulse/glib-mainloop.c \
+ pulsecore/log.c pulsecore/log.h \
+ pulsecore/core-util.c pulsecore/core-util.h \
+ pulsecore/core-error.c pulsecore/core-error.h \
+ pulsecore/once.c pulsecore/once.h \
+ $(PA_THREAD_OBJS)
libpulse_mainloop_glib_la_CFLAGS = $(AM_CFLAGS) $(GLIB20_CFLAGS)
libpulse_mainloop_glib_la_LIBADD = $(AM_LIBADD) libpulse.la $(GLIB20_LIBS)
libpulse_mainloop_glib_la_LDFLAGS = -version-info $(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
Modified: branches/glitch-free/src/daemon/caps.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/caps.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/caps.c (original)
+++ branches/glitch-free/src/daemon/caps.c Tue Apr 1 01:08:01 2008
@@ -90,8 +90,8 @@
cap_t caps;
cap_value_t nice_cap = CAP_SYS_NICE;
- caps = cap_init();
- pa_assert(caps);
+ pa_assert_se(caps = cap_init());
+
cap_clear(caps);
cap_set_flag(caps, CAP_EFFECTIVE, 1, &nice_cap, CAP_SET);
cap_set_flag(caps, CAP_PERMITTED, 1, &nice_cap, CAP_SET);
@@ -113,28 +113,15 @@
}
/* Drop all capabilities, effectively becoming a normal user */
-int pa_drop_caps(void) {
+void pa_drop_caps(void) {
cap_t caps;
- int r = -1;
- caps = cap_init();
- pa_assert(caps);
+ pa_assert_se(prctl(PR_SET_KEEPCAPS, 0, 0, 0, 0) == 0);
+ pa_assert_se(caps = cap_init());
cap_clear(caps);
-
- prctl(PR_SET_KEEPCAPS, 0, 0, 0, 0);
-
- if (cap_set_proc(caps) < 0) {
- pa_log("Failed to drop capabilities: %s", pa_cstrerror(errno));
- goto fail;
- }
-
- r = 0;
-
-fail:
+ pa_assert_se(cap_set_proc(caps) == 0);
cap_free(caps);
-
- return r;
}
#else
@@ -144,9 +131,8 @@
return 0;
}
-int pa_drop_caps(void) {
+void pa_drop_caps(void) {
pa_drop_root();
- return 0;
}
#endif
Modified: branches/glitch-free/src/daemon/caps.h
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/caps.h?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/caps.h (original)
+++ branches/glitch-free/src/daemon/caps.h Tue Apr 1 01:08:01 2008
@@ -25,7 +25,7 @@
***/
void pa_drop_root(void);
+void pa_drop_caps(void);
int pa_limit_caps(void);
-int pa_drop_caps(void);
#endif
Modified: branches/glitch-free/src/daemon/cpulimit.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/cpulimit.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/cpulimit.c (original)
+++ branches/glitch-free/src/daemon/cpulimit.c Tue Apr 1 01:08:01 2008
@@ -151,7 +151,7 @@
} else if (phase == PHASE_SOFT) {
write_err("Hard CPU time limit exhausted, terminating forcibly.\n");
- _exit(1); /* Forced exit */
+ abort(); /* Forced exit */
}
errno = saved_errno;
Modified: branches/glitch-free/src/daemon/daemon.conf.in
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/daemon.conf.in?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/daemon.conf.in (original)
+++ branches/glitch-free/src/daemon/daemon.conf.in Tue Apr 1 01:08:01 2008
@@ -38,7 +38,7 @@
; module-idle-time = 20
; scache-idle-time = 20
-; dl-search-path = @PA_DLSEARCHPATH@
+; dl-search-path = (depends on architecture)
; default-script-file = @PA_DEFAULT_CONFIG_FILE@
Modified: branches/glitch-free/src/daemon/default.pa.in
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/default.pa.in?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/default.pa.in (original)
+++ branches/glitch-free/src/daemon/default.pa.in Tue Apr 1 01:08:01 2008
@@ -37,7 +37,7 @@
#load-module module-pipe-sink
### Automatically load driver modules depending on the hardware available
-.ifexists @PA_DLSEARCHPATH@/module-hal-detect at PA_SOEXT@
+.ifexists module-hal-detect at PA_SOEXT@
load-module module-hal-detect
.else
### Alternatively use the static hardware detection module (for systems that
@@ -46,7 +46,9 @@
.endif
### Load several protocols
+.ifexists module-esound-protocol-unix at PA_SOEXT@
load-module module-esound-protocol-unix
+.endif
load-module module-native-protocol-unix
### Network access (may be configured with paprefs, so leave this commented
@@ -78,11 +80,6 @@
### Load X11 bell module
#load-module module-x11-bell sample=x11-bell
-### Publish connection data in the X11 root window
-.ifexists @PA_DLSEARCHPATH@/module-x11-publish at PA_SOEXT@
-load-module module-x11-publish
-.endif
-
### Register ourselves in the X11 session manager
# Deactivated by default, to avoid deadlock when PA is started as esd from gnome-session
# Instead we load this via /etc/xdg/autostart/ and "pactl load-module" now
@@ -91,8 +88,17 @@
### Load additional modules from GConf settings. This can be configured with the paprefs tool.
### Please keep in mind that the modules configured by paprefs might conflict with manually
### loaded modules.
-.ifexists @PA_DLSEARCHPATH@/module-gconf at PA_SOEXT@
+.ifexists module-gconf at PA_SOEXT@
+.nofail
load-module module-gconf
+.fail
+.endif
+
+### Publish connection data in the X11 root window
+.ifexists module-x11-publish at PA_SOEXT@
+.nofail
+load-module module-x11-publish
+.fail
.endif
### Make some devices default
Modified: branches/glitch-free/src/daemon/main.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/main.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/main.c (original)
+++ branches/glitch-free/src/daemon/main.c Tue Apr 1 01:08:01 2008
@@ -242,7 +242,8 @@
}
set_env("USER", PA_SYSTEM_USER);
- set_env("LOGNAME", PA_SYSTEM_GROUP);
+ set_env("USERNAME", PA_SYSTEM_USER);
+ set_env("LOGNAME", PA_SYSTEM_USER);
set_env("HOME", PA_SYSTEM_RUNTIME_PATH);
/* Relevant for pa_runtime_path() */
@@ -778,7 +779,7 @@
c->disallow_module_loading = !!conf->disallow_module_loading;
if (r < 0 && conf->fail) {
- pa_log("failed to initialize daemon.");
+ pa_log("Failed to initialize daemon.");
#ifdef HAVE_FORK
if (conf->daemonize)
pa_loop_write(daemon_pipe[1], &retval, sizeof(retval), NULL);
@@ -792,16 +793,19 @@
} else {
retval = 0;
+
+ if (c->default_sink_name &&
+ pa_namereg_get(c, c->default_sink_name, PA_NAMEREG_SINK, 1) == NULL) {
+ pa_log_error("%s : Default sink name (%s) does not exist in name register.", __FILE__, c->default_sink_name);
+ retval = !!conf->fail;
+ }
+
#ifdef HAVE_FORK
if (conf->daemonize)
pa_loop_write(daemon_pipe[1], &retval, sizeof(retval), NULL);
#endif
- if (c->default_sink_name &&
- pa_namereg_get(c, c->default_sink_name, PA_NAMEREG_SINK, 1) == NULL) {
- pa_log_error("%s : Fatal error. Default sink name (%s) does not exist in name register.", __FILE__, c->default_sink_name);
- retval = 1;
- } else {
+ if (!retval) {
pa_log_info("Daemon startup complete.");
if (pa_mainloop_run(mainloop, &retval) < 0)
retval = 1;
Modified: branches/glitch-free/src/daemon/polkit.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/daemon/polkit.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/daemon/polkit.c (original)
+++ branches/glitch-free/src/daemon/polkit.c Tue Apr 1 01:08:01 2008
@@ -37,59 +37,6 @@
#include <pulsecore/macro.h>
#include "polkit.h"
-
-static pa_bool_t show_grant_dialog(const char *action_id) {
- DBusError dbus_error;
- DBusConnection *bus = NULL;
- DBusMessage *m = NULL, *reply = NULL;
- pa_bool_t r = FALSE;
- uint32_t xid = 0;
- int verdict;
-
- dbus_error_init(&dbus_error);
-
- if (!(bus = dbus_bus_get(DBUS_BUS_SESSION, &dbus_error))) {
- pa_log_error("Cannot connect to session bus: %s", dbus_error.message);
- goto finish;
- }
-
- if (!(m = dbus_message_new_method_call("org.gnome.PolicyKit", "/org/gnome/PolicyKit/Manager", "org.gnome.PolicyKit.Manager", "ShowDialog"))) {
- pa_log_error("Failed to allocate D-Bus message.");
- goto finish;
- }
-
- if (!(dbus_message_append_args(m, DBUS_TYPE_STRING, &action_id, DBUS_TYPE_UINT32, &xid, DBUS_TYPE_INVALID))) {
- pa_log_error("Failed to append arguments to D-Bus message.");
- goto finish;
- }
-
- if (!(reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &dbus_error))) {
- pa_log_warn("Failed to show grant dialog: %s", dbus_error.message);
- goto finish;
- }
-
- if (!(dbus_message_get_args(reply, &dbus_error, DBUS_TYPE_BOOLEAN, &verdict, DBUS_TYPE_INVALID))) {
- pa_log_warn("Malformed response from grant manager: %s", dbus_error.message);
- goto finish;
- }
-
- r = !!verdict;
-
-finish:
-
- if (bus)
- dbus_connection_unref(bus);
-
- dbus_error_free(&dbus_error);
-
- if (m)
- dbus_message_unref(m);
-
- if (reply)
- dbus_message_unref(reply);
-
- return r;
-}
int pa_polkit_check(const char *action_id) {
int ret = -1;
@@ -161,35 +108,32 @@
for (;;) {
-#ifdef HAVE_POLKIT_CONTEXT_IS_CALLER_AUTHORIZED
polkit_result = polkit_context_is_caller_authorized(context, action, caller, TRUE, &polkit_error);
if (polkit_error_is_set(polkit_error)) {
pa_log_error("Could not determine whether caller is authorized: %s", polkit_error_get_error_message(polkit_error));
goto finish;
}
-#else
-
- polkit_result = polkit_context_can_caller_do_action(context, action, caller);
-
-#endif
if (polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH ||
polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_SESSION ||
polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_KEEP_ALWAYS ||
-#ifdef POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_ONE_SHOT
polkit_result == POLKIT_RESULT_ONLY_VIA_ADMIN_AUTH_ONE_SHOT ||
-#endif
polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH ||
polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_SESSION ||
- polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_ALWAYS
-#ifdef POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT
- || polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT
-#endif
+ polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_KEEP_ALWAYS ||
+ polkit_result == POLKIT_RESULT_ONLY_VIA_SELF_AUTH_ONE_SHOT
) {
- if (show_grant_dialog(action_id))
- continue;
+ if (polkit_auth_obtain(action_id, 0, getpid(), &dbus_error)) {
+ polkit_result = POLKIT_RESULT_YES;
+ break;
+ }
+
+ if (dbus_error_is_set(&dbus_error)) {
+ pa_log_error("Cannot obtain auth: %s", dbus_error.message);
+ goto finish;
+ }
}
break;
Modified: branches/glitch-free/src/modules/bt-proximity-helper.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/modules/bt-proximity-helper.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/modules/bt-proximity-helper.c (original)
+++ branches/glitch-free/src/modules/bt-proximity-helper.c Tue Apr 1 01:08:01 2008
@@ -1,34 +1,28 @@
/* $Id$ */
-
-/***
- This file is part of PulseAudio.
-
- Copyright 2007 Lennart Poettering
-
- PulseAudio is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation; either version 2 of the License,
- or (at your option) any later version.
-
- PulseAudio is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with PulseAudio; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA.
-***/
/*
* Small SUID helper that allows us to ping a BT device. Borrows
- * heavily from bluez-utils' l2ping, which is licensed as GPL2+, too
+ * heavily from bluez-utils' l2ping, which is licensed as GPL2+
* and comes with a copyright like this:
*
* Copyright (C) 2000-2001 Qualcomm Incorporated
* Copyright (C) 2002-2003 Maxim Krasnyansky <maxk at qualcomm.com>
* Copyright (C) 2002-2007 Marcel Holtmann <marcel at holtmann.org>
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
Modified: branches/glitch-free/src/modules/module-ladspa-sink.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/modules/module-ladspa-sink.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/modules/module-ladspa-sink.c (original)
+++ branches/glitch-free/src/modules/module-ladspa-sink.c Tue Apr 1 01:08:01 2008
@@ -484,8 +484,7 @@
if (p > n_control || k) {
pa_log("Too many control values passed, %lu expected.", n_control);
- if (k)
- pa_xfree(k);
+ pa_xfree(k);
goto fail;
}
Modified: branches/glitch-free/src/modules/module-protocol-stub.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/modules/module-protocol-stub.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/modules/module-protocol-stub.c (original)
+++ branches/glitch-free/src/modules/module-protocol-stub.c Tue Apr 1 01:08:01 2008
@@ -218,7 +218,7 @@
char tmp[PATH_MAX];
#if defined(USE_PROTOCOL_ESOUND)
-#if defined(USE_PERUSER_ESOUND_SOCKET)
+#if defined(USE_PER_USER_ESOUND_SOCKET)
char esdsocketpath[PATH_MAX];
#else
const char esdsocketpath[] = "/tmp/.esd/socket";
@@ -269,9 +269,10 @@
#if defined(USE_PROTOCOL_ESOUND)
-#if defined(USE_PERUSER_ESOUND_SOCKET)
+#if defined(USE_PER_USER_ESOUND_SOCKET)
snprintf(esdsocketpath, sizeof(esdsocketpath), "/tmp/.esd-%lu/socket", (unsigned long) getuid());
#endif
+
pa_runtime_path(pa_modargs_get_value(ma, "socket", esdsocketpath), tmp, sizeof(tmp));
u->socket_path = pa_xstrdup(tmp);
Modified: branches/glitch-free/src/modules/module-tunnel.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/modules/module-tunnel.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/modules/module-tunnel.c (original)
+++ branches/glitch-free/src/modules/module-tunnel.c Tue Apr 1 01:08:01 2008
@@ -723,7 +723,7 @@
goto fail;
}
- if (strcmp(name, u->sink_name))
+ if (!u->sink_name || strcmp(name, u->sink_name))
return;
pa_xfree(u->device_description);
@@ -836,7 +836,7 @@
goto fail;
}
- if (strcmp(name, u->source_name))
+ if (!u->source_name || strcmp(name, u->source_name))
return;
pa_xfree(u->device_description);
Modified: branches/glitch-free/src/pulse/util.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulse/util.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulse/util.c (original)
+++ branches/glitch-free/src/pulse/util.c Tue Apr 1 01:08:01 2008
@@ -65,7 +65,7 @@
#include "util.h"
char *pa_get_user_name(char *s, size_t l) {
- char *p;
+ const char *p;
char buf[1024];
#ifdef HAVE_PWD_H
@@ -75,7 +75,10 @@
pa_assert(s);
pa_assert(l > 0);
- if (!(p = getenv("USER")) && !(p = getenv("LOGNAME")) && !(p = getenv("USERNAME"))) {
+ if (!(p = (getuid() == 0 ? "root" : NULL)) &&
+ !(p = getenv("USER")) &&
+ !(p = getenv("LOGNAME")) &&
+ !(p = getenv("USERNAME"))) {
#ifdef HAVE_PWD_H
#ifdef HAVE_GETPWUID_R
Modified: branches/glitch-free/src/pulsecore/atomic.h
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulsecore/atomic.h?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulsecore/atomic.h (original)
+++ branches/glitch-free/src/pulsecore/atomic.h Tue Apr 1 01:08:01 2008
@@ -36,7 +36,7 @@
* On gcc >= 4.1 we use the builtin atomic functions. otherwise we use
* libatomic_ops
*/
-
+#
#ifndef PACKAGE
#error "Please include config.h before including this file!"
#endif
@@ -182,6 +182,235 @@
return result;
}
+#elif defined(ATOMIC_ARM_INLINE_ASM)
+
+/*
+ These should only be enabled if we have ARMv6 or better.
+*/
+
+typedef struct pa_atomic {
+ volatile int value;
+} pa_atomic_t;
+
+#define PA_ATOMIC_INIT(v) { .value = (v) }
+
+static inline void pa_memory_barrier(void) {
+#ifdef ATOMIC_ARM_MEMORY_BARRIER_ENABLED
+ asm volatile ("mcr p15, 0, r0, c7, c10, 5 @ dmb");
+#endif
+}
+
+static inline int pa_atomic_load(const pa_atomic_t *a) {
+ pa_memory_barrier();
+ return a->value;
+}
+
+static inline void pa_atomic_store(pa_atomic_t *a, int i) {
+ a->value = i;
+ pa_memory_barrier();
+}
+
+/* Returns the previously set value */
+static inline int pa_atomic_add(pa_atomic_t *a, int i) {
+ unsigned long not_exclusive;
+ int new_val, old_val;
+
+ pa_memory_barrier();
+ do {
+ asm volatile ("ldrex %0, [%3]\n"
+ "add %2, %0, %4\n"
+ "strex %1, %2, [%3]\n"
+ : "=&r" (old_val), "=&r" (not_exclusive), "=&r" (new_val)
+ : "r" (&a->value), "Ir" (i)
+ : "cc");
+ } while(not_exclusive);
+ pa_memory_barrier();
+
+ return old_val;
+}
+
+/* Returns the previously set value */
+static inline int pa_atomic_sub(pa_atomic_t *a, int i) {
+ unsigned long not_exclusive;
+ int new_val, old_val;
+
+ pa_memory_barrier();
+ do {
+ asm volatile ("ldrex %0, [%3]\n"
+ "sub %2, %0, %4\n"
+ "strex %1, %2, [%3]\n"
+ : "=&r" (old_val), "=&r" (not_exclusive), "=&r" (new_val)
+ : "r" (&a->value), "Ir" (i)
+ : "cc");
+ } while(not_exclusive);
+ pa_memory_barrier();
+
+ return old_val;
+}
+
+static inline int pa_atomic_inc(pa_atomic_t *a) {
+ return pa_atomic_add(a, 1);
+}
+
+static inline int pa_atomic_dec(pa_atomic_t *a) {
+ return pa_atomic_sub(a, 1);
+}
+
+static inline int pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) {
+ unsigned long not_equal, not_exclusive;
+
+ pa_memory_barrier();
+ do {
+ asm volatile ("ldrex %0, [%2]\n"
+ "subs %0, %0, %3\n"
+ "mov %1, %0\n"
+ "strexeq %0, %4, [%2]\n"
+ : "=&r" (not_exclusive), "=&r" (not_equal)
+ : "r" (&a->value), "Ir" (old_i), "r" (new_i)
+ : "cc");
+ } while(not_exclusive && !not_equal);
+ pa_memory_barrier();
+
+ return !not_equal;
+}
+
+typedef struct pa_atomic_ptr {
+ volatile unsigned long value;
+} pa_atomic_ptr_t;
+
+#define PA_ATOMIC_PTR_INIT(v) { .value = (long) (v) }
+
+static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) {
+ pa_memory_barrier();
+ return (void*) a->value;
+}
+
+static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) {
+ a->value = (unsigned long) p;
+ pa_memory_barrier();
+}
+
+static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) {
+ unsigned long not_equal, not_exclusive;
+
+ pa_memory_barrier();
+ do {
+ asm volatile ("ldrex %0, [%2]\n"
+ "subs %0, %0, %3\n"
+ "mov %1, %0\n"
+ "strexeq %0, %4, [%2]\n"
+ : "=&r" (not_exclusive), "=&r" (not_equal)
+ : "r" (&a->value), "Ir" (old_p), "r" (new_p)
+ : "cc");
+ } while(not_exclusive && !not_equal);
+ pa_memory_barrier();
+
+ return !not_equal;
+}
+
+#elif defined(ATOMIC_ARM_LINUX_HELPERS)
+
+/* See file arch/arm/kernel/entry-armv.S in your kernel sources for more
+ information about these functions. The arm kernel helper functions first
+ appeared in 2.6.16.
+ Apply --disable-atomic-arm-linux-helpers flag to confugure if you prefere
+ inline asm implementation or you have an obsolete Linux kernel.
+*/
+/* Memory barrier */
+typedef void (__kernel_dmb_t)(void);
+#define __kernel_dmb (*(__kernel_dmb_t *)0xffff0fa0)
+
+static inline void pa_memory_barrier(void) {
+#ifndef ATOMIC_ARM_MEMORY_BARRIER_ENABLED
+ __kernel_dmb();
+#endif
+}
+
+/* Atomic exchange (__kernel_cmpxchg_t contains memory barriers if needed) */
+typedef int (__kernel_cmpxchg_t)(int oldval, int newval, volatile int *ptr);
+#define __kernel_cmpxchg (*(__kernel_cmpxchg_t *)0xffff0fc0)
+
+/* This is just to get rid of all warnings */
+typedef int (__kernel_cmpxchg_u_t)(unsigned long oldval, unsigned long newval, volatile unsigned long *ptr);
+#define __kernel_cmpxchg_u (*(__kernel_cmpxchg_u_t *)0xffff0fc0)
+
+typedef struct pa_atomic {
+ volatile int value;
+} pa_atomic_t;
+
+#define PA_ATOMIC_INIT(v) { .value = (v) }
+
+static inline int pa_atomic_load(const pa_atomic_t *a) {
+ pa_memory_barrier();
+ return a->value;
+}
+
+static inline void pa_atomic_store(pa_atomic_t *a, int i) {
+ a->value = i;
+ pa_memory_barrier();
+}
+
+/* Returns the previously set value */
+static inline int pa_atomic_add(pa_atomic_t *a, int i) {
+ int old_val;
+ do {
+ old_val = a->value;
+ } while(__kernel_cmpxchg(old_val, old_val + i, &a->value));
+ return old_val;
+}
+
+/* Returns the previously set value */
+static inline int pa_atomic_sub(pa_atomic_t *a, int i) {
+ int old_val;
+ do {
+ old_val = a->value;
+ } while(__kernel_cmpxchg(old_val, old_val - i, &a->value));
+ return old_val;
+}
+
+/* Returns the previously set value */
+static inline int pa_atomic_inc(pa_atomic_t *a) {
+ return pa_atomic_add(a, 1);
+}
+
+/* Returns the previously set value */
+static inline int pa_atomic_dec(pa_atomic_t *a) {
+ return pa_atomic_sub(a, 1);
+}
+
+/* Returns non-zero when the operation was successful. */
+static inline int pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) {
+ int failed = 1;
+ do {
+ failed = __kernel_cmpxchg(old_i, new_i, &a->value);
+ } while(failed && a->value == old_i);
+ return !failed;
+}
+
+typedef struct pa_atomic_ptr {
+ volatile unsigned long value;
+} pa_atomic_ptr_t;
+
+#define PA_ATOMIC_PTR_INIT(v) { .value = (unsigned long) (v) }
+
+static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) {
+ pa_memory_barrier();
+ return (void*) a->value;
+}
+
+static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) {
+ a->value = (unsigned long) p;
+ pa_memory_barrier();
+}
+
+static inline int pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) {
+ int failed = 1;
+ do {
+ failed = __kernel_cmpxchg_u((unsigned long) old_p, (unsigned long) new_p, &a->value);
+ } while(failed && a->value == old_p);
+ return !failed;
+}
+
#else
/* libatomic_ops based implementation */
Modified: branches/glitch-free/src/pulsecore/cli-command.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulsecore/cli-command.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulsecore/cli-command.c (original)
+++ branches/glitch-free/src/pulsecore/cli-command.c Tue Apr 1 01:08:01 2008
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
+#include <ltdl.h>
#include <pulse/xmalloc.h>
@@ -1318,8 +1319,35 @@
} else {
const char *filename = cs+l+strspn(cs+l, whitespace);
- *ifstate = access(filename, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE;
- pa_log_debug("Checking for existance of '%s': %s", filename, *ifstate == IFSTATE_TRUE ? "success" : "failure");
+ /* Search DL_SEARCH_PATH unless the filename is absolute */
+ if (filename[0] == PA_PATH_SEP_CHAR) {
+
+ *ifstate = access(filename, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE;
+ pa_log_debug("Checking for existance of '%s': %s", filename, *ifstate == IFSTATE_TRUE ? "success" : "failure");
+
+ } else {
+ const char *paths, *state = NULL;
+ char *p;
+
+ if (!(paths = lt_dlgetsearchpath()))
+ return -1;
+
+ while ((p = pa_split(paths, ":", &state))) {
+ char *pathname;
+
+ pathname = pa_sprintf_malloc("%s" PA_PATH_SEP "%s", p, filename);
+ pa_xfree(p);
+
+ *ifstate = access(pathname, F_OK) == 0 ? IFSTATE_TRUE : IFSTATE_FALSE;
+ pa_log_debug("Checking for existance of '%s': %s", pathname, *ifstate == IFSTATE_TRUE ? "success" : "failure");
+
+ pa_xfree(pathname);
+
+ if (*ifstate == IFSTATE_TRUE)
+ break;
+ }
+ }
+
}
} else {
pa_strbuf_printf(buf, "Invalid meta command: %s\n", cs);
Modified: branches/glitch-free/src/pulsecore/hashmap.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulsecore/hashmap.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulsecore/hashmap.c (original)
+++ branches/glitch-free/src/pulsecore/hashmap.c Tue Apr 1 01:08:01 2008
@@ -71,7 +71,7 @@
return h;
}
-static void remove(pa_hashmap *h, struct hashmap_entry *e) {
+static void remove_entry(pa_hashmap *h, struct hashmap_entry *e) {
pa_assert(h);
pa_assert(e);
@@ -103,7 +103,7 @@
while (h->first_entry) {
if (free_func)
free_func(h->first_entry->value, userdata);
- remove(h, h->first_entry);
+ remove_entry(h, h->first_entry);
}
pa_xfree(h->data);
@@ -182,7 +182,7 @@
return NULL;
data = e->value;
- remove(h, e);
+ remove_entry(h, e);
return data;
}
@@ -220,7 +220,7 @@
return NULL;
data = h->first_entry->value;
- remove(h, h->first_entry);
+ remove_entry(h, h->first_entry);
return data;
}
Modified: branches/glitch-free/src/pulsecore/macro.h
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulsecore/macro.h?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulsecore/macro.h (original)
+++ branches/glitch-free/src/pulsecore/macro.h Tue Apr 1 01:08:01 2008
@@ -29,6 +29,8 @@
#include <assert.h>
#include <limits.h>
#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <pulsecore/log.h>
#include <pulsecore/gccmacro.h>
@@ -137,34 +139,46 @@
#define PA_PRETTY_FUNCTION ""
#endif
-#define pa_return_if_fail(expr) \
- do { \
- if (!(expr)) { \
- pa_log_debug("%s: Assertion <%s> failed.\n", PA_PRETTY_FUNCTION, #expr ); \
- return; \
- } \
- } while(0)
-
-#define pa_return_val_if_fail(expr, val) \
- do { \
- if (!(expr)) { \
- pa_log_debug("%s: Assertion <%s> failed.\n", PA_PRETTY_FUNCTION, #expr ); \
- return (val); \
- } \
- } while(0)
+#define pa_return_if_fail(expr) \
+ do { \
+ if (PA_UNLIKELY(!(expr))) { \
+ pa_log_debug("Assertion '%s' failed at %s:%u, function %s.\n", #expr , __FILE__, __LINE__, PA_PRETTY_FUNCTION); \
+ return; \
+ } \
+ } while(FALSE)
+
+#define pa_return_val_if_fail(expr, val) \
+ do { \
+ if (PA_UNLIKELY(!(expr))) { \
+ pa_log_debug("Assertion '%s' failed at %s:%u, function %s.\n", #expr , __FILE__, __LINE__, PA_PRETTY_FUNCTION); \
+ return (val); \
+ } \
+ } while(FALSE)
#define pa_return_null_if_fail(expr) pa_return_val_if_fail(expr, NULL)
-#define pa_assert assert
-
-#define pa_assert_not_reached() pa_assert(!"Should not be reached.")
-
-/* An assert which guarantees side effects of x */
+/* An assert which guarantees side effects of x, i.e. is never
+ * optimized away */
+#define pa_assert_se(expr) \
+ do { \
+ if (PA_UNLIKELY(!(expr))) { \
+ pa_log_error("Assertion '%s' failed at %s:%u, function %s(). Aborting.", #expr , __FILE__, __LINE__, PA_PRETTY_FUNCTION); \
+ abort(); \
+ } \
+ } while (FALSE)
+
+/* An assert that may be optimized away by defining NDEBUG */
#ifdef NDEBUG
-#define pa_assert_se(x) x
-#else
-#define pa_assert_se(x) pa_assert(x)
-#endif
+#define pa_assert(expr) do {} while (FALSE)
+#else
+#define pa_assert(expr) pa_assert_se(expr)
+#endif
+
+#define pa_assert_not_reached() \
+ do { \
+ pa_log_error("Code should not be reached at %s:%u, function %s(). Aborting.", __FILE__, __LINE__, PA_PRETTY_FUNCTION); \
+ abort(); \
+ } while (FALSE)
#define PA_PTR_TO_UINT(p) ((unsigned int) (unsigned long) (p))
#define PA_UINT_TO_PTR(u) ((void*) (unsigned long) (u))
Modified: branches/glitch-free/src/pulsecore/protocol-esound.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulsecore/protocol-esound.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulsecore/protocol-esound.c (original)
+++ branches/glitch-free/src/pulsecore/protocol-esound.c Tue Apr 1 01:08:01 2008
@@ -72,7 +72,7 @@
#define RECORD_BUFFER_SECONDS (5)
#define RECORD_BUFFER_FRAGMENTS (100)
-#define MAX_CACHE_SAMPLE_SIZE (1024000)
+#define MAX_CACHE_SAMPLE_SIZE (2048000)
#define SCACHE_PREFIX "esound."
Modified: branches/glitch-free/src/pulsecore/protocol-native.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/pulsecore/protocol-native.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/pulsecore/protocol-native.c (original)
+++ branches/glitch-free/src/pulsecore/protocol-native.c Tue Apr 1 01:08:01 2008
@@ -1193,6 +1193,7 @@
pa_tagstruct_putu32(t, s->index);
pa_tagstruct_putu32(t, o->source->index);
pa_tagstruct_puts(t, o->source->name);
+ pa_tagstruct_put_boolean(t, pa_source_get_state(o->source) == PA_SOURCE_SUSPENDED);
pa_pstream_send_tagstruct(s->connection->pstream, t);
}
Modified: branches/glitch-free/src/tests/smoother-test.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/tests/smoother-test.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/tests/smoother-test.c (original)
+++ branches/glitch-free/src/tests/smoother-test.c Tue Apr 1 01:08:01 2008
@@ -71,7 +71,7 @@
u += 2;
}
- printf("%llu\t%llu\n", x/PA_USEC_PER_MSEC, pa_smoother_get(s, x)/PA_USEC_PER_MSEC);
+ printf("%llu\t%llu\n", (unsigned long long) (x/PA_USEC_PER_MSEC), (unsigned long long) (pa_smoother_get(s, x)/PA_USEC_PER_MSEC));
}
pa_smoother_free(s);
Modified: branches/glitch-free/src/utils/pactl.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/utils/pactl.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/utils/pactl.c (original)
+++ branches/glitch-free/src/utils/pactl.c Tue Apr 1 01:08:01 2008
@@ -486,7 +486,7 @@
i->name,
i->type == PA_AUTOLOAD_SINK ? "sink" : "source",
i->module,
- i->argument);
+ i->argument ? i->argument : "");
}
static void simple_callback(pa_context *c, int success, void *userdata) {
Modified: branches/glitch-free/src/utils/padsp.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/branches/glitch-free/src/utils/padsp.c?rev=2214&root=pulseaudio&r1=2213&r2=2214&view=diff
==============================================================================
--- branches/glitch-free/src/utils/padsp.c (original)
+++ branches/glitch-free/src/utils/padsp.c Tue Apr 1 01:08:01 2008
@@ -2307,7 +2307,11 @@
return ret;
}
+#ifdef sun
+int ioctl(int fd, int request, ...) {
+#else
int ioctl(int fd, unsigned long request, ...) {
+#endif
fd_info *i;
va_list args;
void *argp;
More information about the pulseaudio-commits
mailing list