[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master-tx, updated. v0.9.15-test3-58-gc6ed0e8
Lennart Poettering
gitmailer-noreply at 0pointer.de
Thu Mar 5 03:29:19 PST 2009
This is an automated email from the git hooks/post-receive script. It was
generated because of a push to the "PulseAudio Sound Server" repository.
The master-tx branch has been updated
from 34cefed1265074f5197b24356af927965db07eb2 (commit)
- Log -----------------------------------------------------------------
c6ed0e8... run make update-po
57baff5... Merge commit 'origin/master-tx'
420ee3f... Merge commit 'elmarco/bluetooth-fixes'
81323b5... Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
3122008... try to detect when stupid clients forks and refuse all service from then on
9d29b96... make interpol test more interesting by corking/uncorking multiple times
dcee888... Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
3dd8800... fix typo in FOREIGN_CFLAGS
6427c70... try more things to get a proper icon for sinks/sources
7a8be7f... bluetooth: don't init profile when off
683548e... bluetooth: service_fd could be 0
fa73688... bluetooth: hsp case, check l for appropriate error message
656fc66... never try to suspend monitor sources, suspend the sinks they belong to instead
ec1c923... print error code when suspend/resume fails
0dd8a33... handle negative error codes
341f44f... fix handling of _suspend_all(), return first failure error code
ecbc320... make suspend state of monitor source follow the suspend state of the sink it belongs to
bffa8be... Don't allow suspending of monitor sources.
d09287d... Fix a NULL pointer access when sutting down esound/simple connections
8693417... various smaller cleanups
c8abe64... pa_xnew cannot fail -- that's what the x is in the name
946d072... document more closely from which context certain functions may be called
f3de61e... fix device reservation for system mode
0329edd... revive solaris module
ff38eaf... Merge commit 'coling/lgpl21'
86dee05... Use LGPL 2.1 on all files previously using LGPL 2
297515a... pass profile priority value to clients
f8a085f... properly handle directed card info requests
7794108... Merge commit 'coling/master'
45ae4ab... run make update-ffmpeg
505df22... run make update-sbc
e435241... run update-reserve
4e86a4c... run make update-shave
ea1d429... add update-shave target
c083177... Use pa_assert_se() when the containing code has side effects.
77514c1... Merge commit 'coling/master'
5c514aa... make dependency on udev versioned
8a00c00... raop: Handle the reponse header memory allocation more sensibly.
b75a4b4... raop: Log teardown explicitly
d293f08... raop: Allow for nice sink descriptions to be set (interpolated from avahi)
ba4765a... For now don't list icon property (in favour of icon name property) since icon negotiation is probably much more complex (i.e. sizes...) than just putting icon data somewhere.
671b927... add logic for initializing a useful icon name
784ac5b... get additional device data from udev
cc8d51a... rename PA_PROP_DEVICE_CONNECTOR to PA_PROP_DEVICE_BUS
cce56ab... revise form factor list a bit, simplify and use singular everywhere
e008333... introduce seperate vendor/product id fields
abdffe9... make example code a bit more robust/change-proof
8fc9b19... Don't assume that device reservation is enabled.
116b38c... Merge commit 'coling/master'
798e39a... when alsa tweaks our sample_spec make sure we adjust the watermark accordingly
1c86267... when an underrun happens, increase watermark by 10ms instead of doubling it
0d8f67b... revise list of form factors a little
07f9842... bluetooth: Fix under linked module-bluetooth-device
dd3c96d... Fix a very strange 'file not found' error in module-alsa-card.
620bf84... try to vacuum a little when nothing is going on
e8d7c50... forgot to bump the revision
3d04300... hide shave in gitignore
00839dd... make sure we check the sink status for PA_SINK_INPUT_FAIL_ON_SUSPEND only after module-suspend-on-idle had the chance to resume the device
7f5fff9... Merge commit 'elmarco/shave'
16bb658... build: shave it!
-----------------------------------------------------------------------
Summary of changes:
.gitignore | 3 +
Makefile.am | 6 +
bootstrap.sh | 8 +-
configure.ac | 64 +-
m4/shave.m4 | 73 +
po/ca.po | 1429 +++++++++++++-------
po/cs.po | 189 ++--
po/de.po | 189 ++--
po/el.po | 188 ++--
po/es.po | 189 ++--
po/fi.po | 189 ++--
po/fr.po | 189 ++--
po/it.po | 189 ++--
po/pl.po | 197 ++--
po/pt_BR.po | 189 ++--
po/sv.po | 189 ++--
po/zh_CN.po | 189 ++--
shave-libtool.in | 69 +
shave.in | 76 +
src/Makefile.am | 35 +-
src/daemon/caps.c | 2 +-
src/daemon/caps.h | 2 +-
src/daemon/cmdline.c | 2 +-
src/daemon/cmdline.h | 2 +-
src/daemon/cpulimit.c | 2 +-
src/daemon/cpulimit.h | 2 +-
src/daemon/daemon-conf.c | 12 +-
src/daemon/daemon-conf.h | 8 +-
src/daemon/dumpmodules.c | 2 +-
src/daemon/dumpmodules.h | 2 +-
src/daemon/ltdl-bind-now.c | 2 +-
src/daemon/ltdl-bind-now.h | 2 +-
src/daemon/main.c | 4 +-
src/daemon/polkit.c | 2 +-
src/daemon/polkit.h | 2 +-
src/modules/alsa/alsa-sink.c | 65 +-
src/modules/alsa/alsa-sink.h | 2 +-
src/modules/alsa/alsa-source.c | 37 +-
src/modules/alsa/alsa-source.h | 2 +-
src/modules/alsa/alsa-util.c | 44 +-
src/modules/alsa/alsa-util.h | 3 +-
src/modules/alsa/module-alsa-card.c | 8 +-
src/modules/alsa/module-alsa-sink.c | 2 +-
src/modules/alsa/module-alsa-source.c | 2 +-
src/modules/bluetooth/bluetooth-util.c | 6 +-
src/modules/bluetooth/bluetooth-util.h | 2 +-
src/modules/bluetooth/ipc.h | 3 +-
src/modules/bluetooth/module-bluetooth-device.c | 25 +-
src/modules/bluetooth/module-bluetooth-discover.c | 2 +-
src/modules/bluetooth/module-bluetooth-proximity.c | 2 +-
src/modules/dbus-util.c | 2 +-
src/modules/dbus-util.h | 2 +-
src/modules/gconf/gconf-helper.c | 2 +-
src/modules/gconf/module-gconf.c | 2 +-
src/modules/hal-util.c | 5 +-
src/modules/hal-util.h | 2 +-
src/modules/module-always-sink.c | 2 +-
src/modules/module-augment-properties.c | 2 +-
src/modules/module-card-restore.c | 2 +-
src/modules/module-cli.c | 2 +-
src/modules/module-combine.c | 4 +-
src/modules/module-console-kit.c | 2 +-
src/modules/module-cork-music-on-phone.c | 2 +-
src/modules/module-default-device-restore.c | 2 +-
src/modules/module-detect.c | 2 +-
src/modules/module-device-restore.c | 2 +-
src/modules/module-esound-compat-spawnfd.c | 2 +-
src/modules/module-esound-compat-spawnpid.c | 2 +-
src/modules/module-esound-sink.c | 2 +-
src/modules/module-hal-detect.c | 2 +-
src/modules/module-jack-sink.c | 2 +-
src/modules/module-jack-source.c | 4 +-
src/modules/module-ladspa-sink.c | 2 +-
src/modules/module-lirc.c | 2 +-
src/modules/module-match.c | 2 +-
src/modules/module-mmkbd-evdev.c | 2 +-
src/modules/module-native-protocol-fd.c | 2 +-
src/modules/module-null-sink.c | 2 +-
src/modules/module-pipe-sink.c | 2 +-
src/modules/module-pipe-source.c | 2 +-
src/modules/module-position-event-sounds.c | 2 +-
src/modules/module-protocol-stub.c | 2 +-
src/modules/module-raop-discover.c | 29 +-
src/modules/module-raop-sink.c | 11 +-
src/modules/module-remap-sink.c | 2 +-
src/modules/module-rescue-streams.c | 2 +-
src/modules/module-sine-source.c | 2 +-
src/modules/module-sine.c | 2 +-
src/modules/module-solaris.c | 957 +++++++++-----
src/modules/module-stream-restore.c | 2 +-
src/modules/module-suspend-on-idle.c | 65 +-
src/modules/module-tunnel.c | 2 +-
src/modules/module-volume-restore.c | 2 +-
src/modules/module-waveout.c | 2 +-
src/modules/module-x11-bell.c | 2 +-
src/modules/module-x11-cork-request.c | 2 +-
src/modules/module-x11-publish.c | 2 +-
src/modules/module-x11-xsmp.c | 2 +-
src/modules/module-zeroconf-discover.c | 2 +-
src/modules/module-zeroconf-publish.c | 2 +-
src/modules/oss/module-oss.c | 2 +-
src/modules/oss/oss-util.c | 2 +-
src/modules/oss/oss-util.h | 2 +-
src/modules/raop/base64.c | 2 +-
src/modules/raop/base64.h | 2 +-
src/modules/raop/raop_client.c | 11 +-
src/modules/raop/raop_client.h | 2 +-
src/modules/reserve-wrap.c | 2 +-
src/modules/reserve-wrap.h | 2 +-
src/modules/reserve.h | 21 +-
src/modules/rtp/module-rtp-recv.c | 2 +-
src/modules/rtp/module-rtp-send.c | 2 +-
src/modules/rtp/rtp.c | 2 +-
src/modules/rtp/rtp.h | 2 +-
src/modules/rtp/rtsp_client.c | 65 +-
src/modules/rtp/rtsp_client.h | 2 +-
src/modules/rtp/sap.c | 2 +-
src/modules/rtp/sap.h | 2 +-
src/modules/rtp/sdp.c | 2 +-
src/modules/rtp/sdp.h | 2 +-
src/modules/udev-util.c | 142 ++
src/modules/{hal-util.h => udev-util.h} | 8 +-
src/pulse/browser.c | 2 +-
src/pulse/browser.h | 2 +-
src/pulse/cdecl.h | 2 +-
src/pulse/channelmap.c | 2 +-
src/pulse/channelmap.h | 2 +-
src/pulse/client-conf-x11.c | 2 +-
src/pulse/client-conf-x11.h | 2 +-
src/pulse/client-conf.c | 2 +-
src/pulse/client-conf.h | 2 +-
src/pulse/context.c | 31 +-
src/pulse/context.h | 2 +-
src/pulse/def.h | 2 +
src/pulse/error.c | 10 +-
src/pulse/error.h | 2 +-
src/pulse/ext-stream-restore.c | 11 +-
src/pulse/ext-stream-restore.h | 2 +-
src/pulse/fork-detect.c | 59 +
src/{daemon/polkit.h => pulse/fork-detect.h} | 10 +-
src/pulse/gccmacro.h | 2 +-
src/pulse/glib-mainloop.c | 2 +-
src/pulse/glib-mainloop.h | 2 +-
src/pulse/internal.h | 2 +-
src/pulse/introspect.c | 40 +-
src/pulse/introspect.h | 3 +-
src/pulse/mainloop-signal.c | 2 +-
src/pulse/mainloop-signal.h | 2 +-
src/pulse/mainloop.c | 2 +-
src/pulse/mainloop.h | 2 +-
src/pulse/operation.c | 2 +-
src/pulse/operation.h | 2 +-
src/pulse/proplist.h | 33 +-
src/pulse/sample.c | 2 +-
src/pulse/sample.h | 2 +-
src/pulse/scache.c | 2 +-
src/pulse/scache.h | 2 +-
src/pulse/simple.c | 2 +-
src/pulse/simple.h | 2 +-
src/pulse/stream.c | 67 +-
src/pulse/stream.h | 2 +-
src/pulse/subscribe.c | 2 +-
src/pulse/subscribe.h | 2 +-
src/pulse/thread-mainloop.c | 2 +-
src/pulse/thread-mainloop.h | 12 +-
src/pulse/volume.c | 2 +-
src/pulse/volume.h | 2 +-
src/pulse/xmalloc.c | 2 +-
src/pulse/xmalloc.h | 2 +-
src/pulsecore/atomic.h | 2 +-
src/pulsecore/auth-cookie.c | 2 +-
src/pulsecore/auth-cookie.h | 2 +-
src/pulsecore/avahi-wrap.c | 2 +-
src/pulsecore/avahi-wrap.h | 2 +-
src/pulsecore/bitset.c | 2 +-
src/pulsecore/bitset.h | 2 +-
src/pulsecore/card.c | 5 +-
src/pulsecore/card.h | 2 +-
src/pulsecore/cli-command.c | 27 +-
src/pulsecore/cli-command.h | 2 +-
src/pulsecore/cli-text.c | 2 +-
src/pulsecore/cli-text.h | 2 +-
src/pulsecore/cli.c | 2 +-
src/pulsecore/cli.h | 2 +-
src/pulsecore/client.c | 2 +-
src/pulsecore/client.h | 2 +-
src/pulsecore/conf-parser.c | 2 +-
src/pulsecore/conf-parser.h | 2 +-
src/pulsecore/core-error.c | 2 +-
src/pulsecore/core-error.h | 2 +-
src/pulsecore/core-scache.c | 2 +-
src/pulsecore/core-scache.h | 2 +-
src/pulsecore/core-subscribe.c | 2 +-
src/pulsecore/core-subscribe.h | 2 +-
src/pulsecore/core-util.c | 2 +-
src/pulsecore/core.c | 13 +-
src/pulsecore/core.h | 4 +-
src/pulsecore/dllmain.c | 2 +-
src/pulsecore/endianmacros.h | 2 +-
src/pulsecore/esound.h | 2 +-
src/pulsecore/ffmpeg/resample2.c | 27 +-
src/pulsecore/flist.h | 2 +-
src/pulsecore/hashmap.c | 2 +-
src/pulsecore/hashmap.h | 2 +-
src/pulsecore/hook-list.c | 2 +-
src/pulsecore/hook-list.h | 2 +-
src/pulsecore/ioline.c | 2 +-
src/pulsecore/ioline.h | 2 +-
src/pulsecore/llist.h | 2 +-
src/pulsecore/lock-autospawn.c | 2 +-
src/pulsecore/log.c | 2 +-
src/pulsecore/log.h | 2 +-
src/pulsecore/ltdl-helper.c | 2 +-
src/pulsecore/ltdl-helper.h | 2 +-
src/pulsecore/macro.h | 2 +-
src/pulsecore/memblockq.c | 2 +-
src/pulsecore/memblockq.h | 2 +-
src/pulsecore/modargs.c | 2 +-
src/pulsecore/modargs.h | 2 +-
src/pulsecore/modinfo.c | 2 +-
src/pulsecore/modinfo.h | 2 +-
src/pulsecore/module.c | 2 +-
src/pulsecore/module.h | 2 +-
src/pulsecore/msgobject.c | 2 +-
src/pulsecore/msgobject.h | 2 +-
src/pulsecore/mutex-posix.c | 2 +-
src/pulsecore/mutex-win32.c | 2 +-
src/pulsecore/mutex.h | 2 +-
src/pulsecore/namereg.c | 2 +-
src/pulsecore/namereg.h | 2 +-
src/pulsecore/object.c | 2 +-
src/pulsecore/object.h | 2 +-
src/pulsecore/once.c | 2 +-
src/pulsecore/once.h | 2 +-
src/pulsecore/pid.c | 2 +-
src/pulsecore/pid.h | 2 +-
src/pulsecore/pipe.c | 2 +-
src/pulsecore/pipe.h | 2 +-
src/pulsecore/play-memblockq.c | 2 +-
src/pulsecore/play-memblockq.h | 2 +-
src/pulsecore/play-memchunk.c | 2 +-
src/pulsecore/play-memchunk.h | 2 +-
src/pulsecore/poll.c | 2 +-
src/pulsecore/poll.h | 2 +-
src/pulsecore/prioq.c | 2 +-
src/pulsecore/protocol-cli.c | 2 +-
src/pulsecore/protocol-cli.h | 2 +-
src/pulsecore/protocol-esound.c | 5 +-
src/pulsecore/protocol-esound.h | 2 +-
src/pulsecore/protocol-http.c | 2 +-
src/pulsecore/protocol-http.h | 2 +-
src/pulsecore/protocol-native.c | 4 +-
src/pulsecore/protocol-native.h | 2 +-
src/pulsecore/protocol-simple.c | 5 +-
src/pulsecore/protocol-simple.h | 2 +-
src/pulsecore/ratelimit.c | 2 +-
src/pulsecore/ratelimit.h | 2 +-
src/pulsecore/refcnt.h | 2 +-
src/pulsecore/resampler.c | 2 +-
src/pulsecore/resampler.h | 2 +-
src/pulsecore/rtclock.c | 5 +-
src/pulsecore/sample-util.c | 2 +-
src/pulsecore/sample-util.h | 2 +-
src/pulsecore/sconv-s16be.c | 2 +-
src/pulsecore/sconv-s16be.h | 2 +-
src/pulsecore/sconv-s16le.c | 2 +-
src/pulsecore/sconv-s16le.h | 2 +-
src/pulsecore/sconv.c | 2 +-
src/pulsecore/sconv.h | 2 +-
src/pulsecore/semaphore-posix.c | 2 +-
src/pulsecore/semaphore-win32.c | 2 +-
src/pulsecore/semaphore.h | 2 +-
src/pulsecore/shared.c | 2 +-
src/pulsecore/shared.h | 2 +-
src/pulsecore/sink-input.c | 11 +-
src/pulsecore/sink-input.h | 2 +-
src/pulsecore/sink.c | 103 ++-
src/pulsecore/sink.h | 5 +-
src/pulsecore/sioman.c | 2 +-
src/pulsecore/sioman.h | 2 +-
src/pulsecore/socket-server.c | 2 +-
src/pulsecore/socket-server.h | 2 +-
src/pulsecore/socket-util.c | 2 +-
src/pulsecore/socket-util.h | 2 +-
src/pulsecore/sound-file-stream.c | 2 +-
src/pulsecore/sound-file-stream.h | 2 +-
src/pulsecore/sound-file.c | 2 +-
src/pulsecore/sound-file.h | 2 +-
src/pulsecore/source-output.c | 11 +-
src/pulsecore/source-output.h | 2 +-
src/pulsecore/source.c | 37 +-
src/pulsecore/source.h | 4 +-
src/pulsecore/strbuf.c | 2 +-
src/pulsecore/strbuf.h | 2 +-
src/pulsecore/strlist.c | 2 +-
src/pulsecore/strlist.h | 2 +-
src/pulsecore/thread-posix.c | 2 +-
src/pulsecore/thread-win32.c | 2 +-
src/pulsecore/thread.h | 2 +-
src/pulsecore/tokenizer.c | 2 +-
src/pulsecore/tokenizer.h | 2 +-
src/pulsecore/vector.h | 2 +-
src/pulsecore/x11prop.c | 2 +-
src/pulsecore/x11prop.h | 2 +-
src/pulsecore/x11wrap.c | 2 +-
src/pulsecore/x11wrap.h | 2 +-
src/tests/asyncmsgq-test.c | 2 +-
src/tests/asyncq-test.c | 2 +-
src/tests/cpulimit-test.c | 2 +-
src/tests/envelope-test.c | 2 +-
src/tests/flist-test.c | 2 +-
src/tests/get-binary-name-test.c | 2 +-
src/tests/gtk-test.c | 2 +-
src/tests/interpol-test.c | 19 +-
src/tests/lock-autospawn-test.c | 2 +-
src/tests/mainloop-test.c | 2 +-
src/tests/memblock-test.c | 2 +-
src/tests/memblockq-test.c | 2 +-
src/tests/mix-test.c | 2 +-
src/tests/pacat-simple.c | 2 +-
src/tests/parec-simple.c | 2 +-
src/tests/proplist-test.c | 2 +-
src/tests/queue-test.c | 2 +-
src/tests/remix-test.c | 2 +-
src/tests/resampler-test.c | 2 +-
src/tests/rtpoll-test.c | 2 +-
src/tests/rtstutter.c | 2 +-
src/tests/sig2str-test.c | 2 +-
src/tests/smoother-test.c | 2 +-
src/tests/stripnul.c | 2 +-
src/tests/sync-playback.c | 2 +-
src/tests/thread-mainloop-test.c | 2 +-
src/tests/thread-test.c | 2 +-
src/tests/vector-test.c | 2 +-
src/utils/pabrowse.c | 2 +-
src/utils/pacat.c | 2 +-
src/utils/pacmd.c | 2 +-
src/utils/pactl.c | 4 +-
src/utils/padsp.c | 2 +-
src/utils/paplay.c | 2 +-
src/utils/pasuspender.c | 2 +-
src/utils/pax11publish.c | 2 +-
342 files changed, 4138 insertions(+), 2357 deletions(-)
create mode 100644 m4/shave.m4
create mode 100644 shave-libtool.in
create mode 100644 shave.in
create mode 100644 src/modules/udev-util.c
copy src/modules/{hal-util.h => udev-util.h} (80%)
create mode 100644 src/pulse/fork-detect.c
copy src/{daemon/polkit.h => pulse/fork-detect.h} (78%)
-----------------------------------------------------------------------
commit 16bb6580be39d8a3930f5c9860d4313e36c729a9
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Mon Feb 23 23:20:19 2009 +0200
build: shave it!
http://damien.lespiau.name/blog/2009/02/18/shave-making-the-autotools-output-sane/
diff --git a/bootstrap.sh b/bootstrap.sh
index e64f342..4e223e3 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -49,6 +49,10 @@ if ! pkg-config --version &>/dev/null; then
exit 1
fi
+if type -p colorgcc > /dev/null ; then
+ export CC=colorgcc
+fi
+
if [ "x$1" = "xam" ] ; then
run_versioned automake "$VERSION" -a -c --foreign
./config.status
@@ -73,7 +77,7 @@ else
run_versioned automake "$VERSION" --copy --foreign --add-missing
if test "x$NOCONFIGURE" = "x"; then
- CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen "$@"
+ CFLAGS="-g -O0" ./configure --sysconfdir=/etc --localstatedir=/var --enable-force-preopen --enable-shave "$@"
make clean
fi
fi
diff --git a/configure.ac b/configure.ac
index 11b091b..aab7e2d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1261,6 +1261,8 @@ AM_CONDITIONAL([FORCE_PREOPEN], [test "x$FORCE_PREOPEN" = "xyes"])
AC_CONFIG_FILES([
Makefile
+shave
+shave-libtool
src/Makefile
man/Makefile
libpulse.pc
@@ -1272,7 +1274,10 @@ doxygen/doxygen.conf
src/pulse/version.h
po/Makefile.in
])
+
+SHAVE_INIT
AC_OUTPUT
+SHAVE_OUTPUT
# ==========================================================================
ENABLE_X11=no
diff --git a/m4/shave.m4 b/m4/shave.m4
new file mode 100644
index 0000000..44d3908
--- /dev/null
+++ b/m4/shave.m4
@@ -0,0 +1,69 @@
+dnl Make automake/libtool output more friendly to humans
+dnl
+dnl SHAVE_INIT([shavedir])
+dnl
+dnl shavedir: the directory where the shave scripts are, it defaults to
+dnl $(top_builddir)
+dnl
+dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
+dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrites CC and
+dnl LIBTOOL, you don't want the configure tests to have these variables
+dnl re-defined.
+dnl * This macro requires GNU make's -s option.
+
+AC_DEFUN([SHAVE_INIT],
+[
+ dnl enable/disable shave
+ AC_ARG_ENABLE([shave],
+ AS_HELP_STRING([--enable-shave],
+ [use shave to make the build pretty [[default=no]]]),,
+ [enable_shave=no])
+
+ if test x"$enable_shave" = xyes; then
+ dnl where can we find the shave scripts?
+ m4_if([$1],,
+ [shavedir='$(top_builddir)'],
+ [shavedir='$(top_builddir)'/$1])
+ AC_SUBST(shavedir)
+
+ dnl make is now quiet
+ AC_SUBST([MAKEFLAGS], [-s])
+ AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
+
+ dnl we need sed
+ AC_CHECK_PROG(SED,sed,sed,false)
+
+ dnl substitute libtool
+ SHAVE_SAVED_LIBTOOL=$LIBTOOL
+ AC_SUBST(SHAVE_SAVED_LIBTOOL)
+ LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'"
+ AC_SUBST(LIBTOOL)
+
+ dnl substitute cc/cxx
+ SHAVE_SAVED_CC=$CC
+ SHAVE_SAVED_CXX=$CXX
+ AC_SUBST(SHAVE_SAVED_CC)
+ AC_SUBST(SHAVE_SAVED_CXX)
+ CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'"
+ CXX="\$(SHELL) \$(shavedir)/shave cxx '\$(SHAVE_SAVED_CXX)'"
+ AC_SUBST(CC)
+ AC_SUBST(CXX)
+
+ V=@
+ else
+ V=1
+ fi
+ Q='$(V:1=)'
+ AC_SUBST(V)
+ AC_SUBST(Q)
+])
+
+AC_DEFUN([SHAVE_OUTPUT],
+[
+ if test x"$enable_shave" = xyes; then
+ dnl small workaround to fix libtool itself
+ dnl it's shokingly hard to find a better way, really! wtf...
+ test -f $srcdir/libtool && (tmpfile=`mktemp` && cat $srcdir/libtool | sed "s,^LTCC=.*$,LTCC=\"$SHELL $ac_pwd/shave cc $SHAVE_SAVED_CC\"," > $tmpfile && mv $tmpfile $srcdir/libtool)
+ fi
+
+])
diff --git a/shave-libtool.in b/shave-libtool.in
new file mode 100644
index 0000000..30e6f13
--- /dev/null
+++ b/shave-libtool.in
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# we need sed
+SED=@SED@
+if test -z "$SED" ; then
+SED=sed
+fi
+
+lt_unmangle ()
+{
+ last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_]\*_la-##'`
+}
+
+# the real libtool to use
+LIBTOOL="$1"
+shift
+
+# if 1, don't print anything, the underlaying wrapper will do it
+pass_though=0
+
+# scan the arguments, keep the right ones for libtool, and discover the mode
+preserved_args=
+while test "$#" -gt 0; do
+ opt="$1"
+ shift
+
+ case $opt in
+ --mode=*)
+ mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+ preserved_args="$preserved_args $opt"
+ ;;
+ -o)
+ lt_output="$1"
+ preserved_args="$preserved_args $opt"
+ ;;
+ *)
+ preserved_args="$preserved_args $opt"
+ ;;
+ esac
+done
+
+case "$mode" in
+compile)
+ # shave will be called and print the actual CC/CXX/LINK line
+ preserved_args="$preserved_args --shave-mode=$mode"
+ pass_though=1
+ ;;
+link)
+ preserved_args="$preserved_args --shave-mode=$mode"
+ Q=" LINK "
+ ;;
+*)
+ # let's u
+ # echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
+ ;;
+esac
+
+lt_unmangle "$lt_output"
+output=$last_result
+
+if test -z $V; then
+ if test $pass_though -eq 0; then
+ echo "$Q$output"
+ fi
+ $LIBTOOL --silent $preserved_args
+else
+ echo $LIBTOOL $preserved_args
+ $LIBTOOL $preserved_args
+fi
diff --git a/shave.in b/shave.in
new file mode 100644
index 0000000..dc46ec9
--- /dev/null
+++ b/shave.in
@@ -0,0 +1,70 @@
+#!/bin/sh
+
+# we need sed
+SED=@SED@
+if test -z "$SED" ; then
+SED=sed
+fi
+
+lt_unmangle ()
+{
+ last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_]\*_la-##'`
+}
+
+# the tool to wrap (cc, cxx, ar, ranlib, ..)
+tool="$1"
+shift
+
+# the reel tool (to call)
+REEL_TOOL="$1"
+shift
+
+pass_through=0
+preserved_args=
+while test "$#" -gt 0; do
+ opt="$1"
+ shift
+
+ case $opt in
+ --shave-mode=*)
+ mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+ ;;
+ -o)
+ lt_output="$1"
+ preserved_args="$preserved_args $opt"
+ ;;
+ *)
+ preserved_args="$preserved_args $opt"
+ ;;
+ esac
+done
+
+# mode=link is handled in the libtool wrapper
+case "$mode,$tool" in
+link,*)
+ pass_through=1
+ ;;
+*,cxx)
+ Q=" CXX "
+ ;;
+*,cc)
+ Q=" CC "
+ ;;
+*,*)
+ # should not happen
+ Q=" CC "
+ ;;
+esac
+
+lt_unmangle "$lt_output"
+output=$last_result
+
+if test -z $V; then
+ if test $pass_through -eq 0; then
+ echo "$Q$output"
+ fi
+ $REEL_TOOL $preserved_args
+else
+ echo $REEL_TOOL $preserved_args
+ $REEL_TOOL $preserved_args
+fi
commit 7f5fff943f36c8dcb856bf2b3c77b0da9bf581e9
Merge: 7126392... 16bb658...
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 11:43:15 2009 +0100
Merge commit 'elmarco/shave'
commit 00839ddaa6d305784109a63517f4758b1675dadc
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 22:27:25 2009 +0100
make sure we check the sink status for PA_SINK_INPUT_FAIL_ON_SUSPEND only after module-suspend-on-idle had the chance to resume the device
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 34217c8..544bb33 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -158,7 +158,6 @@ int pa_sink_input_new(
pa_return_val_if_fail(data->sink, -PA_ERR_NOENTITY);
pa_return_val_if_fail(PA_SINK_IS_LINKED(pa_sink_get_state(data->sink)), -PA_ERR_BADSTATE);
pa_return_val_if_fail(!data->sync_base || (data->sync_base->sink == data->sink && pa_sink_input_get_state(data->sync_base) == PA_SINK_INPUT_CORKED), -PA_ERR_INVALID);
- pa_return_val_if_fail(!(flags & PA_SINK_INPUT_FAIL_ON_SUSPEND) || pa_sink_get_state(data->sink) != PA_SINK_SUSPENDED, -PA_ERR_BADSTATE);
if (!data->sample_spec_is_set)
data->sample_spec = data->sink->sample_spec;
@@ -228,6 +227,12 @@ int pa_sink_input_new(
if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_INPUT_FIXATE], data)) < 0)
return r;
+ if ((flags & PA_SINK_INPUT_FAIL_ON_SUSPEND) &&
+ pa_sink_get_state(data->sink) == PA_SINK_SUSPENDED) {
+ pa_log_warn("Failed to create sink input: sink is suspended.");
+ return -PA_ERR_BADSTATE;
+ }
+
if (pa_idxset_size(data->sink->inputs) >= PA_MAX_INPUTS_PER_SINK) {
pa_log_warn("Failed to create sink input: too many inputs per sink.");
return -PA_ERR_TOOLARGE;
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index d63aca1..d8a2363 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -127,7 +127,6 @@ int pa_source_output_new(
pa_return_val_if_fail(data->source, -PA_ERR_NOENTITY);
pa_return_val_if_fail(PA_SOURCE_IS_LINKED(pa_source_get_state(data->source)), -PA_ERR_BADSTATE);
pa_return_val_if_fail(!data->direct_on_input || data->direct_on_input->sink == data->source->monitor_of, -PA_ERR_INVALID);
- pa_return_val_if_fail(!(flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND) || pa_source_get_state(data->source) != PA_SOURCE_SUSPENDED, -PA_ERR_BADSTATE);
if (!data->sample_spec_is_set)
data->sample_spec = data->source->sample_spec;
@@ -166,6 +165,12 @@ int pa_source_output_new(
if ((r = pa_hook_fire(&core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE], data)) < 0)
return r;
+ if ((flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND) &&
+ pa_source_get_state(data->source) == PA_SOURCE_SUSPENDED) {
+ pa_log("Failed to create source output: source is suspended.");
+ return -PA_ERR_BADSTATE;
+ }
+
if (pa_idxset_size(data->source->outputs) >= PA_MAX_OUTPUTS_PER_SOURCE) {
pa_log("Failed to create source output: too many outputs per source.");
return -PA_ERR_TOOLARGE;
commit 3d04300c1b3600f5d497baba72d8967d032b93a0
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 22:35:13 2009 +0100
hide shave in gitignore
diff --git a/.gitignore b/.gitignore
index f869d72..e2a5091 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,6 @@
+shave
+shave-libtool
+.*.swp
ABOUT-NLS
intltool-extract.in
intltool-merge.in
commit e8d7c50c00c5d1867e02e113df0df9ababb1cf7a
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 23:02:56 2009 +0100
forgot to bump the revision
diff --git a/configure.ac b/configure.ac
index aab7e2d..a1ded9e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ m4_define(pa_major, [0])
m4_define(pa_minor, [9])
m4_define(pa_micro, [15])
-AC_INIT([pulseaudio],[pa_major.pa_minor.pa_micro-test2],[mzchyfrnhqvb (at) 0pointer (dot) net])
+AC_INIT([pulseaudio],[pa_major.pa_minor.pa_micro-test3],[mzchyfrnhqvb (at) 0pointer (dot) net])
AC_CONFIG_SRCDIR([src/daemon/main.c])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_HEADERS([config.h])
commit 620bf845732f9f1d97ec3fa0eb6bf4789466680d
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Feb 25 09:13:19 2009 +0100
try to vacuum a little when nothing is going on
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index eef967a..c064e67 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -250,3 +250,14 @@ int pa_core_exit(pa_core *c, pa_bool_t force, int retval) {
c->mainloop->quit(c->mainloop, retval);
return 0;
}
+
+void pa_core_maybe_vacuum(pa_core *c) {
+ pa_assert(c);
+
+ if (!pa_idxset_isempty(c->sink_inputs) ||
+ !pa_idxset_isempty(c->source_outputs))
+ return;
+
+ pa_log_debug("Hmm, no streams around, trying to vacuum.");
+ pa_mempool_vacuum(c->mempool);
+}
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index 7660bd3..093fa8f 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -171,4 +171,6 @@ void pa_core_check_idle(pa_core *c);
int pa_core_exit(pa_core *c, pa_bool_t force, int retval);
+void pa_core_maybe_vacuum(pa_core *c);
+
#endif
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 544bb33..34de9bb 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -468,6 +468,8 @@ void pa_sink_input_unlink(pa_sink_input *i) {
i->sink = NULL;
}
+ pa_core_maybe_vacuum(i->core);
+
pa_sink_input_unref(i);
}
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index d8a2363..d99f79c 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -335,6 +335,8 @@ void pa_source_output_unlink(pa_source_output*o) {
o->source = NULL;
}
+ pa_core_maybe_vacuum(o->core);
+
pa_source_output_unref(o);
}
commit dd3c96dede6439ee5dec9e3b22bce9cf7b53d2ff
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Thu Feb 26 00:54:37 2009 +0000
Fix a very strange 'file not found' error in module-alsa-card.
This fixes a regression introduced by commit c341010304064c9a6ae13fab15c7fa7883acaeeb
diff --git a/src/Makefile.am b/src/Makefile.am
index 1fc8735..9f9cf4c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1315,7 +1315,7 @@ endif
if HAVE_DBUS
libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h
-libalsa_util_la_LIBADD += $(DBUS_LIBS)
+libalsa_util_la_LIBADD += $(DBUS_LIBS) libdbus-util.la
libalsa_util_la_CFLAGS += $(DBUS_CFLAGS)
endif
commit 07f98425baa93549d58df42e42dc6f242e4b050b
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Thu Feb 26 09:02:15 2009 +0000
bluetooth: Fix under linked module-bluetooth-device
diff --git a/src/Makefile.am b/src/Makefile.am
index 9f9cf4c..f5a1feb 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1532,7 +1532,7 @@ libbluetooth_util_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
module_bluetooth_device_la_SOURCES = modules/bluetooth/module-bluetooth-device.c modules/bluetooth/rtp.h
module_bluetooth_device_la_LDFLAGS = $(MODULE_LDFLAGS)
-module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+module_bluetooth_device_la_LIBADD = $(AM_LIBADD) $(DBUS_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libdbus-util.la libbluetooth-util.la libbluetooth-ipc.la libbluetooth-sbc.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_bluetooth_device_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS)
# Apple Airtunes/RAOP
commit 0d8f67b8269a60ce81b107cf7d1b79292b64e55b
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Feb 27 00:32:32 2009 +0100
revise list of form factors a little
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index d30dc3b..fa44c42 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -156,7 +156,7 @@ PA_C_DECL_BEGIN
/** For devices: device class. One of "sound", "modem", "monitor", "filter" */
#define PA_PROP_DEVICE_CLASS "device.class"
-/** For devices: form factor if applicable. One of "laptop-speakers", "external-speakers", "telephone", "tv-capture", "webcam-capture", "microphone-capture", "headset", "headphones", "hands-free", "car", "hifi", "computer", "portable" */
+/** For devices: form factor if applicable. One of "internal-speakers", "external-speakers", "handset", "tv-capture", "webcam", "microphone", "headset", "headphones", "hands-free", "car", "hifi", "computer", "portable" */
#define PA_PROP_DEVICE_FORM_FACTOR "device.form_factor"
/** For devices: connector of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */
commit 1c86267e1fabd2f6eb7349bfd47e4556dd779edf
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Feb 27 01:15:06 2009 +0100
when an underrun happens, increase watermark by 10ms instead of doubling it
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index dbd95b6..a33dad4 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -61,10 +61,11 @@
/* #define DEBUG_TIMING */
#define DEFAULT_DEVICE "default"
-#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */
-#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */
-#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
-#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */
+#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s -- Overall buffer size */
+#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms -- Fill up when only this much is left in the buffer */
+#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- On underrun, increase watermark by this */
+#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms -- Sleep at least 10ms on each iteration */
+#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/
struct userdata {
pa_core *core;
@@ -86,7 +87,16 @@ struct userdata {
pa_bool_t mixer_seperate_channels:1;
pa_cvolume hardware_volume;
- size_t frame_size, fragment_size, hwbuf_size, tsched_watermark, hwbuf_unused, min_sleep, min_wakeup;
+ size_t
+ frame_size,
+ fragment_size,
+ hwbuf_size,
+ tsched_watermark,
+ hwbuf_unused,
+ min_sleep,
+ min_wakeup,
+ watermark_step;
+
unsigned nfragments;
pa_memchunk memchunk;
@@ -205,10 +215,11 @@ static void adjust_after_underrun(struct userdata *u) {
pa_usec_t old_min_latency, new_min_latency;
pa_assert(u);
+ pa_assert(u->use_tsched);
/* First, just try to increase the watermark */
old_watermark = u->tsched_watermark;
- u->tsched_watermark *= 2;
+ u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step);
fix_tsched_watermark(u);
if (old_watermark != u->tsched_watermark) {
@@ -219,7 +230,8 @@ static void adjust_after_underrun(struct userdata *u) {
/* Hmm, we cannot increase the watermark any further, hence let's raise the latency */
old_min_latency = u->sink->thread_info.min_latency;
- new_min_latency = PA_MIN(old_min_latency * 2, u->sink->thread_info.max_latency);
+ new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC);
+ new_min_latency = PA_MIN(new_min_latency, u->sink->thread_info.max_latency);
if (old_min_latency != new_min_latency) {
pa_log_notice("Increasing minimal latency to %0.2f ms",
@@ -1680,6 +1692,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
if (use_tsched) {
fix_min_sleep_wakeup(u);
fix_tsched_watermark(u);
+
+ u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->sink->sample_spec);
}
u->sink->thread_info.max_rewind = use_tsched ? u->hwbuf_size : 0;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 39df4a9..8ae190f 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -64,6 +64,7 @@
#define DEFAULT_DEVICE "default"
#define DEFAULT_TSCHED_BUFFER_USEC (2*PA_USEC_PER_SEC) /* 2s */
#define DEFAULT_TSCHED_WATERMARK_USEC (20*PA_USEC_PER_MSEC) /* 20ms */
+#define TSCHED_WATERMARK_STEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */
@@ -88,7 +89,16 @@ struct userdata {
pa_cvolume hardware_volume;
- size_t frame_size, fragment_size, hwbuf_size, tsched_watermark, hwbuf_unused, min_sleep, min_wakeup;
+ size_t
+ frame_size,
+ fragment_size,
+ hwbuf_size,
+ tsched_watermark,
+ hwbuf_unused,
+ min_sleep,
+ min_wakeup,
+ watermark_step;
+
unsigned nfragments;
char *device_name;
@@ -202,10 +212,12 @@ static void adjust_after_overrun(struct userdata *u) {
pa_usec_t old_min_latency, new_min_latency;
pa_assert(u);
+ pa_assert(u->use_tsched);
/* First, just try to increase the watermark */
old_watermark = u->tsched_watermark;
- u->tsched_watermark *= 2;
+ u->tsched_watermark = PA_MIN(u->tsched_watermark * 2, u->tsched_watermark + u->watermark_step);
+
fix_tsched_watermark(u);
if (old_watermark != u->tsched_watermark) {
@@ -216,7 +228,8 @@ static void adjust_after_overrun(struct userdata *u) {
/* Hmm, we cannot increase the watermark any further, hence let's raise the latency */
old_min_latency = u->source->thread_info.min_latency;
- new_min_latency = PA_MIN(old_min_latency * 2, u->source->thread_info.max_latency);
+ new_min_latency = PA_MIN(old_min_latency * 2, old_min_latency + TSCHED_WATERMARK_STEP_USEC);
+ new_min_latency = PA_MIN(new_min_latency, u->source->thread_info.max_latency);
if (old_min_latency != new_min_latency) {
pa_log_notice("Increasing minimal latency to %0.2f ms",
@@ -1521,6 +1534,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
if (use_tsched) {
fix_min_sleep_wakeup(u);
fix_tsched_watermark(u);
+
+ u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->source->sample_spec);
}
pa_source_set_latency_range(u->source,
commit 798e39a5b686da5b5f0b0335cb21fc14c715f9e4
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Feb 27 01:15:29 2009 +0100
when alsa tweaks our sample_spec make sure we adjust the watermark accordingly
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index a33dad4..0aef1bd 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1496,7 +1496,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
struct userdata *u = NULL;
const char *dev_id = NULL;
- pa_sample_spec ss;
+ pa_sample_spec ss, requested_ss;
pa_channel_map map;
uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark;
snd_pcm_uframes_t period_frames, tsched_frames;
@@ -1515,6 +1515,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
goto fail;
}
+ requested_ss = ss;
frame_size = pa_frame_size(&ss);
nfrags = m->core->default_n_fragments;
@@ -1686,7 +1687,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size);
u->nfragments = nfrags;
u->hwbuf_size = u->fragment_size * nfrags;
- u->tsched_watermark = tsched_watermark;
+ u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->sink->sample_spec);
pa_cvolume_mute(&u->hardware_volume, u->sink->sample_spec.channels);
if (use_tsched) {
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 8ae190f..671df3f 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1344,7 +1344,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
struct userdata *u = NULL;
const char *dev_id = NULL;
- pa_sample_spec ss;
+ pa_sample_spec ss, requested_ss;
pa_channel_map map;
uint32_t nfrags, hwbuf_size, frag_size, tsched_size, tsched_watermark;
snd_pcm_uframes_t period_frames, tsched_frames;
@@ -1362,6 +1362,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
goto fail;
}
+ requested_ss = ss;
frame_size = pa_frame_size(&ss);
nfrags = m->core->default_n_fragments;
@@ -1528,7 +1529,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->fragment_size = frag_size = (uint32_t) (period_frames * frame_size);
u->nfragments = nfrags;
u->hwbuf_size = u->fragment_size * nfrags;
- u->tsched_watermark = tsched_watermark;
+ u->tsched_watermark = pa_usec_to_bytes_round_up(pa_bytes_to_usec_round_up(tsched_watermark, &requested_ss), &u->source->sample_spec);
pa_cvolume_mute(&u->hardware_volume, u->source->sample_spec.channels);
if (use_tsched) {
commit 116b38c972942ccbbb8dae5dc0181da98096a0ce
Merge: 798e39a... 07f9842...
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Feb 27 01:18:04 2009 +0100
Merge commit 'coling/master'
commit 8fc9b19cb314329487a62a15c523e9778298f1d5
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Sat Feb 28 23:45:02 2009 +0000
Don't assume that device reservation is enabled.
In the case when the alsa 'device' is not a physical card, it wont have an index and thus
the reservation name will be NULL and therefore we will not initialise the reservation system.
Fixes #498
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 0aef1bd..708e020 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -148,7 +148,7 @@ static void reserve_update(struct userdata *u) {
const char *description;
pa_assert(u);
- if (!u->sink)
+ if (!u->sink || !u->reserve)
return;
if ((description = pa_proplist_gets(u->sink->proplist, PA_PROP_DEVICE_DESCRIPTION)))
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 671df3f..4321c7f 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -146,7 +146,7 @@ static void reserve_update(struct userdata *u) {
const char *description;
pa_assert(u);
- if (!u->source)
+ if (!u->source || !u->reserve)
return;
if ((description = pa_proplist_gets(u->source->proplist, PA_PROP_DEVICE_DESCRIPTION)))
commit abdffe9cbed4be26fe05bb1b47213e12eb547c25
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 20:27:55 2009 +0100
make example code a bit more robust/change-proof
diff --git a/src/pulse/thread-mainloop.h b/src/pulse/thread-mainloop.h
index 4de338a..f0b1a84 100644
--- a/src/pulse/thread-mainloop.h
+++ b/src/pulse/thread-mainloop.h
@@ -108,10 +108,10 @@ PA_C_DECL_BEGIN
* Example:
*
* \code
- * static void my_drain_callback(pa_stream*s, int success, void *userdata) {
+ * static void my_drain_callback(pa_stream *s, int success, void *userdata) {
* pa_threaded_mainloop *m;
*
- * m = (pa_threaded_mainloop*)userdata;
+ * m = userdata;
* assert(m);
*
* pa_threaded_mainloop_signal(m, 0);
@@ -125,7 +125,7 @@ PA_C_DECL_BEGIN
* o = pa_stream_drain(s, my_drain_callback, m);
* assert(o);
*
- * while (pa_operation_get_state(o) != OPERATION_DONE)
+ * while (pa_operation_get_state(o) == PA_OPERATION_RUNNING)
* pa_threaded_mainloop_wait(m);
*
* pa_operation_unref(o);
@@ -167,7 +167,7 @@ PA_C_DECL_BEGIN
* static void my_drain_callback(pa_stream*s, int success, void *userdata) {
* pa_threaded_mainloop *m;
*
- * m = (pa_threaded_mainloop*)userdata;
+ * m = userdata;
* assert(m);
*
* drain_result = &success;
@@ -183,7 +183,7 @@ PA_C_DECL_BEGIN
* o = pa_stream_drain(s, my_drain_callback, m);
* assert(o);
*
- * while (pa_operation_get_state(o) != OPERATION_DONE)
+ * while (pa_operation_get_state(o) == PA_OPERATION_RUNNING)
* pa_threaded_mainloop_wait(m);
*
* pa_operation_unref(o);
commit e00833399f8ccbaca8bda14b6cffa13cfde91865
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 20:28:58 2009 +0100
introduce seperate vendor/product id fields
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index fa44c42..15711c9 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -150,8 +150,17 @@ PA_C_DECL_BEGIN
/** For devices: serial number if applicable. e.g. "4711-0815-1234" */
#define PA_PROP_DEVICE_SERIAL "device.serial"
-/** For devices: vendor/product ID if applicable. e.g. 1274:1371 */
-#define PA_PROP_DEVICE_VENDOR_PRODUCT_ID "device.vendor_product_id"
+/** For devices: vendor ID if applicable. e.g. 1274 */
+#define PA_PROP_DEVICE_VENDOR_ID "device.vendor.id"
+
+/** For devices: vendor name if applicable. e.g. "Foocorp Heavy Industries" */
+#define PA_PROP_DEVICE_VENDOR_NAME "device.vendor.name"
+
+/** For devices: product ID if applicable. e.g. 4565 */
+#define PA_PROP_DEVICE_PRODUCT_ID "device.product.id"
+
+/** For devices: product name if applicable. e.g. "SuperSpeakers 2000 Pro" */
+#define PA_PROP_DEVICE_PRODUCT_NAME "device.product.name"
/** For devices: device class. One of "sound", "modem", "monitor", "filter" */
#define PA_PROP_DEVICE_CLASS "device.class"
commit cce56ab34398ba60e4e8fe2838bf305fd81f3460
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 20:30:37 2009 +0100
revise form factor list a bit, simplify and use singular everywhere
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 7855c2e..6b52220 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -811,8 +811,8 @@ const char*pa_bluetooth_get_form_factor(uint32_t class) {
[1] = "headset",
[2] = "hands-free",
[4] = "microphone",
- [5] = "external-speakers",
- [6] = "headphones",
+ [5] = "speaker",
+ [6] = "headphone",
[7] = "portable",
[8] = "car",
[10] = "hifi"
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 15711c9..d87c9f9 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -165,7 +165,7 @@ PA_C_DECL_BEGIN
/** For devices: device class. One of "sound", "modem", "monitor", "filter" */
#define PA_PROP_DEVICE_CLASS "device.class"
-/** For devices: form factor if applicable. One of "internal-speakers", "external-speakers", "handset", "tv-capture", "webcam", "microphone", "headset", "headphones", "hands-free", "car", "hifi", "computer", "portable" */
+/** For devices: form factor if applicable. One of "internal", "speaker", "handset", "tv", "webcam", "microphone", "headset", "headphone", "hands-free", "car", "hifi", "computer", "portable" */
#define PA_PROP_DEVICE_FORM_FACTOR "device.form_factor"
/** For devices: connector of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */
commit cc8d51ad629891b5eb6b355c999c1c1b7e3fb34e
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 20:32:32 2009 +0100
rename PA_PROP_DEVICE_CONNECTOR to PA_PROP_DEVICE_BUS
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index b2fb1db..3332df2 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1728,7 +1728,7 @@ static int add_card(struct userdata *u, const char * default_profile) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device->address);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_API, "bluez");
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "sound");
- pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CONNECTOR, "bluetooth");
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_BUS, "bluetooth");
if ((ff = pa_bluetooth_get_form_factor(u->device->class)))
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_FORM_FACTOR, ff);
pa_proplist_sets(data.proplist, "bluez.path", u->device->path);
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index d87c9f9..7d3b7f7 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -168,8 +168,8 @@ PA_C_DECL_BEGIN
/** For devices: form factor if applicable. One of "internal", "speaker", "handset", "tv", "webcam", "microphone", "headset", "headphone", "hands-free", "car", "hifi", "computer", "portable" */
#define PA_PROP_DEVICE_FORM_FACTOR "device.form_factor"
-/** For devices: connector of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */
-#define PA_PROP_DEVICE_CONNECTOR "device.connector"
+/** For devices: bus of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */
+#define PA_PROP_DEVICE_BUS "device.bus"
/** For devices: access mode of the device if applicable. One of "mmap", "mmap_rewrite", "serial" */
#define PA_PROP_DEVICE_ACCESS_MODE "device.access_mode"
commit 784ac5b0da4f510232166406b3166fba0bef58e4
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 20:34:07 2009 +0100
get additional device data from udev
diff --git a/configure.ac b/configure.ac
index a1ded9e..b213129 100644
--- a/configure.ac
+++ b/configure.ac
@@ -977,6 +977,41 @@ AC_SUBST(HAL_LIBS)
AC_SUBST(HAVE_HAL)
AM_CONDITIONAL([HAVE_HAL], [test "x$HAVE_HAL" = x1])
+#### UDEV support (optional) ####
+
+AC_ARG_ENABLE([udev],
+ AS_HELP_STRING([--disable-udev],[Disable optional UDEV support]),
+ [
+ case "${enableval}" in
+ yes) udev=yes ;;
+ no) udev=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-udev) ;;
+ esac
+ ],
+ [udev=auto])
+if test "x${udev}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
+ PKG_CHECK_MODULES(UDEV, [ libudev ],
+ [
+ HAVE_UDEV=1
+ AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])
+ ],
+ [
+ HAVE_UDEV=0
+ if test "x$udev" = xyes ; then
+ AC_MSG_ERROR([*** UDEV support not found])
+ fi
+ ])
+else
+ HAVE_UDEV=0
+fi
+
+AC_SUBST(UDEV_CFLAGS)
+AC_SUBST(UDEV_LIBS)
+AC_SUBST(HAVE_UDEV)
+AM_CONDITIONAL([HAVE_UDEV], [test "x$HAVE_UDEV" = x1])
+
+AC_DEFINE([LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE], 1, [I know the API is subject to change.])
+
#### BlueZ support (optional) ####
AC_ARG_ENABLE([bluez],
@@ -1340,6 +1375,11 @@ if test "x$HAVE_HAL" = "x1" ; then
ENABLE_HAL=yes
fi
+ENABLE_UDEV=no
+if test "x$HAVE_UDEV" = "x1" ; then
+ ENABLE_UDEV=yes
+fi
+
ENABLE_TCPWRAP=no
if test "x${LIBWRAP_LIBS}" != x ; then
ENABLE_TCPWRAP=yes
@@ -1399,6 +1439,7 @@ echo "
Enable Async DNS: ${ENABLE_LIBASYNCNS}
Enable LIRC: ${ENABLE_LIRC}
Enable HAL: ${ENABLE_HAL}
+ Enable udev: ${ENABLE_UDEV}
Enable BlueZ: ${ENABLE_BLUEZ}
Enable TCP Wrappers: ${ENABLE_TCPWRAP}
Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}
diff --git a/src/Makefile.am b/src/Makefile.am
index f5a1feb..9f2fa02 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1313,6 +1313,12 @@ libalsa_util_la_LIBADD += $(HAL_LIBS)
libalsa_util_la_CFLAGS += $(HAL_CFLAGS)
endif
+if HAVE_UDEV
+libalsa_util_la_SOURCES += modules/udev-util.h modules/udev-util.c
+libalsa_util_la_LIBADD += $(UDEV_LIBS)
+libalsa_util_la_CFLAGS += $(UDEV_CFLAGS)
+endif
+
if HAVE_DBUS
libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h
libalsa_util_la_LIBADD += $(DBUS_LIBS) libdbus-util.la
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 0aef1bd..b6fcbb7 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1667,6 +1667,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, profile->description);
}
+ pa_alsa_set_description(data.proplist);
+
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 671df3f..f56b96f 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1509,6 +1509,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, profile->description);
}
+ pa_alsa_set_description(data.proplist);
+
u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY);
pa_source_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 6740c06..2f06acd 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -47,6 +47,10 @@
#include "hal-util.h"
#endif
+#ifdef HAVE_UDEV
+#include "udev-util.h"
+#endif
+
struct pa_alsa_fdlist {
unsigned num_fds;
struct pollfd *fds;
@@ -1362,6 +1366,35 @@ void pa_alsa_redirect_errors_dec(void) {
snd_lib_error_set_handler(NULL);
}
+void pa_alsa_set_description(pa_proplist *p) {
+ const char *s;
+ pa_assert(p);
+
+ if (pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
+ return;
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
+ if (pa_streq(s, "internal")) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, _("Internal Audio"));
+ return;
+ }
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PRODUCT_NAME))) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
+ return;
+ }
+
+ if ((s = pa_proplist_gets(p, "alsa.card_name"))) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
+ return;
+ }
+
+ if ((s = pa_proplist_gets(p, "alsa.name"))) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
+ return;
+ }
+}
+
void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card) {
char *cn, *lcn, *dn;
@@ -1385,6 +1418,10 @@ void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card) {
pa_xfree(dn);
}
+#ifdef HAVE_UDEV
+ pa_udev_get_info(c, p, card);
+#endif
+
#ifdef HAVE_HAL
pa_hal_get_info(c, p, card);
#endif
@@ -1411,7 +1448,7 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
snd_pcm_class_t class;
snd_pcm_subclass_t subclass;
- const char *n, *id, *sdn, *cn = NULL;
+ const char *n, *id, *sdn;
int card;
pa_assert(p);
@@ -1426,6 +1463,7 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
if (alsa_class_table[class])
pa_proplist_sets(p, "alsa.class", alsa_class_table[class]);
}
+
subclass = snd_pcm_info_get_subclass(pcm_info);
if (subclass <= SND_PCM_SUBCLASS_LAST)
if (alsa_subclass_table[subclass])
@@ -1443,17 +1481,8 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
pa_proplist_setf(p, "alsa.device", "%u", snd_pcm_info_get_device(pcm_info));
- if ((card = snd_pcm_info_get_card(pcm_info)) >= 0) {
+ if ((card = snd_pcm_info_get_card(pcm_info)) >= 0)
pa_alsa_init_proplist_card(c, p, card);
- cn = pa_proplist_gets(p, "alsa.card_name");
- }
-
- if (cn && n && !strstr(cn, n) && !strstr(n, cn))
- pa_proplist_setf(p, PA_PROP_DEVICE_DESCRIPTION, "%s, %s", cn, n);
- else if (cn && (!n || strstr(cn, n)))
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, cn);
- else if (n)
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, n);
}
void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm) {
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 899532e..1fb5996 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -123,6 +123,7 @@ void pa_alsa_redirect_errors_dec(void);
void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *pcm_info);
void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card);
void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm);
+void pa_alsa_set_description(pa_proplist *p);
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index fc6b886..74f3099 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -318,6 +318,7 @@ int pa__init(pa_module *m) {
data.module = m;
pa_alsa_init_proplist_card(m->core, data.proplist, alsa_card_index);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
+ pa_alsa_set_description(data.proplist);
set_card_name(&data, ma, u->device_id);
if (reserve)
diff --git a/src/modules/hal-util.c b/src/modules/hal-util.c
index 82bbc57..6959a70 100644
--- a/src/modules/hal-util.c
+++ b/src/modules/hal-util.c
@@ -89,6 +89,9 @@ int pa_hal_get_info(pa_core *core, pa_proplist *p, int card) {
pa_proplist_sets(p, "hal.udi", udis[i]);
+ /* The data HAL stores in info.product is not actually a product
+ * string but simply the ALSA card name. We will hence not write
+ * it to PA_PROP_DEVICE_PRODUCT_NAME */
t = libhal_device_get_property_string(hal, udis[i], "info.product", &error);
if (dbus_error_is_set(&error))
dbus_error_free(&error);
diff --git a/src/modules/udev-util.c b/src/modules/udev-util.c
new file mode 100644
index 0000000..a72bc8f
--- /dev/null
+++ b/src/modules/udev-util.c
@@ -0,0 +1,142 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <libudev.h>
+
+#include <pulse/xmalloc.h>
+#include <pulse/proplist.h>
+
+#include <pulsecore/log.h>
+#include <pulsecore/core-util.h>
+
+#include "udev-util.h"
+
+static int read_id(struct udev_device *d, const char *n) {
+ const char *v;
+ unsigned u;
+
+ pa_assert(d);
+ pa_assert(n);
+
+ if (!(v = udev_device_get_property_value(d, n)))
+ return -1;
+
+ if (pa_startswith(v, "0x"))
+ v += 2;
+
+ if (!*v)
+ return -1;
+
+ if (sscanf(v, "%04x", &u) != 1)
+ return -1;
+
+ if (u > 0xFFFFU)
+ return -1;
+
+ return u;
+}
+
+int pa_udev_get_info(pa_core *core, pa_proplist *p, int card_idx) {
+ int r = -1;
+ struct udev *udev;
+ struct udev_device *card;
+ char *t;
+ const char *v;
+ int id;
+
+ pa_assert(core);
+ pa_assert(p);
+ pa_assert(card_idx >= 0);
+
+ if (!(udev = udev_new())) {
+ pa_log_error("Failed to allocate udev context.");
+ goto finish;
+ }
+
+ t = pa_sprintf_malloc("%s/class/sound/card%i", udev_get_sys_path(udev), card_idx);
+ card = udev_device_new_from_syspath(udev, t);
+ pa_xfree(t);
+
+ if (!card) {
+ pa_log_error("Failed to get card object.");
+ goto finish;
+ }
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_BUS))
+ if ((v = udev_device_get_property_value(card, "ID_BUS")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_BUS, v);
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_VENDOR_ID))
+ if ((id = read_id(card, "ID_VENDOR_ID")) > 0 && *v)
+ pa_proplist_setf(p, PA_PROP_DEVICE_VENDOR_ID, "%04x", id);
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_VENDOR_NAME)) {
+ if ((v = udev_device_get_property_value(card, "ID_VENDOR_FROM_DATABASE")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_VENDOR_NAME, v);
+ else if ((v = udev_device_get_property_value(card, "ID_VENDOR")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_VENDOR_NAME, v);
+ }
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_PRODUCT_ID))
+ if ((id = read_id(card, "ID_MODEL_ID")) >= 0)
+ pa_proplist_setf(p, PA_PROP_DEVICE_PRODUCT_ID, "%04x", id);
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_PRODUCT_NAME)) {
+ if ((v = udev_device_get_property_value(card, "ID_MODEL_FROM_DATABASE")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_PRODUCT_NAME, v);
+ else if ((v = udev_device_get_property_value(card, "ID_MODEL")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_PRODUCT_NAME, v);
+ }
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_SERIAL))
+ if ((v = udev_device_get_property_value(card, "ID_SERIAL")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_SERIAL, v);
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_FORM_FACTOR))
+ if ((v = udev_device_get_property_value(card, "SOUND_FORM_FACTOR")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_FORM_FACTOR, v);
+
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_BUS_PATH))
+ if ((v = udev_device_get_devpath(card)))
+ pa_proplist_sets(p, PA_PROP_DEVICE_BUS_PATH, v);
+
+ /* This is normaly not set by th udev rules but may be useful to
+ * allow administrators to overwrite the device description.*/
+ if (!pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
+ if ((v = udev_device_get_property_value(card, "SOUND_DESCRIPTION")) && *v)
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, v);
+
+ r = 0;
+
+finish:
+
+ if (card)
+ udev_device_unref(card);
+
+ if (udev)
+ udev_unref(udev);
+
+ return r;
+}
diff --git a/src/modules/udev-util.h b/src/modules/udev-util.h
new file mode 100644
index 0000000..86fbba7
--- /dev/null
+++ b/src/modules/udev-util.h
@@ -0,0 +1,30 @@
+#ifndef fooudevutilhfoo
+#define fooudevutilhfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 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.
+***/
+
+
+#include <pulsecore/core.h>
+
+int pa_udev_get_info(pa_core *core, pa_proplist *p, int card);
+
+#endif
commit 671b927955745dd62787113a8b8ebcaf018ec0f6
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 21:34:01 2009 +0100
add logic for initializing a useful icon name
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index b6fcbb7..7768b38 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1667,7 +1667,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, profile->description);
}
- pa_alsa_set_description(data.proplist);
+ pa_alsa_init_description(data.proplist);
u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE|PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index f56b96f..def638e 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1509,7 +1509,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_PROFILE_DESCRIPTION, profile->description);
}
- pa_alsa_set_description(data.proplist);
+ pa_alsa_init_description(data.proplist);
u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY);
pa_source_new_data_done(&data);
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 2f06acd..7d833ff 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1366,33 +1366,24 @@ void pa_alsa_redirect_errors_dec(void) {
snd_lib_error_set_handler(NULL);
}
-void pa_alsa_set_description(pa_proplist *p) {
+pa_bool_t pa_alsa_init_description(pa_proplist *p) {
const char *s;
pa_assert(p);
- if (pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
- return;
-
- if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
- if (pa_streq(s, "internal")) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, _("Internal Audio"));
- return;
- }
-
- if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PRODUCT_NAME))) {
- pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
- return;
- }
+ if (pa_device_init_description(p))
+ return TRUE;
if ((s = pa_proplist_gets(p, "alsa.card_name"))) {
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
- return;
+ return TRUE;
}
if ((s = pa_proplist_gets(p, "alsa.name"))) {
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
- return;
+ return TRUE;
}
+
+ return FALSE;
}
void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card) {
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 1fb5996..a8397ae 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -123,7 +123,7 @@ void pa_alsa_redirect_errors_dec(void);
void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *pcm_info);
void pa_alsa_init_proplist_card(pa_core *c, pa_proplist *p, int card);
void pa_alsa_init_proplist_pcm(pa_core *c, pa_proplist *p, snd_pcm_t *pcm);
-void pa_alsa_set_description(pa_proplist *p);
+pa_bool_t pa_alsa_init_description(pa_proplist *p);
int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 74f3099..9e149a4 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -318,7 +318,7 @@ int pa__init(pa_module *m) {
data.module = m;
pa_alsa_init_proplist_card(m->core, data.proplist, alsa_card_index);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
- pa_alsa_set_description(data.proplist);
+ pa_alsa_init_description(data.proplist);
set_card_name(&data, ma, u->device_id);
if (reserve)
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 7d3b7f7..5d2693c 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -171,6 +171,12 @@ PA_C_DECL_BEGIN
/** For devices: bus of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */
#define PA_PROP_DEVICE_BUS "device.bus"
+/** For devices: icon for the device. A binary blob containing PNG image data */
+#define PA_PROP_DEVICE_ICON "device.icon"
+
+/** For devices: an XDG icon name for the device. e.g. "sound-card-speakers-usb" */
+#define PA_PROP_DEVICE_ICON_NAME "device.icon_name"
+
/** For devices: access mode of the device if applicable. One of "mmap", "mmap_rewrite", "serial" */
#define PA_PROP_DEVICE_ACCESS_MODE "device.access_mode"
diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
index 515d1f9..94064c7 100644
--- a/src/pulsecore/card.c
+++ b/src/pulsecore/card.c
@@ -160,6 +160,9 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) {
c->userdata = NULL;
c->set_profile = NULL;
+ pa_device_init_description(c->proplist);
+ pa_device_init_icon(c->proplist, TRUE);
+
pa_assert_se(pa_idxset_put(core->cards, c, &c->index) >= 0);
pa_log_info("Created %u \"%s\"", c->index, c->name);
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 7441e97..fadbb85 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -33,6 +33,7 @@
#include <pulse/xmalloc.h>
#include <pulse/timeval.h>
#include <pulse/util.h>
+#include <pulse/i18n.h>
#include <pulsecore/sink-input.h>
#include <pulsecore/namereg.h>
@@ -172,6 +173,9 @@ pa_sink* pa_sink_new(
if (data->card)
pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->card->proplist);
+ pa_device_init_description(data->proplist);
+ pa_device_init_icon(data->proplist, TRUE);
+
if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_FIXATE], data) < 0) {
pa_xfree(s);
pa_namereg_unregister(core, name);
@@ -1886,3 +1890,68 @@ size_t pa_sink_get_max_request(pa_sink *s) {
return r;
}
+
+/* Called from main context */
+pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
+ const char *ff, *t = NULL, *s = "", *profile, *bus;
+
+ pa_assert(p);
+
+ if (pa_proplist_contains(p, PA_PROP_DEVICE_ICON_NAME))
+ return TRUE;
+
+ if ((ff = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR))) {
+
+ if (pa_streq(ff, "microphone"))
+ t = "audio-input-microphone";
+ else if (pa_streq(ff, "webcam"))
+ t = "camera-web";
+ else if (pa_streq(ff, "computer"))
+ t = "computer";
+ else if (pa_streq(ff, "handset"))
+ t = "phone";
+ }
+
+ if (!t) {
+ if (is_sink)
+ t = "audio-card";
+ else
+ t = "audio-input-microphone";
+ }
+
+ if ((profile = pa_proplist_gets(p, PA_PROP_DEVICE_PROFILE_NAME))) {
+ if (strstr(profile, "analog"))
+ s = "-analog";
+ else if (strstr(profile, "iec958"))
+ s = "-iec958";
+ else if (strstr(profile, "hdmi"))
+ s = "-hdmi";
+ }
+
+ bus = pa_proplist_gets(p, PA_PROP_DEVICE_BUS);
+
+ pa_proplist_setf(p, PA_PROP_DEVICE_ICON_NAME, "%s%s%s%s", t, pa_strempty(s), bus ? "-" : "", pa_strempty(bus));
+
+ return TRUE;
+}
+
+pa_bool_t pa_device_init_description(pa_proplist *p) {
+ const char *s;
+ pa_assert(p);
+
+ if (pa_proplist_contains(p, PA_PROP_DEVICE_DESCRIPTION))
+ return TRUE;
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR)))
+ if (pa_streq(s, "internal")) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, _("Internal Audio"));
+ return TRUE;
+ }
+
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PRODUCT_NAME))) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
+ return TRUE;
+ }
+
+ return FALSE;
+}
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 124b4e1..2eaae69 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -225,6 +225,9 @@ void pa_sink_attach(pa_sink *s);
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume);
+pa_bool_t pa_device_init_description(pa_proplist *p);
+pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink);
+
/**** May be called by everyone, from main context */
/* The returned value is supposed to be in the time domain of the sound card! */
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index c0d6d9e..4ce5cbf 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -163,6 +163,9 @@ pa_source* pa_source_new(
if (data->card)
pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->card->proplist);
+ pa_device_init_description(data->proplist);
+ pa_device_init_icon(data->proplist, FALSE);
+
if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_SOURCE_FIXATE], data) < 0) {
pa_xfree(s);
pa_namereg_unregister(core, name);
commit ba4765a0dce7dfe9926999b83396f13d35288365
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Mar 1 21:36:19 2009 +0100
For now don't list icon property (in favour of icon name property) since icon negotiation is probably much more complex (i.e. sizes...) than just putting icon data somewhere.
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 5d2693c..d5f5bc0 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -45,8 +45,10 @@ PA_C_DECL_BEGIN
/** For streams: source filename if applicable, in URI format or local path. e.g. "/home/lennart/music/foobar.ogg" */
#define PA_PROP_MEDIA_FILENAME "media.filename"
+/** \cond fulldocs */
/** For streams: icon for the media. A binary blob containing PNG image data */
#define PA_PROP_MEDIA_ICON "media.icon"
+/** \endcond */
/** For streams: an XDG icon name for the media. e.g. "audio-x-mp3" */
#define PA_PROP_MEDIA_ICON_NAME "media.icon_name"
@@ -81,8 +83,10 @@ PA_C_DECL_BEGIN
/** For streams that belong to a window on the screen: a textual id for identifying a window logically. e.g. "org.gnome.Totem.MainWindow" */
#define PA_PROP_WINDOW_ID "window.id"
+/** \cond fulldocs */
/** For streams that belong to a window on the screen: window icon. A binary blob containing PNG image data */
#define PA_PROP_WINDOW_ICON "window.icon"
+/** \endcond */
/** For streams that belong to a window on the screen: an XDG icon name for the window. e.g. "totem" */
#define PA_PROP_WINDOW_ICON_NAME "window.icon_name"
@@ -108,8 +112,10 @@ PA_C_DECL_BEGIN
/** For clients/streams: a version string e.g. "0.6.88" */
#define PA_PROP_APPLICATION_VERSION "application.version"
+/** \cond fulldocs */
/** For clients/streams: application icon. A binary blob containing PNG image data */
#define PA_PROP_APPLICATION_ICON "application.icon"
+/** \endcond */
/** For clients/streams: an XDG icon name for the application. e.g. "totem" */
#define PA_PROP_APPLICATION_ICON_NAME "application.icon_name"
@@ -171,8 +177,10 @@ PA_C_DECL_BEGIN
/** For devices: bus of the device if applicable. One of "isa", "pci", "usb", "firewire", "bluetooth" */
#define PA_PROP_DEVICE_BUS "device.bus"
+/** \cond fulldocs */
/** For devices: icon for the device. A binary blob containing PNG image data */
#define PA_PROP_DEVICE_ICON "device.icon"
+/** \endcond */
/** For devices: an XDG icon name for the device. e.g. "sound-card-speakers-usb" */
#define PA_PROP_DEVICE_ICON_NAME "device.icon_name"
commit d293f08442ee750373257dd3f769f14bfbef3432
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Sun Mar 1 18:10:35 2009 +0000
raop: Allow for nice sink descriptions to be set (interpolated from avahi)
diff --git a/src/modules/module-raop-discover.c b/src/modules/module-raop-discover.c
index df39315..7df549e 100644
--- a/src/modules/module-raop-discover.c
+++ b/src/modules/module-raop-discover.c
@@ -152,11 +152,18 @@ static void resolver_cb(
if (event != AVAHI_RESOLVER_FOUND)
pa_log("Resolving of '%s' failed: %s", name, avahi_strerror(avahi_client_errno(u->client)));
else {
- char *device = NULL, *dname, *vname, *args;
+ char *device = NULL, *nicename, *dname, *vname, *args;
char at[AVAHI_ADDRESS_STR_MAX];
AvahiStringList *l;
pa_module *m;
+ if ((nicename = strstr(name, "@"))) {
+ ++nicename;
+ if (strlen(nicename) > 0) {
+ pa_log_debug("Found RAOP: %s", nicename);
+ }
+ }
+
for (l = txt; l; l = l->next) {
char *key, *value;
pa_assert_se(avahi_string_list_get_pair(l, &key, &value, NULL) == 0);
@@ -190,10 +197,20 @@ static void resolver_cb(
"sink_name=%s",
avahi_address_snprint(at, sizeof(at), a), port,
vname);*/
- args = pa_sprintf_malloc("server=%s "
- "sink_name=%s",
- avahi_address_snprint(at, sizeof(at), a),
- vname);
+ if (nicename) {
+ args = pa_sprintf_malloc("server=%s "
+ "sink_name=%s "
+ "description=\"%s\"",
+ avahi_address_snprint(at, sizeof(at), a),
+ vname,
+ nicename);
+
+ } else {
+ args = pa_sprintf_malloc("server=%s "
+ "sink_name=%s",
+ avahi_address_snprint(at, sizeof(at), a),
+ vname);
+ }
pa_log_debug("Loading module-raop-sink with arguments '%s'", args);
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index da338f5..88fc6f1 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -72,6 +72,7 @@ PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
+ "description=<description for the sink> "
"server=<address> "
"format=<sample format> "
"channels=<number of channels> "
@@ -122,6 +123,7 @@ static const char* const valid_modargs[] = {
"format",
"channels",
"sink_name",
+ "description",
NULL
};
@@ -502,7 +504,7 @@ int pa__init(pa_module*m) {
struct userdata *u = NULL;
pa_sample_spec ss;
pa_modargs *ma = NULL;
- const char *server;
+ const char *server, *desc;
pa_sink_new_data data;
pa_assert(m);
@@ -564,7 +566,10 @@ int pa__init(pa_module*m) {
pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, server);
- pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
+ if ((desc = pa_modargs_get_value(ma, "description", NULL)))
+ pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, desc);
+ else
+ pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
pa_sink_new_data_done(&data);
commit b75a4b437a6527c2506a9e19fb9025b2841f90df
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Sun Mar 1 18:11:36 2009 +0000
raop: Log teardown explicitly
diff --git a/src/modules/raop/raop_client.c b/src/modules/raop/raop_client.c
index 4627545..0cc67ae 100644
--- a/src/modules/raop/raop_client.c
+++ b/src/modules/raop/raop_client.c
@@ -339,9 +339,13 @@ static void rtsp_cb(pa_rtsp_client *rtsp, pa_rtsp_state state, pa_headerlist* he
break;
case STATE_TEARDOWN:
+ pa_log_debug("RAOP: TEARDOWN");
+ break;
+
case STATE_SET_PARAMETER:
pa_log_debug("RAOP: SET_PARAMETER");
break;
+
case STATE_DISCONNECTED:
pa_assert(c->closed_callback);
pa_assert(c->rtsp);
commit 8a00c009439d1c559a2992b2f9f67e2708334d5a
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Sun Mar 1 23:17:07 2009 +0000
raop: Handle the reponse header memory allocation more sensibly.
In theory the callback called after reading headers could free our whole object, so we should not
take it upon ourselves to free the headers after the call to the callback.
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index 9eb3d96..3b077be 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -101,26 +101,27 @@ pa_rtsp_client* pa_rtsp_client_new(pa_mainloop_api *mainloop, const char* hostna
void pa_rtsp_client_free(pa_rtsp_client* c) {
- if (c) {
- if (c->sc)
- pa_socket_client_unref(c->sc);
- if (c->ioline)
- pa_ioline_close(c->ioline);
- else if (c->io)
- pa_iochannel_free(c->io);
-
- pa_xfree(c->hostname);
- pa_xfree(c->url);
- pa_xfree(c->localip);
- pa_xfree(c->session);
- pa_xfree(c->transport);
- pa_xfree(c->last_header);
- if (c->header_buffer)
- pa_strbuf_free(c->header_buffer);
- if (c->response_headers)
- pa_headerlist_free(c->response_headers);
- pa_headerlist_free(c->headers);
- }
+ pa_assert(c);
+
+ if (c->sc)
+ pa_socket_client_unref(c->sc);
+ if (c->ioline)
+ pa_ioline_close(c->ioline);
+ else if (c->io)
+ pa_iochannel_free(c->io);
+
+ pa_xfree(c->hostname);
+ pa_xfree(c->url);
+ pa_xfree(c->localip);
+ pa_xfree(c->session);
+ pa_xfree(c->transport);
+ pa_xfree(c->last_header);
+ if (c->header_buffer)
+ pa_strbuf_free(c->header_buffer);
+ if (c->response_headers)
+ pa_headerlist_free(c->response_headers);
+ pa_headerlist_free(c->headers);
+
pa_xfree(c);
}
@@ -141,8 +142,6 @@ static void headers_read(pa_rtsp_client *c) {
c->transport = pa_xstrdup(pa_headerlist_gets(c->response_headers, "Transport"));
if (!c->session || !c->transport) {
- pa_headerlist_free(c->response_headers);
- c->response_headers = NULL;
pa_log("Invalid SETUP response.");
return;
}
@@ -160,8 +159,6 @@ static void headers_read(pa_rtsp_client *c) {
}
if (0 == c->rtp_port) {
/* Error no server_port in response */
- pa_headerlist_free(c->response_headers);
- c->response_headers = NULL;
pa_log("Invalid SETUP response (no port number).");
return;
}
@@ -169,9 +166,6 @@ static void headers_read(pa_rtsp_client *c) {
/* Call our callback */
c->callback(c, c->state, c->response_headers, c->userdata);
-
- pa_headerlist_free(c->response_headers);
- c->response_headers = NULL;
}
@@ -201,7 +195,8 @@ static void line_callback(pa_ioline *line, const char *s, void *userdata) {
}
if (c->waiting && 0 == strcmp("RTSP/1.0 200 OK", s2)) {
c->waiting = 0;
- pa_assert(!c->response_headers);
+ if (c->response_headers)
+ pa_headerlist_free(c->response_headers);
c->response_headers = pa_headerlist_new();
goto exit;
}
@@ -353,9 +348,12 @@ void pa_rtsp_set_callback(pa_rtsp_client *c, pa_rtsp_cb_t callback, void *userda
void pa_rtsp_disconnect(pa_rtsp_client *c) {
pa_assert(c);
- if (c->io)
+ if (c->ioline)
+ pa_ioline_close(c->ioline);
+ else if (c->io)
pa_iochannel_free(c->io);
c->io = NULL;
+ c->ioline = NULL;
}
commit 5c514aaacc5f90a7bf9a3536ef5d3aefaad1c55c
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:06:23 2009 +0100
make dependency on udev versioned
diff --git a/configure.ac b/configure.ac
index b213129..77d777d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -990,7 +990,7 @@ AC_ARG_ENABLE([udev],
],
[udev=auto])
if test "x${udev}" != xno -a \( "x$HAVE_OSS" = "x1" -o "x$HAVE_ALSA" = "x1" \) ; then
- PKG_CHECK_MODULES(UDEV, [ libudev ],
+ PKG_CHECK_MODULES(UDEV, [ libudev >= 137 ],
[
HAVE_UDEV=1
AC_DEFINE([HAVE_UDEV], 1, [Have UDEV.])
commit 77514c1c4cfd4154371fb7b745772a02c5932ec2
Merge: 5c514aa... 8a00c00...
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:08:11 2009 +0100
Merge commit 'coling/master'
commit c08317772b9478039b2837f4fe02f9dda4231241
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Mon Mar 2 13:11:29 2009 +0000
Use pa_assert_se() when the containing code has side effects.
As reported by rantala. Closes #502 and #503
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 6ed4f14..6e4e927 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -487,7 +487,7 @@ static void sink_input_kill_cb(pa_sink_input *i) {
struct output *o;
pa_sink_input_assert_ref(i);
- pa_assert(o = i->userdata);
+ pa_assert_se(o = i->userdata);
pa_module_unload_request(o->userdata->module, TRUE);
output_free(o);
diff --git a/src/modules/module-jack-source.c b/src/modules/module-jack-source.c
index 38b6375..373d56e 100644
--- a/src/modules/module-jack-source.c
+++ b/src/modules/module-jack-source.c
@@ -163,7 +163,7 @@ static int jack_process(jack_nframes_t nframes, void *arg) {
pa_assert(u);
for (c = 0; c < u->channels; c++)
- pa_assert(buffer[c] = jack_port_get_buffer(u->port[c], nframes));
+ pa_assert_se(buffer[c] = jack_port_get_buffer(u->port[c], nframes));
/* We interleave the data and pass it on to the other RT thread */
commit ea1d429c3b9fd505cf6c2fcecc92e950a1d47f35
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:28:26 2009 +0100
add update-shave target
diff --git a/Makefile.am b/Makefile.am
index 8735d31..9a3ca7b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -61,6 +61,12 @@ dist-hook:
( git-changelog.perl || echo "git-changelog.perl failed." ) > ${distdir}/ChangeLog 2>&1 ; \
fi
+update-shave:
+ for i in shave.in shave.m4 shave-libtool.in; do \
+ wget -O $$i http://git.lespiau.name/cgit/shave/blob/\?path=shave/$$i ; \
+ done
+ mv shave.m4 m4/
+
.PHONY: homepage distcleancheck doxygen
DISTCLEANFILES = \
commit 4e86a4c7599fea5f2104e1f56d87b5d373ccd304
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:28:43 2009 +0100
run make update-shave
diff --git a/m4/shave.m4 b/m4/shave.m4
index 44d3908..0c2c9f5 100644
--- a/m4/shave.m4
+++ b/m4/shave.m4
@@ -1,9 +1,12 @@
dnl Make automake/libtool output more friendly to humans
dnl
-dnl SHAVE_INIT([shavedir])
+dnl SHAVE_INIT([shavedir],[default_mode])
dnl
dnl shavedir: the directory where the shave scripts are, it defaults to
dnl $(top_builddir)
+dnl default_mode: (enable|disable) default shave mode. This parameter
+dnl controls shave's behaviour when no option has been
+dnl given to configure. It defaults to disable.
dnl
dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
dnl before AC_CONFIG_FILE/AC_OUTPUT is perfect. This macro rewrites CC and
@@ -11,19 +14,26 @@ dnl LIBTOOL, you don't want the configure tests to have these variables
dnl re-defined.
dnl * This macro requires GNU make's -s option.
-AC_DEFUN([SHAVE_INIT],
+AC_DEFUN([_SHAVE_ARG_ENABLE],
[
- dnl enable/disable shave
AC_ARG_ENABLE([shave],
- AS_HELP_STRING([--enable-shave],
- [use shave to make the build pretty [[default=no]]]),,
- [enable_shave=no])
+ AS_HELP_STRING(
+ [--enable-shave],
+ [use shave to make the build pretty [[default=$1]]]),,
+ [enable_shave=$1]
+ )
+])
+
+AC_DEFUN([SHAVE_INIT],
+[
+ dnl you can tweak the default value of enable_shave
+ m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
if test x"$enable_shave" = xyes; then
dnl where can we find the shave scripts?
m4_if([$1],,
- [shavedir='$(top_builddir)'],
- [shavedir='$(top_builddir)'/$1])
+ [shavedir="$ac_pwd"],
+ [shavedir="$ac_pwd/$1"])
AC_SUBST(shavedir)
dnl make is now quiet
@@ -35,19 +45,22 @@ AC_DEFUN([SHAVE_INIT],
dnl substitute libtool
SHAVE_SAVED_LIBTOOL=$LIBTOOL
- AC_SUBST(SHAVE_SAVED_LIBTOOL)
- LIBTOOL="\$(SHELL) \$(shavedir)/shave-libtool '\$(SHAVE_SAVED_LIBTOOL)'"
+ LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'"
AC_SUBST(LIBTOOL)
dnl substitute cc/cxx
SHAVE_SAVED_CC=$CC
SHAVE_SAVED_CXX=$CXX
- AC_SUBST(SHAVE_SAVED_CC)
- AC_SUBST(SHAVE_SAVED_CXX)
- CC="\$(SHELL) \$(shavedir)/shave cc '\$(SHAVE_SAVED_CC)'"
- CXX="\$(SHELL) \$(shavedir)/shave cxx '\$(SHAVE_SAVED_CXX)'"
+ SHAVE_SAVED_FC=$FC
+ SHAVE_SAVED_F77=$F77
+ CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
+ CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
+ FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
+ F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
AC_SUBST(CC)
AC_SUBST(CXX)
+ AC_SUBST(FC)
+ AC_SUBST(F77)
V=@
else
@@ -58,12 +71,3 @@ AC_DEFUN([SHAVE_INIT],
AC_SUBST(Q)
])
-AC_DEFUN([SHAVE_OUTPUT],
-[
- if test x"$enable_shave" = xyes; then
- dnl small workaround to fix libtool itself
- dnl it's shokingly hard to find a better way, really! wtf...
- test -f $srcdir/libtool && (tmpfile=`mktemp` && cat $srcdir/libtool | sed "s,^LTCC=.*$,LTCC=\"$SHELL $ac_pwd/shave cc $SHAVE_SAVED_CC\"," > $tmpfile && mv $tmpfile $srcdir/libtool)
- fi
-
-])
diff --git a/shave-libtool.in b/shave-libtool.in
index 30e6f13..1f3a720 100644
--- a/shave-libtool.in
+++ b/shave-libtool.in
@@ -8,7 +8,7 @@ fi
lt_unmangle ()
{
- last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_]\*_la-##'`
+ last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
}
# the real libtool to use
diff --git a/shave.in b/shave.in
index dc46ec9..174641e 100644
--- a/shave.in
+++ b/shave.in
@@ -8,7 +8,7 @@ fi
lt_unmangle ()
{
- last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_]\*_la-##'`
+ last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
}
# the tool to wrap (cc, cxx, ar, ranlib, ..)
@@ -50,6 +50,12 @@ link,*)
*,cc)
Q=" CC "
;;
+*,fc)
+ Q=" FC "
+ ;;
+*,f77)
+ Q=" F77 "
+ ;;
*,*)
# should not happen
Q=" CC "
commit e43524129014d14ffb1d1db1810bf2a2110a06e1
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:31:52 2009 +0100
run update-reserve
diff --git a/src/modules/reserve.h b/src/modules/reserve.h
index ceb1ad1..b315a08 100644
--- a/src/modules/reserve.h
+++ b/src/modules/reserve.h
@@ -31,10 +31,11 @@
typedef struct rd_device rd_device;
/* Prototype for a function that is called whenever someone else wants
- * your app to release the device you having locked. A return value <=
- * 0 denies the request, a positive return value agrees to it. Before
- * returning your application should close the device in question
- * completely to make sure the new application may acceess it. */
+ * your application to release the device it has locked. A return
+ * value <= 0 denies the request, a positive return value agrees to
+ * it. Before returning your application should close the device in
+ * question completely to make sure the new application may access
+ * it. */
typedef int (*rd_request_cb_t)(
rd_device *d,
int forced); /* Non-zero if an application forcibly took the lock away without asking. If this is the case then the return value of this call is ignored. */
@@ -48,20 +49,20 @@ int rd_acquire(
const char *device_name, /* The device to lock, e.g. "Audio0" */
const char *application_name, /* A human readable name of the application, e.g. "PulseAudio Sound Server" */
int32_t priority, /* The priority for this application. If unsure use 0 */
- rd_request_cb_t request_cb, /* Will be called whenever someone asks that this device shall be released. May be NULL if priority is INT32_MAX */
+ rd_request_cb_t request_cb, /* Will be called whenever someone requests that this device shall be released. May be NULL if priority is INT32_MAX */
DBusError *error); /* If we fail due to a D-Bus related issue the error will be filled in here. May be NULL. */
-/* Unlock (if needed) and destroy a rd_device object again */
+/* Unlock (if needed) and destroy an rd_device object again */
void rd_release(rd_device *d);
-/* Set the application device name for a rd_device object Returns 0 on
- * success, a negative errno style return value on error. */
+/* Set the application device name for an rd_device object. Returns 0
+ * on success, a negative errno style return value on error. */
int rd_set_application_device_name(rd_device *d, const char *name);
-/* Attach a userdata pointer to a rd_device */
+/* Attach a userdata pointer to an rd_device */
void rd_set_userdata(rd_device *d, void *userdata);
-/* Query the userdata pointer from a rd_device. Returns NULL if no
+/* Query the userdata pointer from an rd_device. Returns NULL if no
* userdata was set. */
void* rd_get_userdata(rd_device *d);
commit 505df22addf6d449f2c46614ebf2f7e42d12dbdd
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:32:36 2009 +0100
run make update-sbc
diff --git a/src/modules/bluetooth/ipc.h b/src/modules/bluetooth/ipc.h
index 4203150..f030acf 100644
--- a/src/modules/bluetooth/ipc.h
+++ b/src/modules/bluetooth/ipc.h
@@ -160,7 +160,8 @@ struct bt_get_capabilities_req {
#define BT_HFP_CODEC_PCM 0x00
-#define BT_PCM_FLAG_NREC 1
+#define BT_PCM_FLAG_NREC 0x01
+#define BT_PCM_FLAG_PCM_ROUTING 0x02
typedef struct {
uint8_t transport;
commit 45ae4abe2389355b8b84cb1fa1f46038b22e2f9a
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 14:33:36 2009 +0100
run make update-ffmpeg
diff --git a/src/pulsecore/ffmpeg/resample2.c b/src/pulsecore/ffmpeg/resample2.c
index ed59448..ac9db73 100644
--- a/src/pulsecore/ffmpeg/resample2.c
+++ b/src/pulsecore/ffmpeg/resample2.c
@@ -20,7 +20,7 @@
*/
/**
- * @file resample2.c
+ * @file libavcodec/resample2.c
* audio resampling
* @author Michael Niedermayer <michaelni at gmx.at>
*/
@@ -175,10 +175,6 @@ void av_build_filter(FELEM *filter, double factor, int tap_count, int phase_coun
#endif
}
-/**
- * Initializes an audio resampler.
- * Note, if either rate is not an integer then simply scale both rates up so they are.
- */
AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_size, int phase_shift, int linear, double cutoff){
AVResampleContext *c= av_mallocz(sizeof(AVResampleContext));
double factor= FFMIN(out_rate * cutoff / in_rate, 1.0);
@@ -206,33 +202,12 @@ void av_resample_close(AVResampleContext *c){
av_freep(&c);
}
-/**
- * Compensates samplerate/timestamp drift. The compensation is done by changing
- * the resampler parameters, so no audible clicks or similar distortions occur
- * @param compensation_distance distance in output samples over which the compensation should be performed
- * @param sample_delta number of output samples which should be output less
- *
- * example: av_resample_compensate(c, 10, 500)
- * here instead of 510 samples only 500 samples would be output
- *
- * note, due to rounding the actual compensation might be slightly different,
- * especially if the compensation_distance is large and the in_rate used during init is small
- */
void av_resample_compensate(AVResampleContext *c, int sample_delta, int compensation_distance){
// sample_delta += (c->ideal_dst_incr - c->dst_incr)*(int64_t)c->compensation_distance / c->ideal_dst_incr;
c->compensation_distance= compensation_distance;
c->dst_incr = c->ideal_dst_incr - c->ideal_dst_incr * (int64_t)sample_delta / compensation_distance;
}
-/**
- * resamples.
- * @param src an array of unconsumed samples
- * @param consumed the number of samples of src which have been consumed are returned here
- * @param src_size the number of unconsumed samples available
- * @param dst_size the amount of space in samples available in dst
- * @param update_ctx if this is 0 then the context wont be modified, that way several channels can be resampled with the same context
- * @return the number of samples written in dst or -1 if an error occurred
- */
int av_resample(AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx){
int dst_index, i;
int index= c->index;
commit 7794108d177fd5c7e9485af6061c8188fa31c4e4
Merge: 45ae4ab... c083177...
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 16:28:08 2009 +0100
Merge commit 'coling/master'
commit f8a085f5cfb9388a813773fbfa9598699bd6131c
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Mar 2 18:11:49 2009 +0100
properly handle directed card info requests
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 10b9e7d..a0fdd60 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -2955,7 +2955,6 @@ static void command_get_info(pa_pdispatch *pd, uint32_t command, uint32_t tag, p
if (pa_tagstruct_getu32(t, &idx) < 0 ||
(command != PA_COMMAND_GET_CLIENT_INFO &&
- command != PA_COMMAND_GET_CARD_INFO &&
command != PA_COMMAND_GET_MODULE_INFO &&
command != PA_COMMAND_GET_SINK_INPUT_INFO &&
command != PA_COMMAND_GET_SOURCE_OUTPUT_INFO &&
commit 297515a39eebfbd9e846c9d45bebe3890a39fb02
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Mar 3 00:32:10 2009 +0100
pass profile priority value to clients
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index befeb24..6d6e3a3 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -528,7 +528,8 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u
if (pa_tagstruct_gets(t, &i.profiles[j].name) < 0 ||
pa_tagstruct_gets(t, &i.profiles[j].description) < 0 ||
pa_tagstruct_getu32(t, &i.profiles[j].n_sinks) < 0 ||
- pa_tagstruct_getu32(t, &i.profiles[j].n_sources)< 0) {
+ pa_tagstruct_getu32(t, &i.profiles[j].n_sources) < 0 ||
+ pa_tagstruct_getu32(t, &i.profiles[j].priority) < 0) {
pa_context_fail(o->context, PA_ERR_PROTOCOL);
pa_xfree(i.profiles);
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index aa67e43..60f8d4f 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -401,6 +401,7 @@ typedef struct pa_card_profile_info {
const char *description; /**< Description of this profile */
uint32_t n_sinks; /**< Number of sinks this profile would create */
uint32_t n_sources; /**< Number of sources this profile would create */
+ uint32_t priority; /**< The higher this value is the more useful this profile is as a default */
} pa_card_profile_info;
/** Stores information about cards. Please note that this structure
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index a0fdd60..eec36bc 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -2829,6 +2829,7 @@ static void card_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_car
pa_tagstruct_puts(t, p->description);
pa_tagstruct_putu32(t, p->n_sinks);
pa_tagstruct_putu32(t, p->n_sources);
+ pa_tagstruct_putu32(t, p->priority);
}
}
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index 6524bf9..269dbfa 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -427,7 +427,7 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_
printf(_("\tProfiles:\n"));
for (p = i->profiles; p->name; p++)
- printf("\t\t%s: %s\n", p->name, p->description);
+ printf("\t\t%s: %s (sinks: %u, sources: %u, priority. %u)\n", p->name, p->description, p->n_sinks, p->n_sources, p->priority);
}
if (i->active_profile)
commit 86dee05aec330a0c2886c0327712153793ca46c4
Author: Colin Guthrie <cguthrie at mandriva.org>
Date: Tue Mar 3 20:23:02 2009 +0000
Use LGPL 2.1 on all files previously using LGPL 2
diff --git a/src/daemon/caps.c b/src/daemon/caps.c
index b5cbbc6..d2ae8d0 100644
--- a/src/daemon/caps.c
+++ b/src/daemon/caps.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/caps.h b/src/daemon/caps.h
index 176aa90..94241a9 100644
--- a/src/daemon/caps.h
+++ b/src/daemon/caps.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index f4224ea..d78089e 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/cmdline.h b/src/daemon/cmdline.h
index fd72a6d..e34d7f5 100644
--- a/src/daemon/cmdline.h
+++ b/src/daemon/cmdline.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/cpulimit.c b/src/daemon/cpulimit.c
index 5f24474..64728e2 100644
--- a/src/daemon/cpulimit.c
+++ b/src/daemon/cpulimit.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/cpulimit.h b/src/daemon/cpulimit.h
index cb9a123..ce78d48 100644
--- a/src/daemon/cpulimit.h
+++ b/src/daemon/cpulimit.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index 10144ea..b02377a 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/daemon-conf.h b/src/daemon/daemon-conf.h
index 9331280..787676c 100644
--- a/src/daemon/daemon-conf.h
+++ b/src/daemon/daemon-conf.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/dumpmodules.c b/src/daemon/dumpmodules.c
index 9c9f1c8..0ffc0fc 100644
--- a/src/daemon/dumpmodules.c
+++ b/src/daemon/dumpmodules.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/dumpmodules.h b/src/daemon/dumpmodules.h
index c49a5ed..c3595e5 100644
--- a/src/daemon/dumpmodules.h
+++ b/src/daemon/dumpmodules.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/ltdl-bind-now.c b/src/daemon/ltdl-bind-now.c
index 8444cfb..276b2a0 100644
--- a/src/daemon/ltdl-bind-now.c
+++ b/src/daemon/ltdl-bind-now.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/ltdl-bind-now.h b/src/daemon/ltdl-bind-now.h
index f95d13b..0760070 100644
--- a/src/daemon/ltdl-bind-now.h
+++ b/src/daemon/ltdl-bind-now.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/main.c b/src/daemon/main.c
index b630bd1..46a279d 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/polkit.c b/src/daemon/polkit.c
index 921e5d1..9799e09 100644
--- a/src/daemon/polkit.c
+++ b/src/daemon/polkit.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/daemon/polkit.h b/src/daemon/polkit.h
index 0d65ec5..018f6ef 100644
--- a/src/daemon/polkit.h
+++ b/src/daemon/polkit.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index d432588..c8e12f9 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/alsa-sink.h b/src/modules/alsa/alsa-sink.h
index 47ece9e..bbf6423 100644
--- a/src/modules/alsa/alsa-sink.h
+++ b/src/modules/alsa/alsa-sink.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 7a1b0f8..ed9388e 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/alsa-source.h b/src/modules/alsa/alsa-source.h
index 5fed6cc..9cbb0e1 100644
--- a/src/modules/alsa/alsa-source.h
+++ b/src/modules/alsa/alsa-source.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 7d833ff..454cfd4 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index a8397ae..fe0f71e 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 9e149a4..22f0ae0 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/module-alsa-sink.c b/src/modules/alsa/module-alsa-sink.c
index 4f844e0..c728a44 100644
--- a/src/modules/alsa/module-alsa-sink.c
+++ b/src/modules/alsa/module-alsa-sink.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/alsa/module-alsa-source.c b/src/modules/alsa/module-alsa-source.c
index c35936d..6188019 100644
--- a/src/modules/alsa/module-alsa-source.c
+++ b/src/modules/alsa/module-alsa-source.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 6b52220..dfd3a30 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h
index 2c3ec64..0364c97 100644
--- a/src/modules/bluetooth/bluetooth-util.h
+++ b/src/modules/bluetooth/bluetooth-util.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 3332df2..72cf208 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c
index e974074..521a912 100644
--- a/src/modules/bluetooth/module-bluetooth-discover.c
+++ b/src/modules/bluetooth/module-bluetooth-discover.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/bluetooth/module-bluetooth-proximity.c b/src/modules/bluetooth/module-bluetooth-proximity.c
index f30d39f..a3b525e 100644
--- a/src/modules/bluetooth/module-bluetooth-proximity.c
+++ b/src/modules/bluetooth/module-bluetooth-proximity.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/dbus-util.c b/src/modules/dbus-util.c
index 4218bca..d51befb 100644
--- a/src/modules/dbus-util.c
+++ b/src/modules/dbus-util.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/dbus-util.h b/src/modules/dbus-util.h
index fd97467..90abbc7 100644
--- a/src/modules/dbus-util.h
+++ b/src/modules/dbus-util.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/gconf/gconf-helper.c b/src/modules/gconf/gconf-helper.c
index f5016fa..fbd8cfd 100644
--- a/src/modules/gconf/gconf-helper.c
+++ b/src/modules/gconf/gconf-helper.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/gconf/module-gconf.c b/src/modules/gconf/module-gconf.c
index 845ede5..c01ebbf 100644
--- a/src/modules/gconf/module-gconf.c
+++ b/src/modules/gconf/module-gconf.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/hal-util.c b/src/modules/hal-util.c
index 6959a70..422ae4e 100644
--- a/src/modules/hal-util.c
+++ b/src/modules/hal-util.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/hal-util.h b/src/modules/hal-util.h
index 3c0e094..19e41d7 100644
--- a/src/modules/hal-util.h
+++ b/src/modules/hal-util.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-always-sink.c b/src/modules/module-always-sink.c
index 591695f..aee1c65 100644
--- a/src/modules/module-always-sink.c
+++ b/src/modules/module-always-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-augment-properties.c b/src/modules/module-augment-properties.c
index 9911186..c3e5997 100644
--- a/src/modules/module-augment-properties.c
+++ b/src/modules/module-augment-properties.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-card-restore.c b/src/modules/module-card-restore.c
index c769605..0afb935 100644
--- a/src/modules/module-card-restore.c
+++ b/src/modules/module-card-restore.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-cli.c b/src/modules/module-cli.c
index 439aa8b..fd9452b 100644
--- a/src/modules/module-cli.c
+++ b/src/modules/module-cli.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 6e4e927..4b2d6f9 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index 805f5ee..3fba7ef 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-cork-music-on-phone.c b/src/modules/module-cork-music-on-phone.c
index fb90cf3..c0f5eea 100644
--- a/src/modules/module-cork-music-on-phone.c
+++ b/src/modules/module-cork-music-on-phone.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-default-device-restore.c b/src/modules/module-default-device-restore.c
index d299f40..a25aafc 100644
--- a/src/modules/module-default-device-restore.c
+++ b/src/modules/module-default-device-restore.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-detect.c b/src/modules/module-detect.c
index 773e1d8..49127ab 100644
--- a/src/modules/module-detect.c
+++ b/src/modules/module-detect.c
@@ -7,7 +7,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c
index e6a4881..0ca3dd8 100644
--- a/src/modules/module-device-restore.c
+++ b/src/modules/module-device-restore.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-esound-compat-spawnfd.c b/src/modules/module-esound-compat-spawnfd.c
index 578ad3b..56cda4d 100644
--- a/src/modules/module-esound-compat-spawnfd.c
+++ b/src/modules/module-esound-compat-spawnfd.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-esound-compat-spawnpid.c b/src/modules/module-esound-compat-spawnpid.c
index 882dba8..5925f59 100644
--- a/src/modules/module-esound-compat-spawnpid.c
+++ b/src/modules/module-esound-compat-spawnpid.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-esound-sink.c b/src/modules/module-esound-sink.c
index 552cf75..2b45e30 100644
--- a/src/modules/module-esound-sink.c
+++ b/src/modules/module-esound-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index ce04f36..fe60110 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-jack-sink.c b/src/modules/module-jack-sink.c
index 1739f46..63fdd2d 100644
--- a/src/modules/module-jack-sink.c
+++ b/src/modules/module-jack-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-jack-source.c b/src/modules/module-jack-source.c
index 373d56e..c77c958 100644
--- a/src/modules/module-jack-source.c
+++ b/src/modules/module-jack-source.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index a4007b1..33562b1 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index 9a782ca..bdb8bb7 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-match.c b/src/modules/module-match.c
index 1793611..d7365ca 100644
--- a/src/modules/module-match.c
+++ b/src/modules/module-match.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c
index a379923..2f87dd2 100644
--- a/src/modules/module-mmkbd-evdev.c
+++ b/src/modules/module-mmkbd-evdev.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-native-protocol-fd.c b/src/modules/module-native-protocol-fd.c
index f17f435..eed0505 100644
--- a/src/modules/module-native-protocol-fd.c
+++ b/src/modules/module-native-protocol-fd.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index e18da5f..183d4b2 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index f3b0e8b..def4f75 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index a42c53c..3d40fdf 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-position-event-sounds.c b/src/modules/module-position-event-sounds.c
index 6252eba..e191ec3 100644
--- a/src/modules/module-position-event-sounds.c
+++ b/src/modules/module-position-event-sounds.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-protocol-stub.c b/src/modules/module-protocol-stub.c
index ca9274d..ce3dcd0 100644
--- a/src/modules/module-protocol-stub.c
+++ b/src/modules/module-protocol-stub.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-raop-discover.c b/src/modules/module-raop-discover.c
index 7df549e..5c2e062 100644
--- a/src/modules/module-raop-discover.c
+++ b/src/modules/module-raop-discover.c
@@ -6,7 +6,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index 88fc6f1..00f0c63 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 89ddf95..31824bc 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
index e52e39c..4f616e0 100644
--- a/src/modules/module-rescue-streams.c
+++ b/src/modules/module-rescue-streams.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-sine-source.c b/src/modules/module-sine-source.c
index 5626c2a..206c45f 100644
--- a/src/modules/module-sine-source.c
+++ b/src/modules/module-sine-source.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-sine.c b/src/modules/module-sine.c
index ce08c01..0be1d72 100644
--- a/src/modules/module-sine.c
+++ b/src/modules/module-sine.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 6f50543..738115c 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index d935caf..723b5d7 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index a5a3571..945fd09 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index 63ae740..c148884 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-volume-restore.c b/src/modules/module-volume-restore.c
index 21c7149..61858af 100644
--- a/src/modules/module-volume-restore.c
+++ b/src/modules/module-volume-restore.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-waveout.c b/src/modules/module-waveout.c
index b452c3b..2d35828 100644
--- a/src/modules/module-waveout.c
+++ b/src/modules/module-waveout.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-x11-bell.c b/src/modules/module-x11-bell.c
index bef0253..ac303c3 100644
--- a/src/modules/module-x11-bell.c
+++ b/src/modules/module-x11-bell.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-x11-cork-request.c b/src/modules/module-x11-cork-request.c
index 0c9aedf..c1380c2 100644
--- a/src/modules/module-x11-cork-request.c
+++ b/src/modules/module-x11-cork-request.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-x11-publish.c b/src/modules/module-x11-publish.c
index fb27eba..7d71067 100644
--- a/src/modules/module-x11-publish.c
+++ b/src/modules/module-x11-publish.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-x11-xsmp.c b/src/modules/module-x11-xsmp.c
index 5fc8047..28fd373 100644
--- a/src/modules/module-x11-xsmp.c
+++ b/src/modules/module-x11-xsmp.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-zeroconf-discover.c b/src/modules/module-zeroconf-discover.c
index 5123ead..3da946e 100644
--- a/src/modules/module-zeroconf-discover.c
+++ b/src/modules/module-zeroconf-discover.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/module-zeroconf-publish.c b/src/modules/module-zeroconf-publish.c
index 985564f..692ffe9 100644
--- a/src/modules/module-zeroconf-publish.c
+++ b/src/modules/module-zeroconf-publish.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index 54d1679..7bce8d0 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/oss/oss-util.c b/src/modules/oss/oss-util.c
index f04b875..5a109ae 100644
--- a/src/modules/oss/oss-util.c
+++ b/src/modules/oss/oss-util.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/oss/oss-util.h b/src/modules/oss/oss-util.h
index 654f7bb..845b0c8 100644
--- a/src/modules/oss/oss-util.h
+++ b/src/modules/oss/oss-util.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/raop/base64.c b/src/modules/raop/base64.c
index 059c702..e1cbed0 100644
--- a/src/modules/raop/base64.c
+++ b/src/modules/raop/base64.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/raop/base64.h b/src/modules/raop/base64.h
index dac0e70..7a973b6 100644
--- a/src/modules/raop/base64.h
+++ b/src/modules/raop/base64.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/raop/raop_client.c b/src/modules/raop/raop_client.c
index 0cc67ae..8e59a57 100644
--- a/src/modules/raop/raop_client.c
+++ b/src/modules/raop/raop_client.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/raop/raop_client.h b/src/modules/raop/raop_client.h
index ec3136a..5ad3e3f 100644
--- a/src/modules/raop/raop_client.h
+++ b/src/modules/raop/raop_client.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c
index 709cb06..7d33927 100644
--- a/src/modules/reserve-wrap.c
+++ b/src/modules/reserve-wrap.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/reserve-wrap.h b/src/modules/reserve-wrap.h
index 4625fe6..2b97c91 100644
--- a/src/modules/reserve-wrap.h
+++ b/src/modules/reserve-wrap.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c
index 0d86459..33e23af 100644
--- a/src/modules/rtp/module-rtp-recv.c
+++ b/src/modules/rtp/module-rtp-recv.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/module-rtp-send.c b/src/modules/rtp/module-rtp-send.c
index fef745a..722d12b 100644
--- a/src/modules/rtp/module-rtp-send.c
+++ b/src/modules/rtp/module-rtp-send.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/rtp.c b/src/modules/rtp/rtp.c
index c09c321..7537c1f 100644
--- a/src/modules/rtp/rtp.c
+++ b/src/modules/rtp/rtp.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/rtp.h b/src/modules/rtp/rtp.h
index a2728f0..eff5e75 100644
--- a/src/modules/rtp/rtp.h
+++ b/src/modules/rtp/rtp.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index 3b077be..b0b8a1e 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/rtsp_client.h b/src/modules/rtp/rtsp_client.h
index 88fb383..b229f26 100644
--- a/src/modules/rtp/rtsp_client.h
+++ b/src/modules/rtp/rtsp_client.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/sap.c b/src/modules/rtp/sap.c
index b5d9df6..adde16d 100644
--- a/src/modules/rtp/sap.c
+++ b/src/modules/rtp/sap.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/sap.h b/src/modules/rtp/sap.h
index 69c757c..ae4ad42 100644
--- a/src/modules/rtp/sap.h
+++ b/src/modules/rtp/sap.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/sdp.c b/src/modules/rtp/sdp.c
index 7c54743..7fc7e38 100644
--- a/src/modules/rtp/sdp.c
+++ b/src/modules/rtp/sdp.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/rtp/sdp.h b/src/modules/rtp/sdp.h
index 933a602..4cb3b20 100644
--- a/src/modules/rtp/sdp.h
+++ b/src/modules/rtp/sdp.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/udev-util.c b/src/modules/udev-util.c
index a72bc8f..8ffb76a 100644
--- a/src/modules/udev-util.c
+++ b/src/modules/udev-util.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/modules/udev-util.h b/src/modules/udev-util.h
index 86fbba7..5120abd 100644
--- a/src/modules/udev-util.h
+++ b/src/modules/udev-util.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/browser.c b/src/pulse/browser.c
index 1a3f657..4cf5d0c 100644
--- a/src/pulse/browser.c
+++ b/src/pulse/browser.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/browser.h b/src/pulse/browser.h
index 499fae2..c843e2a 100644
--- a/src/pulse/browser.h
+++ b/src/pulse/browser.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/cdecl.h b/src/pulse/cdecl.h
index 8c5b2d0..dd0d14f 100644
--- a/src/pulse/cdecl.h
+++ b/src/pulse/cdecl.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index 82e36c0..ce7dadc 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index a6d37d8..eef0ac1 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/client-conf-x11.c b/src/pulse/client-conf-x11.c
index a8a90fb..3bec742 100644
--- a/src/pulse/client-conf-x11.c
+++ b/src/pulse/client-conf-x11.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/client-conf-x11.h b/src/pulse/client-conf-x11.h
index f2f40e0..dca9f0d 100644
--- a/src/pulse/client-conf-x11.h
+++ b/src/pulse/client-conf-x11.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c
index 71f8443..58bc3f9 100644
--- a/src/pulse/client-conf.c
+++ b/src/pulse/client-conf.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/client-conf.h b/src/pulse/client-conf.h
index 4eac467..78844a1 100644
--- a/src/pulse/client-conf.h
+++ b/src/pulse/client-conf.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 62fe535..1284153 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/context.h b/src/pulse/context.h
index 2ae4c01..c32cf44 100644
--- a/src/pulse/context.h
+++ b/src/pulse/context.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/error.c b/src/pulse/error.c
index d37084b..3f2e70e 100644
--- a/src/pulse/error.c
+++ b/src/pulse/error.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/error.h b/src/pulse/error.h
index c30b80b..ea53560 100644
--- a/src/pulse/error.h
+++ b/src/pulse/error.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/ext-stream-restore.c b/src/pulse/ext-stream-restore.c
index 469c822..809c6a4 100644
--- a/src/pulse/ext-stream-restore.c
+++ b/src/pulse/ext-stream-restore.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/ext-stream-restore.h b/src/pulse/ext-stream-restore.h
index cf9f4cc..0b5d8eb 100644
--- a/src/pulse/ext-stream-restore.h
+++ b/src/pulse/ext-stream-restore.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/gccmacro.h b/src/pulse/gccmacro.h
index 58188ee..e85ecb6 100644
--- a/src/pulse/gccmacro.h
+++ b/src/pulse/gccmacro.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/glib-mainloop.c b/src/pulse/glib-mainloop.c
index 5f5dc49..6afb7a2 100644
--- a/src/pulse/glib-mainloop.c
+++ b/src/pulse/glib-mainloop.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/glib-mainloop.h b/src/pulse/glib-mainloop.h
index fd68f8a..189513a 100644
--- a/src/pulse/glib-mainloop.h
+++ b/src/pulse/glib-mainloop.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/internal.h b/src/pulse/internal.h
index e533625..9646d8a 100644
--- a/src/pulse/internal.h
+++ b/src/pulse/internal.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index befeb24..076a8d7 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index aa67e43..9dd8925 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/mainloop-signal.c b/src/pulse/mainloop-signal.c
index d09f4b0..52f11c8 100644
--- a/src/pulse/mainloop-signal.c
+++ b/src/pulse/mainloop-signal.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/mainloop-signal.h b/src/pulse/mainloop-signal.h
index a9e250b..fdb1f9d 100644
--- a/src/pulse/mainloop-signal.h
+++ b/src/pulse/mainloop-signal.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/mainloop.c b/src/pulse/mainloop.c
index 60e5d1f..225fd09 100644
--- a/src/pulse/mainloop.c
+++ b/src/pulse/mainloop.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/mainloop.h b/src/pulse/mainloop.h
index 907e94a..3a03ac9 100644
--- a/src/pulse/mainloop.h
+++ b/src/pulse/mainloop.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/operation.c b/src/pulse/operation.c
index aa2bbc0..fe160a3 100644
--- a/src/pulse/operation.c
+++ b/src/pulse/operation.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/operation.h b/src/pulse/operation.h
index b68e781..7b0dabd 100644
--- a/src/pulse/operation.h
+++ b/src/pulse/operation.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/sample.c b/src/pulse/sample.c
index 4b13a33..1e67b03 100644
--- a/src/pulse/sample.c
+++ b/src/pulse/sample.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/sample.h b/src/pulse/sample.h
index 3c05b54..aef34b6 100644
--- a/src/pulse/sample.h
+++ b/src/pulse/sample.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/scache.c b/src/pulse/scache.c
index a7e3cd8..77f60d7 100644
--- a/src/pulse/scache.c
+++ b/src/pulse/scache.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/scache.h b/src/pulse/scache.h
index 79fcfbc..cd579d2 100644
--- a/src/pulse/scache.h
+++ b/src/pulse/scache.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/simple.c b/src/pulse/simple.c
index 79e39eb..e70b7b1 100644
--- a/src/pulse/simple.c
+++ b/src/pulse/simple.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/simple.h b/src/pulse/simple.h
index 3f57a65..6f1ba41 100644
--- a/src/pulse/simple.h
+++ b/src/pulse/simple.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index b36bf9b..2455fe7 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/stream.h b/src/pulse/stream.h
index 3965e9a..e80bc65 100644
--- a/src/pulse/stream.h
+++ b/src/pulse/stream.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/subscribe.c b/src/pulse/subscribe.c
index e12d144..203bc92 100644
--- a/src/pulse/subscribe.c
+++ b/src/pulse/subscribe.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/subscribe.h b/src/pulse/subscribe.h
index 2707cec..a93510a 100644
--- a/src/pulse/subscribe.h
+++ b/src/pulse/subscribe.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/thread-mainloop.c b/src/pulse/thread-mainloop.c
index fb73ff1..c77cc64 100644
--- a/src/pulse/thread-mainloop.c
+++ b/src/pulse/thread-mainloop.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/thread-mainloop.h b/src/pulse/thread-mainloop.h
index f0b1a84..8eddce4 100644
--- a/src/pulse/thread-mainloop.h
+++ b/src/pulse/thread-mainloop.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 54838e8..c865058 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 8bfd068..c3c396c 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/xmalloc.c b/src/pulse/xmalloc.c
index c570e40..e17a354 100644
--- a/src/pulse/xmalloc.c
+++ b/src/pulse/xmalloc.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulse/xmalloc.h b/src/pulse/xmalloc.h
index c30d4df..db20496 100644
--- a/src/pulse/xmalloc.h
+++ b/src/pulse/xmalloc.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/atomic.h b/src/pulsecore/atomic.h
index 6e33a0e..119c445 100644
--- a/src/pulsecore/atomic.h
+++ b/src/pulsecore/atomic.h
@@ -9,7 +9,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/auth-cookie.c b/src/pulsecore/auth-cookie.c
index 68b0147..2f45eca 100644
--- a/src/pulsecore/auth-cookie.c
+++ b/src/pulsecore/auth-cookie.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/auth-cookie.h b/src/pulsecore/auth-cookie.h
index c08cbd8..3db40bc 100644
--- a/src/pulsecore/auth-cookie.h
+++ b/src/pulsecore/auth-cookie.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/avahi-wrap.c b/src/pulsecore/avahi-wrap.c
index d5f40d8..56d9d3d 100644
--- a/src/pulsecore/avahi-wrap.c
+++ b/src/pulsecore/avahi-wrap.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/avahi-wrap.h b/src/pulsecore/avahi-wrap.h
index 7d8995b..5a0c2ef 100644
--- a/src/pulsecore/avahi-wrap.h
+++ b/src/pulsecore/avahi-wrap.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/bitset.c b/src/pulsecore/bitset.c
index 4beeb1c..4b62fc4 100644
--- a/src/pulsecore/bitset.c
+++ b/src/pulsecore/bitset.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/bitset.h b/src/pulsecore/bitset.h
index 95f5cfc..a86a15e 100644
--- a/src/pulsecore/bitset.h
+++ b/src/pulsecore/bitset.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c
index 94064c7..6419c23 100644
--- a/src/pulsecore/card.c
+++ b/src/pulsecore/card.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h
index b179831..c80d4e2 100644
--- a/src/pulsecore/card.h
+++ b/src/pulsecore/card.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 4ce87d6..334d05d 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/cli-command.h b/src/pulsecore/cli-command.h
index 9bf35dc..8c33ec0 100644
--- a/src/pulsecore/cli-command.h
+++ b/src/pulsecore/cli-command.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index 8ca8f2d..76adc4d 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/cli-text.h b/src/pulsecore/cli-text.h
index aad5164..a5dd10e 100644
--- a/src/pulsecore/cli-text.h
+++ b/src/pulsecore/cli-text.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/cli.c b/src/pulsecore/cli.c
index 25a4f74..a784f58 100644
--- a/src/pulsecore/cli.c
+++ b/src/pulsecore/cli.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/cli.h b/src/pulsecore/cli.h
index d860461..ebab6c2 100644
--- a/src/pulsecore/cli.h
+++ b/src/pulsecore/cli.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/client.c b/src/pulsecore/client.c
index e6e8b52..c956b10 100644
--- a/src/pulsecore/client.c
+++ b/src/pulsecore/client.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/client.h b/src/pulsecore/client.h
index 845a8ba..18b62da 100644
--- a/src/pulsecore/client.h
+++ b/src/pulsecore/client.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/conf-parser.c b/src/pulsecore/conf-parser.c
index 1d98f36..a6eb581 100644
--- a/src/pulsecore/conf-parser.c
+++ b/src/pulsecore/conf-parser.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/conf-parser.h b/src/pulsecore/conf-parser.h
index f8f059f..08e17ca 100644
--- a/src/pulsecore/conf-parser.h
+++ b/src/pulsecore/conf-parser.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core-error.c b/src/pulsecore/core-error.c
index d9caa94..c440806 100644
--- a/src/pulsecore/core-error.c
+++ b/src/pulsecore/core-error.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core-error.h b/src/pulsecore/core-error.h
index b0c306c..e7bc4fc 100644
--- a/src/pulsecore/core-error.h
+++ b/src/pulsecore/core-error.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core-scache.c b/src/pulsecore/core-scache.c
index e548941..34d60a8 100644
--- a/src/pulsecore/core-scache.c
+++ b/src/pulsecore/core-scache.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core-scache.h b/src/pulsecore/core-scache.h
index 1fe3c30..fdfc775 100644
--- a/src/pulsecore/core-scache.h
+++ b/src/pulsecore/core-scache.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core-subscribe.c b/src/pulsecore/core-subscribe.c
index c70d8ad..54fb7ec 100644
--- a/src/pulsecore/core-subscribe.c
+++ b/src/pulsecore/core-subscribe.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core-subscribe.h b/src/pulsecore/core-subscribe.h
index 2f9730d..dd748d3 100644
--- a/src/pulsecore/core-subscribe.h
+++ b/src/pulsecore/core-subscribe.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index c064e67..06573f1 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index 093fa8f..c679444 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/dllmain.c b/src/pulsecore/dllmain.c
index 269de60..491ec75 100644
--- a/src/pulsecore/dllmain.c
+++ b/src/pulsecore/dllmain.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/endianmacros.h b/src/pulsecore/endianmacros.h
index eea1c74..2257937 100644
--- a/src/pulsecore/endianmacros.h
+++ b/src/pulsecore/endianmacros.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/esound.h b/src/pulsecore/esound.h
index 79322ae..abc2355 100644
--- a/src/pulsecore/esound.h
+++ b/src/pulsecore/esound.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/flist.h b/src/pulsecore/flist.h
index 512dd35..e147486 100644
--- a/src/pulsecore/flist.h
+++ b/src/pulsecore/flist.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/hashmap.c b/src/pulsecore/hashmap.c
index 57607b6..e957c5b 100644
--- a/src/pulsecore/hashmap.c
+++ b/src/pulsecore/hashmap.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/hashmap.h b/src/pulsecore/hashmap.h
index 70d78b7..08e18ea 100644
--- a/src/pulsecore/hashmap.h
+++ b/src/pulsecore/hashmap.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/hook-list.c b/src/pulsecore/hook-list.c
index 3969403..5f7a866 100644
--- a/src/pulsecore/hook-list.c
+++ b/src/pulsecore/hook-list.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/hook-list.h b/src/pulsecore/hook-list.h
index de947ad..8514cce 100644
--- a/src/pulsecore/hook-list.h
+++ b/src/pulsecore/hook-list.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/ioline.c b/src/pulsecore/ioline.c
index 88174c0..5c38d6e 100644
--- a/src/pulsecore/ioline.c
+++ b/src/pulsecore/ioline.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/ioline.h b/src/pulsecore/ioline.h
index b9a3d9f..9f32d60 100644
--- a/src/pulsecore/ioline.h
+++ b/src/pulsecore/ioline.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/llist.h b/src/pulsecore/llist.h
index 46b54eb..77a1749 100644
--- a/src/pulsecore/llist.h
+++ b/src/pulsecore/llist.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/lock-autospawn.c b/src/pulsecore/lock-autospawn.c
index d36b669..4436974 100644
--- a/src/pulsecore/lock-autospawn.c
+++ b/src/pulsecore/lock-autospawn.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/log.c b/src/pulsecore/log.c
index 9931586..d4d3b76 100644
--- a/src/pulsecore/log.c
+++ b/src/pulsecore/log.c
@@ -6,7 +6,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/log.h b/src/pulsecore/log.h
index 6e7bfc3..153e11e 100644
--- a/src/pulsecore/log.h
+++ b/src/pulsecore/log.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/ltdl-helper.c b/src/pulsecore/ltdl-helper.c
index ed0b63a..be200ca 100644
--- a/src/pulsecore/ltdl-helper.c
+++ b/src/pulsecore/ltdl-helper.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/ltdl-helper.h b/src/pulsecore/ltdl-helper.h
index ea73de5..4c4f018 100644
--- a/src/pulsecore/ltdl-helper.h
+++ b/src/pulsecore/ltdl-helper.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index 5946001..20015bf 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c
index 265da37..e2be42b 100644
--- a/src/pulsecore/memblockq.c
+++ b/src/pulsecore/memblockq.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/memblockq.h b/src/pulsecore/memblockq.h
index 31f908d..0a74aa3 100644
--- a/src/pulsecore/memblockq.h
+++ b/src/pulsecore/memblockq.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/modargs.c b/src/pulsecore/modargs.c
index 4a30f52..73c67a8 100644
--- a/src/pulsecore/modargs.c
+++ b/src/pulsecore/modargs.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/modargs.h b/src/pulsecore/modargs.h
index 23766cf..809fb27 100644
--- a/src/pulsecore/modargs.h
+++ b/src/pulsecore/modargs.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/modinfo.c b/src/pulsecore/modinfo.c
index ac4ca88..00fb9c4 100644
--- a/src/pulsecore/modinfo.c
+++ b/src/pulsecore/modinfo.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/modinfo.h b/src/pulsecore/modinfo.h
index 605637c..407e602 100644
--- a/src/pulsecore/modinfo.h
+++ b/src/pulsecore/modinfo.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/module.c b/src/pulsecore/module.c
index 1eb70c8..42fd912 100644
--- a/src/pulsecore/module.c
+++ b/src/pulsecore/module.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/module.h b/src/pulsecore/module.h
index 6ab43dc..3f69734 100644
--- a/src/pulsecore/module.h
+++ b/src/pulsecore/module.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/msgobject.c b/src/pulsecore/msgobject.c
index 81417ea..6a2a612 100644
--- a/src/pulsecore/msgobject.c
+++ b/src/pulsecore/msgobject.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/msgobject.h b/src/pulsecore/msgobject.h
index 1a43fa3..a35a23b 100644
--- a/src/pulsecore/msgobject.h
+++ b/src/pulsecore/msgobject.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/mutex-posix.c b/src/pulsecore/mutex-posix.c
index c3ead97..b3e5256 100644
--- a/src/pulsecore/mutex-posix.c
+++ b/src/pulsecore/mutex-posix.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/mutex-win32.c b/src/pulsecore/mutex-win32.c
index 5e884e7..3a910b0 100644
--- a/src/pulsecore/mutex-win32.c
+++ b/src/pulsecore/mutex-win32.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/mutex.h b/src/pulsecore/mutex.h
index 8e0b1f2..a4dd673 100644
--- a/src/pulsecore/mutex.h
+++ b/src/pulsecore/mutex.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/namereg.c b/src/pulsecore/namereg.c
index 5ab3036..9df2f58 100644
--- a/src/pulsecore/namereg.c
+++ b/src/pulsecore/namereg.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/namereg.h b/src/pulsecore/namereg.h
index ff99525..38fae6f 100644
--- a/src/pulsecore/namereg.h
+++ b/src/pulsecore/namereg.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/object.c b/src/pulsecore/object.c
index 9a2f28f..8fd05fb 100644
--- a/src/pulsecore/object.c
+++ b/src/pulsecore/object.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/object.h b/src/pulsecore/object.h
index 2ee4fc3..43e7932 100644
--- a/src/pulsecore/object.h
+++ b/src/pulsecore/object.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/once.c b/src/pulsecore/once.c
index 3d4543c..05a3ad2 100644
--- a/src/pulsecore/once.c
+++ b/src/pulsecore/once.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/once.h b/src/pulsecore/once.h
index c0191ef..50ac18c 100644
--- a/src/pulsecore/once.h
+++ b/src/pulsecore/once.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/pid.c b/src/pulsecore/pid.c
index bf9ba98..0087846 100644
--- a/src/pulsecore/pid.c
+++ b/src/pulsecore/pid.c
@@ -6,7 +6,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/pid.h b/src/pulsecore/pid.h
index 3c8a9de..d8458bf 100644
--- a/src/pulsecore/pid.h
+++ b/src/pulsecore/pid.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/pipe.c b/src/pulsecore/pipe.c
index 93d78a2..c21e4b1 100644
--- a/src/pulsecore/pipe.c
+++ b/src/pulsecore/pipe.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/pipe.h b/src/pulsecore/pipe.h
index 9a7e62c..597d5e5 100644
--- a/src/pulsecore/pipe.h
+++ b/src/pulsecore/pipe.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/play-memblockq.c b/src/pulsecore/play-memblockq.c
index 44aa6bf..fceb2ca 100644
--- a/src/pulsecore/play-memblockq.c
+++ b/src/pulsecore/play-memblockq.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/play-memblockq.h b/src/pulsecore/play-memblockq.h
index 1a42867..9d5f40f 100644
--- a/src/pulsecore/play-memblockq.h
+++ b/src/pulsecore/play-memblockq.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/play-memchunk.c b/src/pulsecore/play-memchunk.c
index 0dd4825..f127d7a 100644
--- a/src/pulsecore/play-memchunk.c
+++ b/src/pulsecore/play-memchunk.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/play-memchunk.h b/src/pulsecore/play-memchunk.h
index c312ae8..c813611 100644
--- a/src/pulsecore/play-memchunk.h
+++ b/src/pulsecore/play-memchunk.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/poll.c b/src/pulsecore/poll.c
index 88ac21e..46a69c5 100644
--- a/src/pulsecore/poll.c
+++ b/src/pulsecore/poll.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/poll.h b/src/pulsecore/poll.h
index 86c37a0..fe0c6af 100644
--- a/src/pulsecore/poll.h
+++ b/src/pulsecore/poll.h
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/prioq.c b/src/pulsecore/prioq.c
index 693dc51..983db0f 100644
--- a/src/pulsecore/prioq.c
+++ b/src/pulsecore/prioq.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-cli.c b/src/pulsecore/protocol-cli.c
index 9247bb4..da64874 100644
--- a/src/pulsecore/protocol-cli.c
+++ b/src/pulsecore/protocol-cli.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-cli.h b/src/pulsecore/protocol-cli.h
index 9e26dcd..906b13f 100644
--- a/src/pulsecore/protocol-cli.h
+++ b/src/pulsecore/protocol-cli.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 2d4e62f..cac4e36 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-esound.h b/src/pulsecore/protocol-esound.h
index 232df66..63a29ce 100644
--- a/src/pulsecore/protocol-esound.h
+++ b/src/pulsecore/protocol-esound.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-http.c b/src/pulsecore/protocol-http.c
index 5379a36..f3b9381 100644
--- a/src/pulsecore/protocol-http.c
+++ b/src/pulsecore/protocol-http.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-http.h b/src/pulsecore/protocol-http.h
index 7e8f976..40b3d82 100644
--- a/src/pulsecore/protocol-http.h
+++ b/src/pulsecore/protocol-http.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index a0fdd60..1665cb8 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-native.h b/src/pulsecore/protocol-native.h
index 06731c0..8a8d601 100644
--- a/src/pulsecore/protocol-native.h
+++ b/src/pulsecore/protocol-native.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
index e149c40..b43245a 100644
--- a/src/pulsecore/protocol-simple.c
+++ b/src/pulsecore/protocol-simple.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/protocol-simple.h b/src/pulsecore/protocol-simple.h
index c10eabe..a25ab80 100644
--- a/src/pulsecore/protocol-simple.h
+++ b/src/pulsecore/protocol-simple.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/ratelimit.c b/src/pulsecore/ratelimit.c
index 8ce7857..29e6fb1 100644
--- a/src/pulsecore/ratelimit.c
+++ b/src/pulsecore/ratelimit.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/ratelimit.h b/src/pulsecore/ratelimit.h
index e652c52..ec3b5a3 100644
--- a/src/pulsecore/ratelimit.h
+++ b/src/pulsecore/ratelimit.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/refcnt.h b/src/pulsecore/refcnt.h
index 291f450..1e98832 100644
--- a/src/pulsecore/refcnt.h
+++ b/src/pulsecore/refcnt.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c
index 78ad553..17fb848 100644
--- a/src/pulsecore/resampler.c
+++ b/src/pulsecore/resampler.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/resampler.h b/src/pulsecore/resampler.h
index 54dfa55..742de6a 100644
--- a/src/pulsecore/resampler.h
+++ b/src/pulsecore/resampler.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c
index 905ba5d..3a9b384 100644
--- a/src/pulsecore/sample-util.c
+++ b/src/pulsecore/sample-util.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sample-util.h b/src/pulsecore/sample-util.h
index 2230aaf..79af9ef 100644
--- a/src/pulsecore/sample-util.h
+++ b/src/pulsecore/sample-util.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sconv-s16be.c b/src/pulsecore/sconv-s16be.c
index 0d5146a..bf4f717 100644
--- a/src/pulsecore/sconv-s16be.c
+++ b/src/pulsecore/sconv-s16be.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sconv-s16be.h b/src/pulsecore/sconv-s16be.h
index 0263333..ae9e231 100644
--- a/src/pulsecore/sconv-s16be.h
+++ b/src/pulsecore/sconv-s16be.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sconv-s16le.c b/src/pulsecore/sconv-s16le.c
index 79f0391..307ce7b 100644
--- a/src/pulsecore/sconv-s16le.c
+++ b/src/pulsecore/sconv-s16le.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sconv-s16le.h b/src/pulsecore/sconv-s16le.h
index f7b0064..609fa04 100644
--- a/src/pulsecore/sconv-s16le.h
+++ b/src/pulsecore/sconv-s16le.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sconv.c b/src/pulsecore/sconv.c
index fcd0309..29a9a45 100644
--- a/src/pulsecore/sconv.c
+++ b/src/pulsecore/sconv.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sconv.h b/src/pulsecore/sconv.h
index 5971036..b00a16a 100644
--- a/src/pulsecore/sconv.h
+++ b/src/pulsecore/sconv.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/semaphore-posix.c b/src/pulsecore/semaphore-posix.c
index 7c9f859..616d897 100644
--- a/src/pulsecore/semaphore-posix.c
+++ b/src/pulsecore/semaphore-posix.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/semaphore-win32.c b/src/pulsecore/semaphore-win32.c
index 41e0b8d..9ffbde6 100644
--- a/src/pulsecore/semaphore-win32.c
+++ b/src/pulsecore/semaphore-win32.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/semaphore.h b/src/pulsecore/semaphore.h
index 850ae81..dc3ca6a 100644
--- a/src/pulsecore/semaphore.h
+++ b/src/pulsecore/semaphore.h
@@ -8,7 +8,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/shared.c b/src/pulsecore/shared.c
index 9485dc3..edd7b7f 100644
--- a/src/pulsecore/shared.c
+++ b/src/pulsecore/shared.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/shared.h b/src/pulsecore/shared.h
index f6f8d3c..82819f0 100644
--- a/src/pulsecore/shared.h
+++ b/src/pulsecore/shared.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 34de9bb..53e727b 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index b4f0531..e380168 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index fadbb85..298cc88 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 2eaae69..0d33679 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sioman.c b/src/pulsecore/sioman.c
index 7e5b186..24c046c 100644
--- a/src/pulsecore/sioman.c
+++ b/src/pulsecore/sioman.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sioman.h b/src/pulsecore/sioman.h
index d0cacc9..88ff92a 100644
--- a/src/pulsecore/sioman.h
+++ b/src/pulsecore/sioman.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/socket-server.c b/src/pulsecore/socket-server.c
index 19c2fd0..6a4405e 100644
--- a/src/pulsecore/socket-server.c
+++ b/src/pulsecore/socket-server.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/socket-server.h b/src/pulsecore/socket-server.h
index b9a2c40..72b6eda 100644
--- a/src/pulsecore/socket-server.h
+++ b/src/pulsecore/socket-server.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/socket-util.c b/src/pulsecore/socket-util.c
index e44f646..5fd5dd6 100644
--- a/src/pulsecore/socket-util.c
+++ b/src/pulsecore/socket-util.c
@@ -7,7 +7,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/socket-util.h b/src/pulsecore/socket-util.h
index 7a40285..f6d1637 100644
--- a/src/pulsecore/socket-util.h
+++ b/src/pulsecore/socket-util.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sound-file-stream.c b/src/pulsecore/sound-file-stream.c
index c3de306..3453637 100644
--- a/src/pulsecore/sound-file-stream.c
+++ b/src/pulsecore/sound-file-stream.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sound-file-stream.h b/src/pulsecore/sound-file-stream.h
index 4cc6914..a788c34 100644
--- a/src/pulsecore/sound-file-stream.h
+++ b/src/pulsecore/sound-file-stream.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sound-file.c b/src/pulsecore/sound-file.c
index 380cef1..db75ae0 100644
--- a/src/pulsecore/sound-file.c
+++ b/src/pulsecore/sound-file.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/sound-file.h b/src/pulsecore/sound-file.h
index e4d703d..34e0261 100644
--- a/src/pulsecore/sound-file.h
+++ b/src/pulsecore/sound-file.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index d99f79c..373d563 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 9369568..018ec88 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 4ce5cbf..5277716 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 8a91016..2aac25f 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -9,7 +9,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/strbuf.c b/src/pulsecore/strbuf.c
index 8b95278..9f5a84b 100644
--- a/src/pulsecore/strbuf.c
+++ b/src/pulsecore/strbuf.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/strbuf.h b/src/pulsecore/strbuf.h
index 1d2a588..05e69e0 100644
--- a/src/pulsecore/strbuf.h
+++ b/src/pulsecore/strbuf.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/strlist.c b/src/pulsecore/strlist.c
index f587a2f..cbafbba 100644
--- a/src/pulsecore/strlist.c
+++ b/src/pulsecore/strlist.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/strlist.h b/src/pulsecore/strlist.h
index 1cb7537..2584e86 100644
--- a/src/pulsecore/strlist.h
+++ b/src/pulsecore/strlist.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/thread-posix.c b/src/pulsecore/thread-posix.c
index ade398f..fdab270 100644
--- a/src/pulsecore/thread-posix.c
+++ b/src/pulsecore/thread-posix.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/thread-win32.c b/src/pulsecore/thread-win32.c
index c40d334..0a1baa5 100644
--- a/src/pulsecore/thread-win32.c
+++ b/src/pulsecore/thread-win32.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/thread.h b/src/pulsecore/thread.h
index eabe9ba..25eace6 100644
--- a/src/pulsecore/thread.h
+++ b/src/pulsecore/thread.h
@@ -9,7 +9,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/tokenizer.c b/src/pulsecore/tokenizer.c
index 07a9f3a..1eb466d 100644
--- a/src/pulsecore/tokenizer.c
+++ b/src/pulsecore/tokenizer.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/tokenizer.h b/src/pulsecore/tokenizer.h
index d51cd73..a47c07e 100644
--- a/src/pulsecore/tokenizer.h
+++ b/src/pulsecore/tokenizer.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/vector.h b/src/pulsecore/vector.h
index 076bd6c..924e3cb 100644
--- a/src/pulsecore/vector.h
+++ b/src/pulsecore/vector.h
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/x11prop.c b/src/pulsecore/x11prop.c
index 7f91ba3..873a76e 100644
--- a/src/pulsecore/x11prop.c
+++ b/src/pulsecore/x11prop.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/x11prop.h b/src/pulsecore/x11prop.h
index c5998d3..dc67526 100644
--- a/src/pulsecore/x11prop.h
+++ b/src/pulsecore/x11prop.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/x11wrap.c b/src/pulsecore/x11wrap.c
index 332ebb2..1960a12 100644
--- a/src/pulsecore/x11wrap.c
+++ b/src/pulsecore/x11wrap.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/pulsecore/x11wrap.h b/src/pulsecore/x11wrap.h
index badc3a1..b57541f 100644
--- a/src/pulsecore/x11wrap.h
+++ b/src/pulsecore/x11wrap.h
@@ -8,7 +8,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/asyncmsgq-test.c b/src/tests/asyncmsgq-test.c
index 08ad3dd..40c74f7 100644
--- a/src/tests/asyncmsgq-test.c
+++ b/src/tests/asyncmsgq-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/asyncq-test.c b/src/tests/asyncq-test.c
index 4e8a120..a617e1a 100644
--- a/src/tests/asyncq-test.c
+++ b/src/tests/asyncq-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/cpulimit-test.c b/src/tests/cpulimit-test.c
index fdc0162..9d0f4ee 100644
--- a/src/tests/cpulimit-test.c
+++ b/src/tests/cpulimit-test.c
@@ -3,7 +3,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/envelope-test.c b/src/tests/envelope-test.c
index 11a80a1..3af3044 100644
--- a/src/tests/envelope-test.c
+++ b/src/tests/envelope-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/flist-test.c b/src/tests/flist-test.c
index b2c648d..64c0add 100644
--- a/src/tests/flist-test.c
+++ b/src/tests/flist-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/get-binary-name-test.c b/src/tests/get-binary-name-test.c
index 7c7a899..a34e38f 100644
--- a/src/tests/get-binary-name-test.c
+++ b/src/tests/get-binary-name-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/gtk-test.c b/src/tests/gtk-test.c
index 092ba25..f82aca5 100644
--- a/src/tests/gtk-test.c
+++ b/src/tests/gtk-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/interpol-test.c b/src/tests/interpol-test.c
index d7da660..5f7ebb7 100644
--- a/src/tests/interpol-test.c
+++ b/src/tests/interpol-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/lock-autospawn-test.c b/src/tests/lock-autospawn-test.c
index 80cfda6..c754e23 100644
--- a/src/tests/lock-autospawn-test.c
+++ b/src/tests/lock-autospawn-test.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/mainloop-test.c b/src/tests/mainloop-test.c
index 2580fa7..d892623 100644
--- a/src/tests/mainloop-test.c
+++ b/src/tests/mainloop-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/memblock-test.c b/src/tests/memblock-test.c
index 37b5b40..9cf6c78 100644
--- a/src/tests/memblock-test.c
+++ b/src/tests/memblock-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/memblockq-test.c b/src/tests/memblockq-test.c
index b01a4fd..127fb19 100644
--- a/src/tests/memblockq-test.c
+++ b/src/tests/memblockq-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/mix-test.c b/src/tests/mix-test.c
index db8ac6e..ac4b57b 100644
--- a/src/tests/mix-test.c
+++ b/src/tests/mix-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/pacat-simple.c b/src/tests/pacat-simple.c
index ffe3176..d4224e1 100644
--- a/src/tests/pacat-simple.c
+++ b/src/tests/pacat-simple.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/parec-simple.c b/src/tests/parec-simple.c
index c9d3bef..9f19ff4 100644
--- a/src/tests/parec-simple.c
+++ b/src/tests/parec-simple.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/proplist-test.c b/src/tests/proplist-test.c
index 5526bb7..3e72356 100644
--- a/src/tests/proplist-test.c
+++ b/src/tests/proplist-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/queue-test.c b/src/tests/queue-test.c
index ceae4e4..7ee2693 100644
--- a/src/tests/queue-test.c
+++ b/src/tests/queue-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/remix-test.c b/src/tests/remix-test.c
index 3da4ee3..9d110d6 100644
--- a/src/tests/remix-test.c
+++ b/src/tests/remix-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/resampler-test.c b/src/tests/resampler-test.c
index da8d375..6b4a64c 100644
--- a/src/tests/resampler-test.c
+++ b/src/tests/resampler-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/rtpoll-test.c b/src/tests/rtpoll-test.c
index 953fd61..4ac9644 100644
--- a/src/tests/rtpoll-test.c
+++ b/src/tests/rtpoll-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/rtstutter.c b/src/tests/rtstutter.c
index d8aff34..f04d43a 100644
--- a/src/tests/rtstutter.c
+++ b/src/tests/rtstutter.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/sig2str-test.c b/src/tests/sig2str-test.c
index d64a890..0cd929c 100644
--- a/src/tests/sig2str-test.c
+++ b/src/tests/sig2str-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/smoother-test.c b/src/tests/smoother-test.c
index 15700ec..798dfed 100644
--- a/src/tests/smoother-test.c
+++ b/src/tests/smoother-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/stripnul.c b/src/tests/stripnul.c
index 2b8aa08..1d8c493 100644
--- a/src/tests/stripnul.c
+++ b/src/tests/stripnul.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/sync-playback.c b/src/tests/sync-playback.c
index f2a1560..bb64a91 100644
--- a/src/tests/sync-playback.c
+++ b/src/tests/sync-playback.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/thread-mainloop-test.c b/src/tests/thread-mainloop-test.c
index 3bcf4f1..ad89414 100644
--- a/src/tests/thread-mainloop-test.c
+++ b/src/tests/thread-mainloop-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/thread-test.c b/src/tests/thread-test.c
index f29b5e7..2c07b1c 100644
--- a/src/tests/thread-test.c
+++ b/src/tests/thread-test.c
@@ -3,7 +3,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/tests/vector-test.c b/src/tests/vector-test.c
index f734417..7494348 100644
--- a/src/tests/vector-test.c
+++ b/src/tests/vector-test.c
@@ -5,7 +5,7 @@
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
+ published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/pabrowse.c b/src/utils/pabrowse.c
index f2ed955..288d44a 100644
--- a/src/utils/pabrowse.c
+++ b/src/utils/pabrowse.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/pacat.c b/src/utils/pacat.c
index 2224da9..e886c15 100644
--- a/src/utils/pacat.c
+++ b/src/utils/pacat.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c
index 507e229..d94f266 100644
--- a/src/utils/pacmd.c
+++ b/src/utils/pacmd.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index 6524bf9..8df767f 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/padsp.c b/src/utils/padsp.c
index 76e86c8..dfa5aac 100644
--- a/src/utils/padsp.c
+++ b/src/utils/padsp.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/paplay.c b/src/utils/paplay.c
index dec80e5..f6ba6f6 100644
--- a/src/utils/paplay.c
+++ b/src/utils/paplay.c
@@ -6,7 +6,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/pasuspender.c b/src/utils/pasuspender.c
index 8a59d5e..b4bccd5 100644
--- a/src/utils/pasuspender.c
+++ b/src/utils/pasuspender.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
diff --git a/src/utils/pax11publish.c b/src/utils/pax11publish.c
index 50d621d..a9eb329 100644
--- a/src/utils/pax11publish.c
+++ b/src/utils/pax11publish.c
@@ -5,7 +5,7 @@
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,
+ by the Free Software Foundation; either version 2.1 of the License,
or (at your option) any later version.
PulseAudio is distributed in the hope that it will be useful, but
commit ff38eaf67773e0039befb95c0f9ad91e7a06fc3f
Merge: 297515a... 86dee05...
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Mar 3 21:44:56 2009 +0100
Merge commit 'coling/lgpl21'
commit 0329edd1791e3c8fbed33f266d86cae6b91a5556
Author: Finn Thain <fthain at telegraphics.com.au>
Date: Thu Feb 26 16:48:58 2009 +1100
revive solaris module
Hi All,
This patch fixes the solaris audio device source and sink, and fixes some
portability issues that break the build on solaris. Questions and comments
welcomed.
I've tested this patch only with OpenSolaris Express snv 103. Eventually I
hope to be able to test a few older releases and older hardware (though it
is hard to say whether there is much interest in those).
This is my first brush with pulseaudio and so I read the wiki docs and
some of the source code but I'm still unsure of a few things. In
particular I'm wondering about rewind processing, corking and what (if
anything) the module needs for those. I'm also unclear on the implications
of thread_info.buffer_size, .fragment_size and .max_request, and whether
my code is correct or not.
This patch disables link map/library versioning unless ld is GNU ld.
Another approach for solaris would be to use that linker's -M option, but
I couldn't make that work (due to undefined mainloop, browse and simple
symbols when linking pacat. I can post the errors if anyone is intested.)
Thanks,
Finn Thain
diff --git a/bootstrap.sh b/bootstrap.sh
index 4e223e3..cb74121 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -62,7 +62,7 @@ else
rm -f Makefile.am~ configure.ac~
# Evil, evil, evil, evil hack
- sed 's/read dummy/\#/' `which gettextize` | sh -s -- --copy --force
+ sed 's/read dummy/\#/' `which gettextize` | bash -s -- --copy --force
test -f Makefile.am~ && mv Makefile.am~ Makefile.am
test -f configure.ac~ && mv configure.ac~ configure.ac
diff --git a/configure.ac b/configure.ac
index 77d777d..049589d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -70,8 +70,7 @@ fi
case $host in
*-*-solaris* )
- AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
- AC_DEFINE(_XOPEN_SOURCE, 2, Needed to get declarations for msg_control and msg_controllen on Solaris)
+ AC_DEFINE(_XOPEN_SOURCE, 600, Needed to get declarations for msg_control and msg_controllen on Solaris)
AC_DEFINE(__EXTENSIONS__, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
;;
esac
@@ -92,11 +91,20 @@ AC_USE_SYSTEM_EXTENSIONS
# M4
-AC_PATH_PROG([M4], [m4 gm4], [no])
+AC_CHECK_PROGS([M4], gm4 m4, no)
if test "x$M4" = xno ; then
AC_MSG_ERROR([m4 missing])
fi
+# Linker
+
+AC_PROG_LD
+AC_PROG_LD_GNU
+
+AC_SUBST(HAVE_GNU_LD)
+AM_CONDITIONAL([HAVE_GNU_LD], [test "x$HAVE_GNU_LD" = x1])
+
+
dnl Compiler flags
DESIRED_FLAGS="-Wall -W -Wextra -pipe -Wno-long-long -Winline -Wvla -Wno-overlength-strings -Wunsafe-loop-optimizations -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Winit-self -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-align -Wstrict-aliasing=2 -Wwrite-strings -Wno-unused-parameter -ffast-math -Wp,-D_FORTIFY_SOURCE=2 -fno-common -fdiagnostics-show-option"
@@ -1059,7 +1067,7 @@ if test "x$HAVE_HAL" = x1 ; then
dbus=yes
fi
-if test "x${dbus}" != xno || test "x${bluez}" != xno || "x${hal}" != xno ; then
+if test "x${dbus}" != xno || test "x${bluez}" != xno || test "x${hal}" != xno ; then
PKG_CHECK_MODULES(DBUS, [ dbus-1 >= 1.0.0 ],
[
diff --git a/src/Makefile.am b/src/Makefile.am
index 9f2fa02..aa190a4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -713,8 +713,11 @@ libpulse_la_SOURCES = \
pulse/xmalloc.c pulse/xmalloc.h
libpulse_la_CFLAGS = $(AM_CFLAGS)
-libpulse_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
libpulse_la_LIBADD = $(AM_LIBADD) $(WINSOCK_LIBS) $(LTLIBICONV) libpulsecommon- at PA_MAJORMINORMICRO@.la
+libpulse_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_VERSION_INFO)
+if HAVE_GNU_LD
+libpulse_la_LDFLAGS += -Wl,-version-script=$(srcdir)/map-file
+endif
if HAVE_X11
libpulse_la_SOURCES += pulse/client-conf-x11.c pulse/client-conf-x11.h
@@ -725,17 +728,26 @@ endif
libpulse_simple_la_SOURCES = pulse/simple.c pulse/simple.h
libpulse_simple_la_CFLAGS = $(AM_CFLAGS)
libpulse_simple_la_LIBADD = $(AM_LIBADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la
-libpulse_simple_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_SIMPLE_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
+libpulse_simple_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_SIMPLE_VERSION_INFO)
+if HAVE_GNU_LD
+libpulse_simple_la_LDFLAGS += -Wl,-version-script=$(srcdir)/map-file
+endif
libpulse_browse_la_SOURCES = pulse/browser.c pulse/browser.h pulsecore/avahi-wrap.c pulsecore/avahi-wrap.h
libpulse_browse_la_CFLAGS = $(AM_CFLAGS) $(AVAHI_CFLAGS)
libpulse_browse_la_LIBADD = $(AM_LIBADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la $(AVAHI_LIBS)
-libpulse_browse_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_BROWSE_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
+libpulse_browse_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_BROWSE_VERSION_INFO)
+if HAVE_GNU_LD
+libpulse_browse_la_LDFLAGS += -Wl,-version-script=$(srcdir)/map-file
+endif
libpulse_mainloop_glib_la_SOURCES = pulse/glib-mainloop.h pulse/glib-mainloop.c
libpulse_mainloop_glib_la_CFLAGS = $(AM_CFLAGS) $(GLIB20_CFLAGS)
libpulse_mainloop_glib_la_LIBADD = $(AM_LIBADD) libpulse.la libpulsecommon- at PA_MAJORMINORMICRO@.la $(GLIB20_LIBS)
-libpulse_mainloop_glib_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO) -Wl,-version-script=$(srcdir)/map-file
+libpulse_mainloop_glib_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBPULSE_MAINLOOP_GLIB_VERSION_INFO)
+if HAVE_GNU_LD
+libpulse_mainloop_glib_la_LDFLAGS += -Wl,-version-script=$(srcdir)/map-file
+endif
###################################
# OSS emulation #
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index b02377a..ac6cc8a 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -94,8 +94,10 @@ static const pa_daemon_conf default_conf = {
,.rlimit_fsize = { .value = 0, .is_set = FALSE },
.rlimit_data = { .value = 0, .is_set = FALSE },
.rlimit_stack = { .value = 0, .is_set = FALSE },
- .rlimit_core = { .value = 0, .is_set = FALSE },
- .rlimit_rss = { .value = 0, .is_set = FALSE }
+ .rlimit_core = { .value = 0, .is_set = FALSE }
+#ifdef RLIMIT_RSS
+ ,.rlimit_rss = { .value = 0, .is_set = FALSE }
+#endif
#ifdef RLIMIT_NPROC
,.rlimit_nproc = { .value = 0, .is_set = FALSE }
#endif
@@ -472,7 +474,9 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "rlimit-data", parse_rlimit, &c->rlimit_data, NULL },
{ "rlimit-stack", parse_rlimit, &c->rlimit_stack, NULL },
{ "rlimit-core", parse_rlimit, &c->rlimit_core, NULL },
+#ifdef RLIMIT_RSS
{ "rlimit-rss", parse_rlimit, &c->rlimit_rss, NULL },
+#endif
#ifdef RLIMIT_NOFILE
{ "rlimit-nofile", parse_rlimit, &c->rlimit_nofile, NULL },
#endif
@@ -651,7 +655,9 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "rlimit-data = %li\n", c->rlimit_data.is_set ? (long int) c->rlimit_data.value : -1);
pa_strbuf_printf(s, "rlimit-stack = %li\n", c->rlimit_stack.is_set ? (long int) c->rlimit_stack.value : -1);
pa_strbuf_printf(s, "rlimit-core = %li\n", c->rlimit_core.is_set ? (long int) c->rlimit_core.value : -1);
+#ifdef RLIMIT_RSS
pa_strbuf_printf(s, "rlimit-rss = %li\n", c->rlimit_rss.is_set ? (long int) c->rlimit_rss.value : -1);
+#endif
#ifdef RLIMIT_AS
pa_strbuf_printf(s, "rlimit-as = %li\n", c->rlimit_as.is_set ? (long int) c->rlimit_as.value : -1);
#endif
diff --git a/src/daemon/daemon-conf.h b/src/daemon/daemon-conf.h
index 787676c..9cec189 100644
--- a/src/daemon/daemon-conf.h
+++ b/src/daemon/daemon-conf.h
@@ -87,8 +87,10 @@ typedef struct pa_daemon_conf {
char *config_file;
#ifdef HAVE_SYS_RESOURCE_H
- pa_rlimit rlimit_fsize, rlimit_data, rlimit_stack, rlimit_core, rlimit_rss;
-
+ pa_rlimit rlimit_fsize, rlimit_data, rlimit_stack, rlimit_core;
+#ifdef RLIMIT_RSS
+ pa_rlimit rlimit_rss;
+#endif
#ifdef RLIMIT_NOFILE
pa_rlimit rlimit_nofile;
#endif
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 46a279d..0048e7b 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -294,7 +294,9 @@ static void set_all_rlimits(const pa_daemon_conf *conf) {
set_one_rlimit(&conf->rlimit_data, RLIMIT_DATA, "RLIMIT_DATA");
set_one_rlimit(&conf->rlimit_stack, RLIMIT_STACK, "RLIMIT_STACK");
set_one_rlimit(&conf->rlimit_core, RLIMIT_CORE, "RLIMIT_CORE");
+#ifdef RLIMIT_RSS
set_one_rlimit(&conf->rlimit_rss, RLIMIT_RSS, "RLIMIT_RSS");
+#endif
#ifdef RLIMIT_NPROC
set_one_rlimit(&conf->rlimit_nproc, RLIMIT_NPROC, "RLIMIT_NPROC");
#endif
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 738115c..783c244 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -3,6 +3,7 @@
Copyright 2006 Lennart Poettering
Copyright 2006-2007 Pierre Ossman <ossman at cendio.se> for Cendio AB
+ Copyright 2009 Finn Thain
PulseAudio is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published
@@ -44,6 +45,7 @@
#include <pulse/mainloop-signal.h>
#include <pulse/xmalloc.h>
#include <pulse/timeval.h>
+#include <pulse/util.h>
#include <pulsecore/iochannel.h>
#include <pulsecore/sink.h>
@@ -57,22 +59,25 @@
#include <pulsecore/thread-mq.h>
#include <pulsecore/rtpoll.h>
#include <pulsecore/thread.h>
+#include <pulsecore/rtclock.h>
#include "module-solaris-symdef.h"
-PA_MODULE_AUTHOR("Pierre Ossman")
-PA_MODULE_DESCRIPTION("Solaris Sink/Source")
-PA_MODULE_VERSION(PACKAGE_VERSION)
+PA_MODULE_AUTHOR("Pierre Ossman");
+PA_MODULE_DESCRIPTION("Solaris Sink/Source");
+PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_USAGE(
"sink_name=<name for the sink> "
"source_name=<name for the source> "
- "device=<OSS device> record=<enable source?> "
+ "device=<audio device file name> "
+ "record=<enable source?> "
"playback=<enable sink?> "
"format=<sample format> "
"channels=<number of channels> "
"rate=<sample rate> "
"buffer_size=<record buffer size> "
- "channel_map=<channel map>")
+ "channel_map=<channel map>");
+PA_MODULE_LOAD_ONCE(FALSE);
struct userdata {
pa_core *core;
@@ -87,15 +92,24 @@ struct userdata {
pa_memchunk memchunk;
- unsigned int page_size;
-
uint32_t frame_size;
- uint32_t buffer_size;
- unsigned int written_bytes, read_bytes;
+ int32_t buffer_size;
+ volatile uint64_t written_bytes, read_bytes;
+ pa_mutex *written_bytes_lock;
+ char *device_name;
+ int mode;
int fd;
pa_rtpoll_item *rtpoll_item;
pa_module *module;
+
+ pa_bool_t sink_suspended, source_suspended;
+
+ uint32_t play_samples_msw, record_samples_msw;
+ uint32_t prev_playback_samples, prev_record_samples;
+ pa_mutex *sample_counter_lock;
+
+ size_t min_request;
};
static const char* const valid_modargs[] = {
@@ -112,89 +126,303 @@ static const char* const valid_modargs[] = {
NULL
};
-#define DEFAULT_SINK_NAME "solaris_output"
-#define DEFAULT_SOURCE_NAME "solaris_input"
#define DEFAULT_DEVICE "/dev/audio"
+#define MIN_BUFFER_SIZE (640)
+#define MAX_RENDER_HZ (300)
-static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
- struct userdata *u = PA_SINK(o)->userdata;
+/* This render rate limit implies a minimum latency, but without it we waste too much CPU time in the
+ * IO thread. The maximum render rate and minimum latency (or minimum buffer size) are unachievable on
+ * common hardware anyway. Note that MIN_BUFFER_SIZE * MAX_RENDER_HZ >= 4 * 48000 Bps.
+ */
+
+static uint64_t get_playback_buffered_bytes(struct userdata *u) {
+ audio_info_t info;
+ uint64_t played_bytes;
int err;
+
+ pa_assert(u->sink);
+
+ pa_mutex_lock(u->sample_counter_lock);
+
+ err = ioctl(u->fd, AUDIO_GETINFO, &info);
+ pa_assert(err >= 0);
+
+ /* Handle wrap-around of the device's sample counter, which is a uint_32. */
+ if (u->prev_playback_samples > info.play.samples) {
+ /* Unfortunately info.play.samples can sometimes go backwards, even before it wraps! */
+ if (u->prev_playback_samples + info.play.samples < 240000) {
+ ++u->play_samples_msw;
+ } else {
+ pa_log_debug("play.samples went backwards %d bytes", u->prev_playback_samples - info.play.samples);
+ }
+ }
+ u->prev_playback_samples = info.play.samples;
+ played_bytes = (((uint64_t)u->play_samples_msw << 32) + info.play.samples) * u->frame_size;
+
+ pa_mutex_unlock(u->sample_counter_lock);
+
+ return u->written_bytes - played_bytes;
+}
+
+static pa_usec_t sink_get_latency(struct userdata *u, pa_sample_spec *ss) {
+ pa_usec_t r = 0;
+
+ pa_assert(u);
+ pa_assert(ss);
+
+ if (u->fd >= 0) {
+ pa_mutex_lock(u->written_bytes_lock);
+ r = pa_bytes_to_usec(get_playback_buffered_bytes(u), ss);
+ if (u->memchunk.memblock)
+ r += pa_bytes_to_usec(u->memchunk.length, ss);
+ pa_mutex_unlock(u->written_bytes_lock);
+ }
+ return r;
+}
+
+static uint64_t get_recorded_bytes(struct userdata *u) {
audio_info_t info;
+ uint64_t result;
+ int err;
- switch (code) {
- case PA_SINK_MESSAGE_GET_LATENCY: {
- pa_usec_t r = 0;
+ pa_assert(u->source);
- if (u->fd >= 0) {
+ err = ioctl(u->fd, AUDIO_GETINFO, &info);
+ pa_assert(err >= 0);
- err = ioctl(u->fd, AUDIO_GETINFO, &info);
- pa_assert(err >= 0);
+ if (u->prev_record_samples > info.record.samples)
+ ++u->record_samples_msw;
+ u->prev_record_samples = info.record.samples;
+ result = (((uint64_t)u->record_samples_msw << 32) + info.record.samples) * u->frame_size;
- r += pa_bytes_to_usec(u->written_bytes, &PA_SINK(o)->sample_spec);
- r -= pa_bytes_to_usec(info.play.samples * u->frame_size, &PA_SINK(o)->sample_spec);
+ return result;
+}
- if (u->memchunk.memblock)
- r += pa_bytes_to_usec(u->memchunk.length, &PA_SINK(o)->sample_spec);
- }
+static pa_usec_t source_get_latency(struct userdata *u, pa_sample_spec *ss) {
+ pa_usec_t r = 0;
+ audio_info_t info;
+
+ pa_assert(u);
+ pa_assert(ss);
- *((pa_usec_t*) data) = r;
+ if (u->fd) {
+ int err = ioctl(u->fd, AUDIO_GETINFO, &info);
+ pa_assert(err >= 0);
- return 0;
+ r = pa_bytes_to_usec(get_recorded_bytes(u), ss) - pa_bytes_to_usec(u->read_bytes, ss);
}
+ return r;
+}
- case PA_SINK_MESSAGE_SET_VOLUME:
- if (u->fd >= 0) {
- AUDIO_INITINFO(&info);
+static void build_pollfd(struct userdata *u) {
+ struct pollfd *pollfd;
- info.play.gain = pa_cvolume_avg((pa_cvolume*)data) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
- assert(info.play.gain <= AUDIO_MAX_GAIN);
+ pa_assert(u);
+ pa_assert(!u->rtpoll_item);
+ u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
- if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
- if (errno == EINVAL)
- pa_log("AUDIO_SETINFO: Unsupported volume.");
- else
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
- } else {
- return 0;
- }
- }
- break;
+ pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
+ pollfd->fd = u->fd;
+ pollfd->events = 0;
+ pollfd->revents = 0;
+}
- case PA_SINK_MESSAGE_GET_VOLUME:
- if (u->fd >= 0) {
- err = ioctl(u->fd, AUDIO_GETINFO, &info);
- assert(err >= 0);
+static int set_buffer(int fd, int buffer_size) {
+ audio_info_t info;
- pa_cvolume_set((pa_cvolume*) data, ((pa_cvolume*) data)->channels,
- info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ pa_assert(fd >= 0);
- return 0;
- }
- break;
+ AUDIO_INITINFO(&info);
+ info.play.buffer_size = buffer_size;
+ info.record.buffer_size = buffer_size;
- case PA_SINK_MESSAGE_SET_MUTE:
- if (u->fd >= 0) {
- AUDIO_INITINFO(&info);
+ if (ioctl(fd, AUDIO_SETINFO, &info) < 0) {
+ if (errno == EINVAL)
+ pa_log("AUDIO_SETINFO: Unsupported buffer size.");
+ else
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ return -1;
+ }
- info.output_muted = !!PA_PTR_TO_UINT(data);
+ return 0;
+}
- if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
- else
- return 0;
+static int auto_format(int fd, int mode, pa_sample_spec *ss) {
+ audio_info_t info;
+
+ pa_assert(fd >= 0);
+ pa_assert(ss);
+
+ AUDIO_INITINFO(&info);
+
+ if (mode != O_RDONLY) {
+ info.play.sample_rate = ss->rate;
+ info.play.channels = ss->channels;
+ switch (ss->format) {
+ case PA_SAMPLE_U8:
+ info.play.precision = 8;
+ info.play.encoding = AUDIO_ENCODING_LINEAR;
+ break;
+ case PA_SAMPLE_ALAW:
+ info.play.precision = 8;
+ info.play.encoding = AUDIO_ENCODING_ALAW;
+ break;
+ case PA_SAMPLE_ULAW:
+ info.play.precision = 8;
+ info.play.encoding = AUDIO_ENCODING_ULAW;
+ break;
+ case PA_SAMPLE_S16NE:
+ info.play.precision = 16;
+ info.play.encoding = AUDIO_ENCODING_LINEAR;
+ break;
+ default:
+ pa_log("AUDIO_SETINFO: Unsupported sample format.");
+ return -1;
}
- break;
+ }
- case PA_SINK_MESSAGE_GET_MUTE:
- if (u->fd >= 0) {
- err = ioctl(u->fd, AUDIO_GETINFO, &info);
- pa_assert(err >= 0);
+ if (mode != O_WRONLY) {
+ info.record.sample_rate = ss->rate;
+ info.record.channels = ss->channels;
+ switch (ss->format) {
+ case PA_SAMPLE_U8:
+ info.record.precision = 8;
+ info.record.encoding = AUDIO_ENCODING_LINEAR;
+ break;
+ case PA_SAMPLE_ALAW:
+ info.record.precision = 8;
+ info.record.encoding = AUDIO_ENCODING_ALAW;
+ break;
+ case PA_SAMPLE_ULAW:
+ info.record.precision = 8;
+ info.record.encoding = AUDIO_ENCODING_ULAW;
+ break;
+ case PA_SAMPLE_S16NE:
+ info.record.precision = 16;
+ info.record.encoding = AUDIO_ENCODING_LINEAR;
+ break;
+ default:
+ pa_log("AUDIO_SETINFO: Unsupported sample format.");
+ return -1;
+ }
+ }
+
+ if (ioctl(fd, AUDIO_SETINFO, &info) < 0) {
+ if (errno == EINVAL)
+ pa_log("AUDIO_SETINFO: Failed to set sample format.");
+ else
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ return -1;
+ }
+
+ return 0;
+}
+
+static int open_audio_device(struct userdata *u, pa_sample_spec *ss) {
+ pa_assert(u);
+ pa_assert(ss);
+
+ if ((u->fd = open(u->device_name, u->mode | O_NONBLOCK)) < 0) {
+ pa_log_warn("open %s failed (%s)", u->device_name, pa_cstrerror(errno));
+ return -1;
+ }
+
+ pa_log_info("device opened in %s mode.", u->mode == O_WRONLY ? "O_WRONLY" : (u->mode == O_RDONLY ? "O_RDONLY" : "O_RDWR"));
+
+ if (auto_format(u->fd, u->mode, ss) < 0)
+ return -1;
+
+ if (set_buffer(u->fd, u->buffer_size) < 0)
+ return -1;
+
+ u->written_bytes = u->read_bytes = 0;
+ u->play_samples_msw = u->record_samples_msw = 0;
+ u->prev_playback_samples = u->prev_record_samples = 0;
+
+ return u->fd;
+}
+
+static int suspend(struct userdata *u) {
+ pa_assert(u);
+ pa_assert(u->fd >= 0);
+
+ pa_log_info("Suspending...");
+
+ ioctl(u->fd, AUDIO_DRAIN, NULL);
+ pa_close(u->fd);
+ u->fd = -1;
+
+ if (u->rtpoll_item) {
+ pa_rtpoll_item_free(u->rtpoll_item);
+ u->rtpoll_item = NULL;
+ }
+
+ pa_log_info("Device suspended.");
+
+ return 0;
+}
+
+static int unsuspend(struct userdata *u) {
+ pa_assert(u);
+ pa_assert(u->fd < 0);
- *(int*)data = !!info.output_muted;
+ pa_log_info("Resuming...");
+ if (open_audio_device(u, u->sink ? &u->sink->sample_spec : &u->source->sample_spec) < 0)
+ return -1;
+
+ build_pollfd(u);
+
+ pa_log_info("Device resumed.");
+
+ return 0;
+}
+
+static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
+ struct userdata *u = PA_SINK(o)->userdata;
+
+ switch (code) {
+
+ case PA_SINK_MESSAGE_GET_LATENCY:
+ *((pa_usec_t*) data) = sink_get_latency(u, &PA_SINK(o)->sample_spec);
return 0;
- }
- break;
+
+ case PA_SINK_MESSAGE_SET_STATE:
+
+ switch ((pa_sink_state_t) PA_PTR_TO_UINT(data)) {
+
+ case PA_SINK_SUSPENDED:
+
+ pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
+
+ if (!u->source || u->source_suspended) {
+ if (suspend(u) < 0)
+ return -1;
+ }
+ u->sink_suspended = TRUE;
+ break;
+
+ case PA_SINK_IDLE:
+ case PA_SINK_RUNNING:
+
+ if (u->sink->thread_info.state == PA_SINK_SUSPENDED) {
+ if (!u->source || u->source_suspended) {
+ if (unsuspend(u) < 0)
+ return -1;
+ u->sink->get_volume(u->sink);
+ u->sink->get_mute(u->sink);
+ }
+ u->sink_suspended = FALSE;
+ }
+ break;
+
+ case PA_SINK_INVALID_STATE:
+ case PA_SINK_UNLINKED:
+ case PA_SINK_INIT:
+ ;
+ }
+
+ break;
}
return pa_sink_process_msg(o, code, data, offset, chunk);
@@ -202,95 +430,168 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SOURCE(o)->userdata;
- int err;
- audio_info_t info;
switch (code) {
- case PA_SOURCE_MESSAGE_GET_LATENCY: {
- pa_usec_t r = 0;
- if (u->fd) {
- err = ioctl(u->fd, AUDIO_GETINFO, &info);
- pa_assert(err >= 0);
+ case PA_SOURCE_MESSAGE_GET_LATENCY:
+ *((pa_usec_t*) data) = source_get_latency(u, &PA_SOURCE(o)->sample_spec);
+ return 0;
- r += pa_bytes_to_usec(info.record.samples * u->frame_size, &PA_SOURCE(o)->sample_spec);
- r -= pa_bytes_to_usec(u->read_bytes, &PA_SOURCE(o)->sample_spec);
- }
+ case PA_SOURCE_MESSAGE_SET_STATE:
- *((pa_usec_t*) data) = r;
+ switch ((pa_source_state_t) PA_PTR_TO_UINT(data)) {
- return 0;
- }
+ case PA_SOURCE_SUSPENDED:
- case PA_SOURCE_MESSAGE_SET_VOLUME:
- if (u->fd >= 0) {
- AUDIO_INITINFO(&info);
+ pa_assert(PA_SOURCE_IS_OPENED(u->source->thread_info.state));
- info.record.gain = pa_cvolume_avg((pa_cvolume*) data) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
- assert(info.record.gain <= AUDIO_MAX_GAIN);
+ if (!u->sink || u->sink_suspended) {
+ if (suspend(u) < 0)
+ return -1;
+ }
+ u->source_suspended = TRUE;
+ break;
+
+ case PA_SOURCE_IDLE:
+ case PA_SOURCE_RUNNING:
+
+ if (u->source->thread_info.state == PA_SOURCE_SUSPENDED) {
+ if (!u->sink || u->sink_suspended) {
+ if (unsuspend(u) < 0)
+ return -1;
+ u->source->get_volume(u->source);
+ }
+ u->source_suspended = FALSE;
+ }
+ break;
+
+ case PA_SOURCE_UNLINKED:
+ case PA_SOURCE_INIT:
+ case PA_SOURCE_INVALID_STATE:
+ ;
- if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
- if (errno == EINVAL)
- pa_log("AUDIO_SETINFO: Unsupported volume.");
- else
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
- } else {
- return 0;
- }
}
break;
- case PA_SOURCE_MESSAGE_GET_VOLUME:
- if (u->fd >= 0) {
- err = ioctl(u->fd, AUDIO_GETINFO, &info);
- pa_assert(err >= 0);
+ }
- pa_cvolume_set((pa_cvolume*) data, ((pa_cvolume*) data)->channels,
- info.record.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ return pa_source_process_msg(o, code, data, offset, chunk);
+}
- return 0;
- }
- break;
+static void sink_set_volume(pa_sink *s) {
+ struct userdata *u;
+ audio_info_t info;
+
+ pa_assert_se(u = s->userdata);
+
+ if (u->fd >= 0) {
+ AUDIO_INITINFO(&info);
+
+ info.play.gain = pa_cvolume_avg(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ assert(info.play.gain <= AUDIO_MAX_GAIN);
+
+ if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
+ if (errno == EINVAL)
+ pa_log("AUDIO_SETINFO: Unsupported volume.");
+ else
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ }
}
+}
- return pa_source_process_msg(o, code, data, offset, chunk);
+static void sink_get_volume(pa_sink *s) {
+ struct userdata *u;
+ audio_info_t info;
+
+ pa_assert_se(u = s->userdata);
+
+ if (u->fd >= 0) {
+ if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ else
+ pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels,
+ info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ }
}
-static void clear_underflow(struct userdata *u)
-{
+static void source_set_volume(pa_source *s) {
+ struct userdata *u;
audio_info_t info;
- AUDIO_INITINFO(&info);
+ pa_assert_se(u = s->userdata);
+
+ if (u->fd >= 0) {
+ AUDIO_INITINFO(&info);
- info.play.error = 0;
+ info.play.gain = pa_cvolume_avg(&s->virtual_volume) * AUDIO_MAX_GAIN / PA_VOLUME_NORM;
+ assert(info.play.gain <= AUDIO_MAX_GAIN);
- if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0) {
+ if (errno == EINVAL)
+ pa_log("AUDIO_SETINFO: Unsupported volume.");
+ else
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ }
+ }
}
-static void clear_overflow(struct userdata *u)
-{
+static void source_get_volume(pa_source *s) {
+ struct userdata *u;
audio_info_t info;
- AUDIO_INITINFO(&info);
+ pa_assert_se(u = s->userdata);
- info.record.error = 0;
+ if (u->fd >= 0) {
+ if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ else
+ pa_cvolume_set(&s->virtual_volume, s->sample_spec.channels,
+ info.play.gain * PA_VOLUME_NORM / AUDIO_MAX_GAIN);
+ }
+}
- if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+static void sink_set_mute(pa_sink *s) {
+ struct userdata *u = s->userdata;
+ audio_info_t info;
+
+ pa_assert(u);
+
+ if (u->fd >= 0) {
+ AUDIO_INITINFO(&info);
+
+ info.output_muted = !!s->muted;
+
+ if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ }
+}
+
+static void sink_get_mute(pa_sink *s) {
+ struct userdata *u = s->userdata;
+ audio_info_t info;
+
+ pa_assert(u);
+
+ if (u->fd >= 0) {
+ if (ioctl(u->fd, AUDIO_GETINFO, &info) < 0)
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ else
+ s->muted = !!info.output_muted;
+ }
}
static void thread_func(void *userdata) {
struct userdata *u = userdata;
unsigned short revents = 0;
- int ret;
+ int ret, err;
+ audio_info_t info;
pa_assert(u);
pa_log_debug("Thread starting up");
- if (u->core->high_priority)
- pa_make_realtime();
+ if (u->core->realtime_scheduling)
+ pa_make_realtime(u->core->realtime_priority);
pa_thread_mq_install(&u->thread_mq);
pa_rtpoll_install(u->rtpoll);
@@ -298,139 +599,158 @@ static void thread_func(void *userdata) {
for (;;) {
/* Render some data and write it to the dsp */
- if (u->sink && PA_SINK_OPENED(u->sink->thread_info.state)) {
- audio_info_t info;
- int err;
- size_t len;
+ if (u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
+ pa_usec_t xtime0;
+ uint64_t buffered_bytes;
+
+ if (u->sink->thread_info.rewind_requested)
+ pa_sink_process_rewind(u->sink, 0);
err = ioctl(u->fd, AUDIO_GETINFO, &info);
pa_assert(err >= 0);
- /*
- * Since we cannot modify the size of the output buffer we fake it
- * by not filling it more than u->buffer_size.
- */
- len = u->buffer_size;
- len -= u->written_bytes - (info.play.samples * u->frame_size);
-
- /* The sample counter can sometimes go backwards :( */
- if (len > u->buffer_size)
- len = 0;
-
if (info.play.error) {
- pa_log_debug("Solaris buffer underflow!");
- clear_underflow(u);
- }
+ pa_log_debug("buffer under-run!");
- len -= len % u->frame_size;
+ AUDIO_INITINFO(&info);
+ info.play.error = 0;
+ if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
+ }
- while (len) {
+ for (;;) {
void *p;
- ssize_t r;
+ ssize_t w;
+ size_t len;
+
+ /*
+ * Since we cannot modify the size of the output buffer we fake it
+ * by not filling it more than u->buffer_size.
+ */
+ xtime0 = pa_rtclock_usec();
+ buffered_bytes = get_playback_buffered_bytes(u);
+ if (buffered_bytes >= (uint64_t)u->buffer_size)
+ break;
+
+ len = u->buffer_size - buffered_bytes;
+ len -= len % u->frame_size;
- if (!u->memchunk.length)
- pa_sink_render(u->sink, len, &u->memchunk);
+ if (len < u->min_request)
+ break;
- pa_assert(u->memchunk.length);
+ if (u->memchunk.length < len)
+ pa_sink_render(u->sink, u->sink->thread_info.max_request, &u->memchunk);
p = pa_memblock_acquire(u->memchunk.memblock);
- r = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, u->memchunk.length, NULL);
+ w = pa_write(u->fd, (uint8_t*) p + u->memchunk.index, u->memchunk.length, NULL);
pa_memblock_release(u->memchunk.memblock);
- if (r < 0) {
- if (errno == EINTR)
- continue;
- else if (errno != EAGAIN) {
- pa_log("Failed to read data from DSP: %s", pa_cstrerror(errno));
- goto fail;
+ if (w <= 0) {
+ switch (errno) {
+ case EINTR:
+ break;
+ case EAGAIN:
+ u->buffer_size = u->buffer_size * 18 / 25;
+ u->buffer_size -= u->buffer_size % u->frame_size;
+ u->buffer_size = PA_MAX(u->buffer_size, (int32_t)MIN_BUFFER_SIZE);
+ pa_sink_set_max_request(u->sink, u->buffer_size);
+ pa_log("EAGAIN. Buffer size is now %u bytes (%llu buffered)", u->buffer_size, buffered_bytes);
+ break;
+ default:
+ pa_log("Failed to write data to DSP: %s", pa_cstrerror(errno));
+ goto fail;
}
} else {
- pa_assert(r % u->frame_size == 0);
+ pa_assert(w % u->frame_size == 0);
- u->memchunk.index += r;
- u->memchunk.length -= r;
+ pa_mutex_lock(u->written_bytes_lock);
+ u->written_bytes += w;
+ u->memchunk.length -= w;
+ pa_mutex_unlock(u->written_bytes_lock);
+ u->memchunk.index += w;
if (u->memchunk.length <= 0) {
pa_memblock_unref(u->memchunk.memblock);
pa_memchunk_reset(&u->memchunk);
}
-
- len -= r;
- u->written_bytes += r;
}
}
+
+ pa_rtpoll_set_timer_absolute(u->rtpoll, xtime0 + pa_bytes_to_usec(buffered_bytes / 2, &u->sink->sample_spec));
+ } else {
+ pa_rtpoll_set_timer_disabled(u->rtpoll);
}
/* Try to read some data and pass it on to the source driver */
- if (u->source && PA_SOURCE_OPENED(u->source->thread_info.state) && ((revents & POLLIN))) {
+ if (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state) && (revents & POLLIN)) {
pa_memchunk memchunk;
- int err;
- size_t l;
void *p;
ssize_t r;
- audio_info_t info;
+ size_t len;
err = ioctl(u->fd, AUDIO_GETINFO, &info);
pa_assert(err >= 0);
if (info.record.error) {
- pa_log_debug("Solaris buffer overflow!");
- clear_overflow(u);
+ pa_log_debug("buffer overflow!");
+
+ AUDIO_INITINFO(&info);
+ info.record.error = 0;
+ if (ioctl(u->fd, AUDIO_SETINFO, &info) < 0)
+ pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
}
- err = ioctl(u->fd, I_NREAD, &l);
+ err = ioctl(u->fd, I_NREAD, &len);
pa_assert(err >= 0);
- if (l > 0) {
- /* This is to make sure it fits in the memory pool. Also, a page
- should be the most efficient transfer size. */
- if (l > u->page_size)
- l = u->page_size;
-
- memchunk.memblock = pa_memblock_new(u->core->mempool, l);
+ if (len > 0) {
+ memchunk.memblock = pa_memblock_new(u->core->mempool, len);
pa_assert(memchunk.memblock);
p = pa_memblock_acquire(memchunk.memblock);
- r = pa_read(u->fd, p, l, NULL);
+ r = pa_read(u->fd, p, len, NULL);
pa_memblock_release(memchunk.memblock);
if (r < 0) {
pa_memblock_unref(memchunk.memblock);
- if (errno != EAGAIN) {
+ if (errno == EAGAIN)
+ break;
+ else {
pa_log("Failed to read data from DSP: %s", pa_cstrerror(errno));
goto fail;
}
} else {
+ u->read_bytes += r;
+
memchunk.index = 0;
memchunk.length = r;
pa_source_post(u->source, &memchunk);
pa_memblock_unref(memchunk.memblock);
- u->read_bytes += r;
-
revents &= ~POLLIN;
}
}
}
- if (u->fd >= 0) {
+ if (u->rtpoll_item) {
struct pollfd *pollfd;
+ pa_assert(u->fd >= 0);
+
pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
- pollfd->events =
- ((u->source && PA_SOURCE_OPENED(u->source->thread_info.state)) ? POLLIN : 0);
+ pollfd->events = (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state)) ? POLLIN : 0;
}
/* Hmm, nothing to do. Let's sleep */
- if ((ret = pa_rtpoll_run(u->rtpoll, 1)) < 0)
+ if ((ret = pa_rtpoll_run(u->rtpoll, TRUE)) < 0)
goto fail;
if (ret == 0)
goto finish;
- if (u->fd >= 0) {
+ if (u->rtpoll_item) {
struct pollfd *pollfd;
pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
@@ -460,112 +780,29 @@ static void sig_callback(pa_mainloop_api *api, pa_signal_event*e, int sig, void
assert(u);
+ pa_log_debug("caught signal");
+
if (u->sink) {
- pa_sink_get_volume(u->sink);
- pa_sink_get_mute(u->sink);
+ pa_sink_get_volume(u->sink, TRUE);
+ pa_sink_get_mute(u->sink, TRUE);
}
if (u->source)
- pa_source_get_volume(u->source);
-}
-
-static int pa_solaris_auto_format(int fd, int mode, pa_sample_spec *ss) {
- audio_info_t info;
-
- AUDIO_INITINFO(&info);
-
- if (mode != O_RDONLY) {
- info.play.sample_rate = ss->rate;
- info.play.channels = ss->channels;
- switch (ss->format) {
- case PA_SAMPLE_U8:
- info.play.precision = 8;
- info.play.encoding = AUDIO_ENCODING_LINEAR;
- break;
- case PA_SAMPLE_ALAW:
- info.play.precision = 8;
- info.play.encoding = AUDIO_ENCODING_ALAW;
- break;
- case PA_SAMPLE_ULAW:
- info.play.precision = 8;
- info.play.encoding = AUDIO_ENCODING_ULAW;
- break;
- case PA_SAMPLE_S16NE:
- info.play.precision = 16;
- info.play.encoding = AUDIO_ENCODING_LINEAR;
- break;
- default:
- return -1;
- }
- }
-
- if (mode != O_WRONLY) {
- info.record.sample_rate = ss->rate;
- info.record.channels = ss->channels;
- switch (ss->format) {
- case PA_SAMPLE_U8:
- info.record.precision = 8;
- info.record.encoding = AUDIO_ENCODING_LINEAR;
- break;
- case PA_SAMPLE_ALAW:
- info.record.precision = 8;
- info.record.encoding = AUDIO_ENCODING_ALAW;
- break;
- case PA_SAMPLE_ULAW:
- info.record.precision = 8;
- info.record.encoding = AUDIO_ENCODING_ULAW;
- break;
- case PA_SAMPLE_S16NE:
- info.record.precision = 16;
- info.record.encoding = AUDIO_ENCODING_LINEAR;
- break;
- default:
- return -1;
- }
- }
-
- if (ioctl(fd, AUDIO_SETINFO, &info) < 0) {
- if (errno == EINVAL)
- pa_log("AUDIO_SETINFO: Unsupported sample format.");
- else
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
- return -1;
- }
-
- return 0;
-}
-
-static int pa_solaris_set_buffer(int fd, int buffer_size) {
- audio_info_t info;
-
- AUDIO_INITINFO(&info);
-
- info.play.buffer_size = buffer_size;
- info.record.buffer_size = buffer_size;
-
- if (ioctl(fd, AUDIO_SETINFO, &info) < 0) {
- if (errno == EINVAL)
- pa_log("AUDIO_SETINFO: Unsupported buffer size.");
- else
- pa_log("AUDIO_SETINFO: %s", pa_cstrerror(errno));
- return -1;
- }
-
- return 0;
+ pa_source_get_volume(u->source, TRUE);
}
int pa__init(pa_module *m) {
struct userdata *u = NULL;
- const char *p;
- int fd = -1;
- int buffer_size;
- int mode;
- int record = 1, playback = 1;
+ pa_bool_t record = TRUE, playback = TRUE;
pa_sample_spec ss;
pa_channel_map map;
pa_modargs *ma = NULL;
- char *t;
- struct pollfd *pollfd;
+ int fd;
+ pa_sink_new_data sink_new_data;
+ pa_source_new_data source_new_data;
+ char const *name;
+ char *name_buf;
+ pa_bool_t namereg_fail;
pa_assert(m);
@@ -575,7 +812,7 @@ int pa__init(pa_module *m) {
}
if (pa_modargs_get_value_boolean(ma, "record", &record) < 0 || pa_modargs_get_value_boolean(ma, "playback", &playback) < 0) {
- pa_log("record= and playback= expect numeric argument.");
+ pa_log("record= and playback= expect a boolean argument.");
goto fail;
}
@@ -584,97 +821,135 @@ int pa__init(pa_module *m) {
goto fail;
}
- mode = (playback&&record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0));
-
- buffer_size = 16384;
- if (pa_modargs_get_value_s32(ma, "buffer_size", &buffer_size) < 0) {
- pa_log("failed to parse buffer size argument");
+ if (!(u = pa_xnew0(struct userdata, 1)))
goto fail;
- }
+
+ u->sample_counter_lock = pa_mutex_new(FALSE, FALSE);
+ u->written_bytes_lock = pa_mutex_new(FALSE, FALSE);
+
+ /*
+ * For a process (or several processes) to use the same audio device for both
+ * record and playback at the same time, the device's mixer must be enabled.
+ * See mixerctl(1). It may be turned off for playback only or record only.
+ */
+ u->mode = (playback && record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0));
ss = m->core->default_sample_spec;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log("failed to parse sample specification");
goto fail;
}
+ u->frame_size = pa_frame_size(&ss);
- if ((fd = open(p = pa_modargs_get_value(ma, "device", DEFAULT_DEVICE), mode | O_NONBLOCK)) < 0)
+ u->buffer_size = 16384;
+ if (pa_modargs_get_value_s32(ma, "buffer_size", &u->buffer_size) < 0) {
+ pa_log("failed to parse buffer size argument");
goto fail;
-
- pa_log_info("device opened in %s mode.", mode == O_WRONLY ? "O_WRONLY" : (mode == O_RDONLY ? "O_RDONLY" : "O_RDWR"));
-
- if (pa_solaris_auto_format(fd, mode, &ss) < 0)
+ }
+ u->buffer_size -= u->buffer_size % u->frame_size;
+ if (u->buffer_size < (int32_t)MIN_BUFFER_SIZE) {
+ pa_log("supplied buffer size argument is too small");
goto fail;
+ }
+
+ u->device_name = pa_xstrdup(pa_modargs_get_value(ma, "device", DEFAULT_DEVICE));
- if (pa_solaris_set_buffer(fd, buffer_size) < 0)
+ if ((fd = open_audio_device(u, &ss)) < 0)
goto fail;
- u = pa_xmalloc(sizeof(struct userdata));
u->core = m->core;
-
- u->fd = fd;
-
- pa_memchunk_reset(&u->memchunk);
-
- /* We use this to get a reasonable chunk size */
- u->page_size = PA_PAGE_SIZE;
-
- u->frame_size = pa_frame_size(&ss);
- u->buffer_size = buffer_size;
-
- u->written_bytes = 0;
- u->read_bytes = 0;
-
u->module = m;
m->userdata = u;
- pa_thread_mq_init(&u->thread_mq, m->core->mainloop);
+ pa_memchunk_reset(&u->memchunk);
u->rtpoll = pa_rtpoll_new();
- pa_rtpoll_item_new_asyncmsgq(u->rtpoll, PA_RTPOLL_EARLY, u->thread_mq.inq);
+ pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
- pa_rtpoll_set_timer_periodic(u->rtpoll, pa_bytes_to_usec(u->buffer_size / 10, &ss));
+ u->rtpoll_item = NULL;
+ build_pollfd(u);
- u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
- pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
- pollfd->fd = fd;
- pollfd->events = 0;
- pollfd->revents = 0;
+ if (u->mode != O_WRONLY) {
+ name_buf = NULL;
+ namereg_fail = TRUE;
- if (mode != O_WRONLY) {
- u->source = pa_source_new(m->core, __FILE__, pa_modargs_get_value(ma, "source_name", DEFAULT_SOURCE_NAME), 0, &ss, &map);
- pa_assert(u->source);
+ if (!(name = pa_modargs_get_value(ma, "source_name", NULL))) {
+ name = name_buf = pa_sprintf_malloc("solaris_input.%s", pa_path_get_filename(u->device_name));
+ namereg_fail = FALSE;
+ }
+
+ pa_source_new_data_init(&source_new_data);
+ source_new_data.driver = __FILE__;
+ source_new_data.module = m;
+ pa_source_new_data_set_name(&source_new_data, name);
+ source_new_data.namereg_fail = namereg_fail;
+ pa_source_new_data_set_sample_spec(&source_new_data, &ss);
+ pa_source_new_data_set_channel_map(&source_new_data, &map);
+ pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
+ pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_API, "solaris");
+ pa_proplist_setf(source_new_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Solaris PCM source");
+ pa_proplist_sets(source_new_data.proplist, PA_PROP_DEVICE_ACCESS_MODE, "serial");
+ pa_proplist_setf(source_new_data.proplist, PA_PROP_DEVICE_BUFFERING_BUFFER_SIZE, "%lu", (unsigned long) u->buffer_size);
+
+ u->source = pa_source_new(m->core, &source_new_data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|PA_SOURCE_HW_VOLUME_CTRL);
+ pa_source_new_data_done(&source_new_data);
+ pa_xfree(name_buf);
+
+ if (!u->source) {
+ pa_log("Failed to create source object");
+ goto fail;
+ }
u->source->userdata = u;
u->source->parent.process_msg = source_process_msg;
- pa_source_set_module(u->source, m);
- pa_source_set_description(u->source, t = pa_sprintf_malloc("Solaris PCM on '%s'", p));
- pa_xfree(t);
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);
- u->source->flags = PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|PA_SOURCE_HW_VOLUME_CTRL;
- u->source->refresh_volume = 1;
+ u->source->get_volume = source_get_volume;
+ u->source->set_volume = source_set_volume;
+ u->source->refresh_volume = TRUE;
} else
u->source = NULL;
- if (mode != O_RDONLY) {
- u->sink = pa_sink_new(m->core, __FILE__, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME), 0, &ss, &map);
- pa_assert(u->sink);
+ if (u->mode != O_RDONLY) {
+ name_buf = NULL;
+ namereg_fail = TRUE;
+ if (!(name = pa_modargs_get_value(ma, "sink_name", NULL))) {
+ name = name_buf = pa_sprintf_malloc("solaris_output.%s", pa_path_get_filename(u->device_name));
+ namereg_fail = FALSE;
+ }
+
+ pa_sink_new_data_init(&sink_new_data);
+ sink_new_data.driver = __FILE__;
+ sink_new_data.module = m;
+ pa_sink_new_data_set_name(&sink_new_data, name);
+ sink_new_data.namereg_fail = namereg_fail;
+ pa_sink_new_data_set_sample_spec(&sink_new_data, &ss);
+ pa_sink_new_data_set_channel_map(&sink_new_data, &map);
+ pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_STRING, u->device_name);
+ pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_API, "solaris");
+ pa_proplist_setf(sink_new_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Solaris PCM sink");
+ pa_proplist_sets(sink_new_data.proplist, PA_PROP_DEVICE_ACCESS_MODE, "serial");
+
+ u->sink = pa_sink_new(m->core, &sink_new_data, PA_SINK_HARDWARE|PA_SINK_LATENCY|PA_SINK_HW_VOLUME_CTRL|PA_SINK_HW_MUTE_CTRL);
+ pa_sink_new_data_done(&sink_new_data);
+ pa_assert(u->sink);
u->sink->userdata = u;
u->sink->parent.process_msg = sink_process_msg;
- pa_sink_set_module(u->sink, m);
- pa_sink_set_description(u->sink, t = pa_sprintf_malloc("Solaris PCM on '%s'", p));
- pa_xfree(t);
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
- u->sink->flags = PA_SINK_HARDWARE|PA_SINK_LATENCY|PA_SINK_HW_VOLUME_CTRL;
- u->sink->refresh_volume = 1;
- u->sink->refresh_mute = 1;
+ u->sink->get_volume = sink_get_volume;
+ u->sink->set_volume = sink_set_volume;
+ u->sink->get_mute = sink_get_mute;
+ u->sink->set_mute = sink_set_mute;
+ u->sink->refresh_volume = u->sink->refresh_muted = TRUE;
+
+ u->sink->thread_info.max_request = u->buffer_size;
+ u->min_request = pa_usec_to_bytes(PA_USEC_PER_SEC / MAX_RENDER_HZ, &ss);
} else
u->sink = NULL;
@@ -690,17 +965,28 @@ int pa__init(pa_module *m) {
}
/* Read mixer settings */
- if (u->source)
- pa_asyncmsgq_send(u->thread_mq.inq, PA_MSGOBJECT(u->source), PA_SOURCE_MESSAGE_GET_VOLUME, &u->source->volume, 0, NULL);
if (u->sink) {
- pa_asyncmsgq_send(u->thread_mq.inq, PA_MSGOBJECT(u->sink), PA_SINK_MESSAGE_GET_VOLUME, &u->sink->volume, 0, NULL);
- pa_asyncmsgq_send(u->thread_mq.inq, PA_MSGOBJECT(u->sink), PA_SINK_MESSAGE_GET_MUTE, &u->sink->muted, 0, NULL);
- }
+ if (sink_new_data.volume_is_set)
+ u->sink->set_volume(u->sink);
+ else
+ u->sink->get_volume(u->sink);
+
+ if (sink_new_data.muted_is_set)
+ u->sink->set_mute(u->sink);
+ else
+ u->sink->get_mute(u->sink);
- if (u->sink)
pa_sink_put(u->sink);
- if (u->source)
+ }
+
+ if (u->source) {
+ if (source_new_data.volume_is_set)
+ u->source->set_volume(u->source);
+ else
+ u->source->get_volume(u->source);
+
pa_source_put(u->source);
+ }
pa_modargs_free(ma);
@@ -748,7 +1034,7 @@ void pa__done(pa_module *m) {
if (u->source)
pa_source_unref(u->source);
- if (u->memchunk.memblock)
+ if (u->memchunk.memblock)
pa_memblock_unref(u->memchunk.memblock);
if (u->rtpoll_item)
@@ -760,5 +1046,10 @@ void pa__done(pa_module *m) {
if (u->fd >= 0)
close(u->fd);
+ pa_mutex_free(u->written_bytes_lock);
+ pa_mutex_free(u->sample_counter_lock);
+
+ pa_xfree(u->device_name);
+
pa_xfree(u);
}
diff --git a/src/modules/raop/raop_client.c b/src/modules/raop/raop_client.c
index 8e59a57..b3f243c 100644
--- a/src/modules/raop/raop_client.c
+++ b/src/modules/raop/raop_client.c
@@ -51,7 +51,12 @@
#include <pulsecore/macro.h>
#include <pulsecore/strbuf.h>
#include <pulsecore/random.h>
+
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
#include <pulsecore/poll.h>
+#endif
#include "raop_client.h"
#include "rtsp_client.h"
diff --git a/src/modules/rtp/rtsp_client.c b/src/modules/rtp/rtsp_client.c
index b0b8a1e..98db05d 100644
--- a/src/modules/rtp/rtsp_client.c
+++ b/src/modules/rtp/rtsp_client.c
@@ -43,9 +43,14 @@
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
#include <pulsecore/strbuf.h>
-#include <pulsecore/poll.h>
#include <pulsecore/ioline.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <pulsecore/poll.h>
+#endif
+
#include "rtsp_client.h"
struct pa_rtsp_client {
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index a184beb..0d243ee 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -2505,7 +2505,7 @@ char *pa_machine_id(void) {
char *pa_uname_string(void) {
struct utsname u;
- pa_assert_se(uname(&u) == 0);
+ pa_assert_se(uname(&u) >= 0);
return pa_sprintf_malloc("%s %s %s %s", u.sysname, u.machine, u.release, u.version);
}
diff --git a/src/pulsecore/rtclock.c b/src/pulsecore/rtclock.c
index dcbd118..56ab2ef 100644
--- a/src/pulsecore/rtclock.c
+++ b/src/pulsecore/rtclock.c
@@ -27,9 +27,12 @@
#include <stddef.h>
#include <time.h>
#include <sys/time.h>
-#include <sys/prctl.h>
#include <errno.h>
+#ifdef HAVE_SYS_PRCTL_H
+#include <sys/prctl.h>
+#endif
+
#include <pulse/timeval.h>
#include <pulsecore/macro.h>
#include <pulsecore/core-error.h>
commit f3de61edf68c039abf3499463333ad920019f430
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Mar 3 22:26:15 2009 +0100
fix device reservation for system mode
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index c8e12f9..bfe4f3b 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -164,6 +164,9 @@ static int reserve_init(struct userdata *u, const char *dname) {
if (u->reserve)
return 0;
+ if (pa_in_system_mode())
+ return 0;
+
/* We are resuming, try to lock the device */
if (!(rname = pa_alsa_get_reserve_name(dname)))
return 0;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index ed9388e..04cb262 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -162,6 +162,9 @@ static int reserve_init(struct userdata *u, const char *dname) {
if (u->reserve)
return 0;
+ if (pa_in_system_mode())
+ return 0;
+
/* We are resuming, try to lock the device */
if (!(rname = pa_alsa_get_reserve_name(dname)))
return 0;
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 22f0ae0..d5e2cdc 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -310,8 +310,9 @@ int pa__init(pa_module *m) {
pa_snprintf(rname, sizeof(rname), "Audio%i", alsa_card_index);
- if (!(reserve = pa_reserve_wrapper_get(m->core, rname)))
- goto fail;
+ if (!pa_in_system_mode())
+ if (!(reserve = pa_reserve_wrapper_get(m->core, rname)))
+ goto fail;
pa_card_new_data_init(&data);
data.driver = __FILE__;
commit 946d07211ba3ab814183b2112b89e557edb12159
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 02:51:30 2009 +0100
document more closely from which context certain functions may be called
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 298cc88..1133403 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1529,8 +1529,10 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
s->thread_info.state = PA_PTR_TO_UINT(userdata);
- if (s->thread_info.state == PA_SINK_SUSPENDED)
+ if (s->thread_info.state == PA_SINK_SUSPENDED) {
+ s->thread_info.rewind_nbytes = 0;
s->thread_info.rewind_requested = FALSE;
+ }
return 0;
@@ -1730,7 +1732,7 @@ pa_usec_t pa_sink_get_requested_latency(pa_sink *s) {
return usec;
}
-/* Called from IO thread */
+/* Called from IO as well as the main thread -- the latter only before the IO thread started up */
void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
pa_sink_input *i;
void *state = NULL;
@@ -1751,7 +1753,7 @@ void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
pa_source_set_max_rewind(s->monitor_source, s->thread_info.max_rewind);
}
-/* Called from IO thread */
+/* Called from IO as well as the main thread -- the latter only before the IO thread started up */
void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
void *state = NULL;
commit c8abe640406ab6dc28a9a478ab0090207ccfc273
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 02:52:11 2009 +0100
pa_xnew cannot fail -- that's what the x is in the name
diff --git a/src/modules/module-solaris.c b/src/modules/module-solaris.c
index 783c244..995b3c6 100644
--- a/src/modules/module-solaris.c
+++ b/src/modules/module-solaris.c
@@ -821,9 +821,7 @@ int pa__init(pa_module *m) {
goto fail;
}
- if (!(u = pa_xnew0(struct userdata, 1)))
- goto fail;
-
+ u = pa_xnew0(struct userdata, 1);
u->sample_counter_lock = pa_mutex_new(FALSE, FALSE);
u->written_bytes_lock = pa_mutex_new(FALSE, FALSE);
commit 869341729f088f3ec19c39aae5565cfae7f7ea33
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 02:55:34 2009 +0100
various smaller cleanups
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index bfe4f3b..7bf16c3 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1190,17 +1190,11 @@ static int process_rewind(struct userdata *u) {
/* Figure out how much we shall rewind and reset the counter */
rewind_nbytes = u->sink->thread_info.rewind_nbytes;
- u->sink->thread_info.rewind_nbytes = 0;
- if (rewind_nbytes <= 0)
- goto finish;
-
- pa_assert(rewind_nbytes > 0);
pa_log_debug("Requested to rewind %lu bytes.", (unsigned long) rewind_nbytes);
- snd_pcm_hwsync(u->pcm_handle);
- if ((unused = snd_pcm_avail_update(u->pcm_handle)) < 0) {
- pa_log("snd_pcm_avail_update() failed: %s", snd_strerror((int) unused));
+ if (PA_UNLIKELY((unused = pa_alsa_safe_avail(u->pcm_handle, u->hwbuf_size, &u->sink->sample_spec)) < 0)) {
+ pa_log("snd_pcm_avail() failed: %s", snd_strerror((int) unused));
return -1;
}
@@ -1242,12 +1236,8 @@ static int process_rewind(struct userdata *u) {
} else
pa_log_debug("Mhmm, actually there is nothing to rewind.");
-finish:
-
pa_sink_process_rewind(u->sink, 0);
-
return 0;
-
}
static void thread_func(void *userdata) {
@@ -1276,7 +1266,7 @@ static void thread_func(void *userdata) {
int work_done;
pa_usec_t sleep_usec = 0;
- if (u->sink->thread_info.rewind_requested)
+ if (PA_UNLIKELY(u->sink->thread_info.rewind_requested))
if (process_rewind(u) < 0)
goto fail;
@@ -1702,11 +1692,10 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->watermark_step = pa_usec_to_bytes(TSCHED_WATERMARK_STEP_USEC, &u->sink->sample_spec);
}
- u->sink->thread_info.max_rewind = use_tsched ? u->hwbuf_size : 0;
- u->sink->thread_info.max_request = u->hwbuf_size;
-
+ pa_sink_set_max_rewind(u->sink, use_tsched ? u->hwbuf_size : 0);
+ pa_sink_set_max_request(u->sink, u->hwbuf_size);
pa_sink_set_latency_range(u->sink,
- !use_tsched ? pa_bytes_to_usec(u->hwbuf_size, &ss) : (pa_usec_t) -1,
+ use_tsched ? (pa_usec_t) -1 : pa_bytes_to_usec(u->hwbuf_size, &ss),
pa_bytes_to_usec(u->hwbuf_size, &ss));
pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 04cb262..f4acad8 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1545,7 +1545,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
}
pa_source_set_latency_range(u->source,
- !use_tsched ? pa_bytes_to_usec(u->hwbuf_size, &ss) : (pa_usec_t) -1,
+ use_tsched ? (pa_usec_t) -1 : pa_bytes_to_usec(u->hwbuf_size, &ss),
pa_bytes_to_usec(u->hwbuf_size, &ss));
pa_log_info("Using %u fragments of size %lu bytes, buffer time is %0.2fms",
commit d09287d211164a93bcbb66839998fc64bad746ce
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 04:00:00 2009 +0100
Fix a NULL pointer access when sutting down esound/simple connections
If a connection is unlinked make sure the process_msg function doesn't
crash when a message is received afterwards.
Closes #463.
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index cac4e36..2b80c65 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -1290,6 +1290,9 @@ static int connection_process_msg(pa_msgobject *o, int code, void*userdata, int6
connection *c = CONNECTION(o);
connection_assert_ref(c);
+ if (!c->protocol)
+ return -1;
+
switch (code) {
case CONNECTION_MESSAGE_REQUEST_DATA:
do_work(c);
diff --git a/src/pulsecore/protocol-simple.c b/src/pulsecore/protocol-simple.c
index b43245a..44fe597 100644
--- a/src/pulsecore/protocol-simple.c
+++ b/src/pulsecore/protocol-simple.c
@@ -283,6 +283,9 @@ static int connection_process_msg(pa_msgobject *o, int code, void*userdata, int6
connection *c = CONNECTION(o);
connection_assert_ref(c);
+ if (!c->protocol)
+ return -1;
+
switch (code) {
case CONNECTION_MESSAGE_REQUEST_DATA:
do_work(c);
commit bffa8be8cd208fbc4d3cd44c34be47e9e47b086f
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 05:25:41 2009 +0100
Don't allow suspending of monitor sources.
Closes #499
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 5277716..f946366 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -424,6 +424,9 @@ int pa_source_suspend(pa_source *s, pa_bool_t suspend) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ if (s->monitor_of)
+ return -PA_ERR_NOTSUPPORTED;
+
if (suspend)
return source_set_state(s, PA_SOURCE_SUSPENDED);
else
commit ecbc320a4c219b40795e0462de6f37d610003c88
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 05:27:14 2009 +0100
make suspend state of monitor source follow the suspend state of the sink it belongs to
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 1133403..ed68dd8 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -326,6 +326,9 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
pa_sink_input_kill(i);
else if (i->suspend)
i->suspend(i, state == PA_SINK_SUSPENDED);
+
+ if (s->monitor_source)
+ pa_source_sync_suspend(s->monitor_source);
}
return 0;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index f946366..476cb55 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -434,6 +434,24 @@ int pa_source_suspend(pa_source *s, pa_bool_t suspend) {
}
/* Called from main context */
+int pa_source_sync_suspend(pa_source *s) {
+ pa_sink_state_t state;
+
+ pa_source_assert_ref(s);
+ pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert(s->monitor_of);
+
+ state = pa_sink_get_state(s->monitor_of);
+
+ if (state == PA_SINK_SUSPENDED)
+ return source_set_state(s, PA_SOURCE_SUSPENDED);
+
+ pa_assert(PA_SINK_IS_OPENED(state));
+
+ return source_set_state(s, pa_source_used_by(s) ? PA_SOURCE_RUNNING : PA_SOURCE_IDLE);
+}
+
+/* Called from main context */
pa_queue *pa_source_move_all_start(pa_source *s) {
pa_queue *q;
pa_source_output *o, *n;
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 2aac25f..26471de 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -212,6 +212,8 @@ void pa_source_attach(pa_source *s);
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume);
+int pa_source_sync_suspend(pa_source *s);
+
/*** May be called by everyone, from main context */
/* The returned value is supposed to be in the time domain of the sound card! */
commit 341f44fa24dfff910c34e0cd8c4819e88231cff6
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 05:27:49 2009 +0100
fix handling of _suspend_all(), return first failure error code
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index ed68dd8..667ae76 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1605,8 +1605,12 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend) {
pa_core_assert_ref(c);
- for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx)))
- ret -= pa_sink_suspend(sink, suspend) < 0;
+ for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx))) {
+ int r;
+
+ if ((r = pa_sink_suspend(sink, suspend)) < 0)
+ ret = r;
+ }
return ret;
}
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 476cb55..cc6dfc4 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -955,8 +955,15 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend) {
pa_core_assert_ref(c);
- for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx)))
- ret -= pa_source_suspend(source, suspend) < 0;
+ for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx))) {
+ int r;
+
+ if (source->monitor_of)
+ continue;
+
+ if ((r = pa_source_suspend(source, suspend)) < 0)
+ ret = r;
+ }
return ret;
}
commit 0dd8a3306f552c5f9d5fa69635df617ecf503b2f
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 05:29:09 2009 +0100
handle negative error codes
diff --git a/src/pulse/error.c b/src/pulse/error.c
index 3f2e70e..9551d98 100644
--- a/src/pulse/error.c
+++ b/src/pulse/error.c
@@ -68,7 +68,10 @@ const char*pa_strerror(int error) {
pa_init_i18n();
- if (error < 0 || error >= PA_ERR_MAX)
+ if (error < 0)
+ error = -error;
+
+ if (error >= PA_ERR_MAX)
return NULL;
return _(errortab[error]);
commit ec1c92347da686de0a4d8cd0886488a320e3d59f
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 05:30:28 2009 +0100
print error code when suspend/resume fails
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 334d05d..b5f7e7f 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -32,6 +32,7 @@
#include <ltdl.h>
#include <pulse/xmalloc.h>
+#include <pulse/error.h>
#include <pulsecore/module.h>
#include <pulsecore/sink.h>
@@ -1236,7 +1237,7 @@ static int pa_cli_command_move_source_output(pa_core *c, pa_tokenizer *t, pa_str
static int pa_cli_command_suspend_sink(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
const char *n, *m;
pa_sink *sink;
- int suspend;
+ int suspend, r;
pa_core_assert_ref(c);
pa_assert(t);
@@ -1263,14 +1264,16 @@ static int pa_cli_command_suspend_sink(pa_core *c, pa_tokenizer *t, pa_strbuf *b
return -1;
}
- pa_sink_suspend(sink, suspend);
+ if ((r = pa_sink_suspend(sink, suspend)) < 0)
+ pa_strbuf_printf(buf, "Failed to resume/suspend sink: %s\n", pa_strerror(r));
+
return 0;
}
static int pa_cli_command_suspend_source(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
const char *n, *m;
pa_source *source;
- int suspend;
+ int suspend, r;
pa_core_assert_ref(c);
pa_assert(t);
@@ -1297,14 +1300,15 @@ static int pa_cli_command_suspend_source(pa_core *c, pa_tokenizer *t, pa_strbuf
return -1;
}
- pa_source_suspend(source, suspend);
+ if ((r = pa_source_suspend(source, suspend)) < 0)
+ pa_strbuf_printf(buf, "Failed to resume/suspend source: %s\n", pa_strerror(r));
+
return 0;
}
static int pa_cli_command_suspend(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
const char *m;
- int suspend;
- int ret;
+ int suspend, r;
pa_core_assert_ref(c);
pa_assert(t);
@@ -1321,12 +1325,11 @@ static int pa_cli_command_suspend(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, p
return -1;
}
- ret = - (pa_sink_suspend_all(c, suspend) < 0);
- if (pa_source_suspend_all(c, suspend) < 0)
- ret = -1;
+ if ((r = pa_sink_suspend_all(c, suspend)) < 0)
+ pa_strbuf_printf(buf, "Failed to resume/suspend all sinks: %s\n", pa_strerror(r));
- if (ret < 0)
- pa_strbuf_puts(buf, "Failed to resume/suspend all sinks/sources.\n");
+ if ((r = pa_source_suspend_all(c, suspend)) < 0)
+ pa_strbuf_printf(buf, "Failed to resume/suspend all sources: %s\n", pa_strerror(r));
return 0;
}
commit 656fc6660fac6ad4524fd2b679cbd35c69033d3b
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 05:31:53 2009 +0100
never try to suspend monitor sources, suspend the sinks they belong to instead
diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
index 945fd09..7e17f8f 100644
--- a/src/modules/module-suspend-on-idle.c
+++ b/src/modules/module-suspend-on-idle.c
@@ -149,7 +149,12 @@ static pa_hook_result_t source_output_fixate_hook_cb(pa_core *c, pa_source_outpu
pa_assert(data);
pa_assert(u);
- if ((d = pa_hashmap_get(u->device_infos, data->source)))
+ if (data->source->monitor_of)
+ d = pa_hashmap_get(u->device_infos, data->source->monitor_of);
+ else
+ d = pa_hashmap_get(u->device_infos, data->source);
+
+ if (d)
resume(d);
return PA_HOOK_OK;
@@ -173,6 +178,8 @@ static pa_hook_result_t sink_input_unlink_hook_cb(pa_core *c, pa_sink_input *s,
}
static pa_hook_result_t source_output_unlink_hook_cb(pa_core *c, pa_source_output *s, struct userdata *u) {
+ struct device_info *d = NULL;
+
pa_assert(c);
pa_source_output_assert_ref(s);
pa_assert(u);
@@ -180,12 +187,17 @@ static pa_hook_result_t source_output_unlink_hook_cb(pa_core *c, pa_source_outpu
if (!s->source)
return PA_HOOK_OK;
- if (pa_source_check_suspend(s->source) <= 0) {
- struct device_info *d;
- if ((d = pa_hashmap_get(u->device_infos, s->source)))
- restart(d);
+ if (s->source->monitor_of) {
+ if (pa_sink_check_suspend(s->source->monitor_of) <= 0)
+ d = pa_hashmap_get(u->device_infos, s->source->monitor_of);
+ } else {
+ if (pa_source_check_suspend(s->source) <= 0)
+ d = pa_hashmap_get(u->device_infos, s->source);
}
+ if (d)
+ restart(d);
+
return PA_HOOK_OK;
}
@@ -217,15 +229,22 @@ static pa_hook_result_t sink_input_move_finish_hook_cb(pa_core *c, pa_sink_input
}
static pa_hook_result_t source_output_move_start_hook_cb(pa_core *c, pa_source_output *s, struct userdata *u) {
- struct device_info *d;
+ struct device_info *d = NULL;
pa_assert(c);
pa_source_output_assert_ref(s);
pa_assert(u);
- if (pa_source_check_suspend(s->source) <= 1)
- if ((d = pa_hashmap_get(u->device_infos, s->source)))
- restart(d);
+ if (s->source->monitor_of) {
+ if (pa_sink_check_suspend(s->source->monitor_of) <= 1)
+ d = pa_hashmap_get(u->device_infos, s->source->monitor_of);
+ } else {
+ if (pa_source_check_suspend(s->source) <= 1)
+ d = pa_hashmap_get(u->device_infos, s->source);
+ }
+
+ if (d)
+ restart(d);
return PA_HOOK_OK;
}
@@ -237,7 +256,12 @@ static pa_hook_result_t source_output_move_finish_hook_cb(pa_core *c, pa_source_
pa_source_output_assert_ref(s);
pa_assert(u);
- if ((d = pa_hashmap_get(u->device_infos, s->source)))
+ if (s->source->monitor_of)
+ d = pa_hashmap_get(u->device_infos, s->source->monitor_of);
+ else
+ d = pa_hashmap_get(u->device_infos, s->source);
+
+ if (d)
resume(d);
return PA_HOOK_OK;
@@ -259,16 +283,25 @@ static pa_hook_result_t sink_input_state_changed_hook_cb(pa_core *c, pa_sink_inp
}
static pa_hook_result_t source_output_state_changed_hook_cb(pa_core *c, pa_source_output *s, struct userdata *u) {
- struct device_info *d;
pa_source_output_state_t state;
+
pa_assert(c);
pa_source_output_assert_ref(s);
pa_assert(u);
state = pa_source_output_get_state(s);
- if (state == PA_SOURCE_OUTPUT_RUNNING)
- if ((d = pa_hashmap_get(u->device_infos, s->source)))
+
+ if (state == PA_SOURCE_OUTPUT_RUNNING) {
+ struct device_info *d;
+
+ if (s->source->monitor_of)
+ d = pa_hashmap_get(u->device_infos, s->source->monitor_of);
+ else
+ d = pa_hashmap_get(u->device_infos, s->source);
+
+ if (d)
resume(d);
+ }
return PA_HOOK_OK;
}
@@ -285,6 +318,10 @@ static pa_hook_result_t device_new_hook_cb(pa_core *c, pa_object *o, struct user
source = pa_source_isinstance(o) ? PA_SOURCE(o) : NULL;
sink = pa_sink_isinstance(o) ? PA_SINK(o) : NULL;
+ /* Never suspend monitors */
+ if (source && source->monitor_of)
+ return PA_HOOK_OK;
+
pa_assert(source || sink);
d = pa_xnew(struct device_info, 1);
commit fa736887f4da324fd8d34003ff0336430aa251ec
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Wed Feb 25 14:31:29 2009 +0200
bluetooth: hsp case, check l for appropriate error message
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 72cf208..39a4a3b 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -921,7 +921,7 @@ static int hsp_process_push(struct userdata *u) {
if (l < 0 && errno == EINTR)
continue;
else {
- pa_log_error("Failed to read data from SCO socket: %s", ret < 0 ? pa_cstrerror(errno) : "EOF");
+ pa_log_error("Failed to read data from SCO socket: %s", l < 0 ? pa_cstrerror(errno) : "EOF");
ret = -1;
break;
}
commit 683548e8bce8079b0ac432dce13e13c2ac9f9d98
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Fri Feb 27 00:13:54 2009 +0200
bluetooth: service_fd could be 0
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 39a4a3b..7c234ec 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1363,7 +1363,7 @@ static void sco_over_pcm_state_update(struct userdata *u) {
if (PA_SINK_IS_OPENED(pa_sink_get_state(u->hsp.sco_sink)) ||
PA_SOURCE_IS_OPENED(pa_source_get_state(u->hsp.sco_source))) {
- if (u->service_fd > 0)
+ if (u->service_fd >= 0)
return;
pa_log_debug("Resuming SCO over PCM");
@@ -1372,7 +1372,7 @@ static void sco_over_pcm_state_update(struct userdata *u) {
} else {
- if (u->service_fd <= 0)
+ if (u->service_fd < 0)
return;
pa_log_debug("Closing SCO over PCM");
commit 7a8be7f91e775f48cb1020e8f7a2ea39db07ad69
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Wed Mar 4 16:38:02 2009 +0200
bluetooth: don't init profile when off
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 7c234ec..495bc82 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1559,6 +1559,7 @@ static int setup_bt(struct userdata *u) {
static int init_profile(struct userdata *u) {
int r = 0;
pa_assert(u);
+ pa_assert(u->profile != PROFILE_OFF);
if (setup_bt(u) < 0)
return -1;
@@ -1688,7 +1689,9 @@ static int card_set_profile(pa_card *c, pa_card_profile *new_profile) {
u->sample_spec = u->requested_sample_spec;
init_bt(u);
- init_profile(u);
+
+ if (u->profile != PROFILE_OFF)
+ init_profile(u);
if (u->sink || u->source)
start_thread(u);
@@ -1909,8 +1912,9 @@ int pa__init(pa_module* m) {
if (init_bt(u) < 0)
goto fail;
- if (init_profile(u) < 0)
- goto fail;
+ if (u->profile != PROFILE_OFF)
+ if (init_profile(u) < 0)
+ goto fail;
/* if (u->path) { */
/* DBusError err; */
@@ -1948,8 +1952,9 @@ int pa__init(pa_module* m) {
/* } */
/* } */
- if (start_thread(u) < 0)
- goto fail;
+ if (u->sink || u->source)
+ if (start_thread(u) < 0)
+ goto fail;
return 0;
commit 6427c70a851709ac12489808159a89e8498c8230
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 18:37:14 2009 +0100
try more things to get a proper icon for sinks/sources
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 667ae76..ff8700c 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1902,7 +1902,7 @@ size_t pa_sink_get_max_request(pa_sink *s) {
/* Called from main context */
pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
- const char *ff, *t = NULL, *s = "", *profile, *bus;
+ const char *ff, *c, *t = NULL, *s = "", *profile, *bus;
pa_assert(p);
@@ -1919,8 +1919,15 @@ pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
t = "computer";
else if (pa_streq(ff, "handset"))
t = "phone";
+ else if (pa_streq(ff, "portable"))
+ t = "multimedia-player";
}
+ if (!t)
+ if ((c = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS)))
+ if (pa_streq(c, "modem"))
+ t = "modem";
+
if (!t) {
if (is_sink)
t = "audio-card";
@@ -1957,6 +1964,12 @@ pa_bool_t pa_device_init_description(pa_proplist *p) {
return TRUE;
}
+ if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS)))
+ if (pa_streq(s, "modem")) {
+ pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, _("Modem"));
+ return TRUE;
+ }
+
if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_PRODUCT_NAME))) {
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, s);
return TRUE;
commit 3dd8800e6d0ab1f11e981d368ec2bef38c88ce99
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 22:07:41 2009 +0100
fix typo in FOREIGN_CFLAGS
diff --git a/src/Makefile.am b/src/Makefile.am
index 9f2fa02..a70a19a 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -86,7 +86,7 @@ AM_LDFLAGS+=-Wl,--export-all-symbols
WINSOCK_LIBS=-lwsock32 -lws2_32 -lwininet
endif
-FOREIGN_CLFGAS = -w
+FOREIGN_CFLAGS = -w
MODULE_LDFLAGS = -module -disable-static -avoid-version
###################################
@@ -818,7 +818,7 @@ noinst_LTLIBRARIES = libpulsecore-foreign.la
libpulsecore_foreign_la_SOURCES = \
pulsecore/ffmpeg/resample2.c pulsecore/ffmpeg/avcodec.h pulsecore/ffmpeg/dsputil.h
-libpulsecore_foreign_la_CFLAGS = $(AM_CFLAGS) -w
+libpulsecore_foreign_la_CFLAGS = $(AM_CFLAGS) $(FOREIGN_CFLAGS)
###################################
# Plug-in support libraries #
commit dcee8888650583abd106f818ee56d5dff9028bba
Merge: 3dd8800... 656fc66...
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Mar 4 22:07:56 2009 +0100
Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
commit 9d29b96ac08c2762b27f6b191ec5807ee3ce58e7
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Mar 5 04:32:16 2009 +0100
make interpol test more interesting by corking/uncorking multiple times
diff --git a/src/tests/interpol-test.c b/src/tests/interpol-test.c
index 5f7ebb7..dd24e82 100644
--- a/src/tests/interpol-test.c
+++ b/src/tests/interpol-test.c
@@ -107,6 +107,7 @@ int main(int argc, char *argv[]) {
int k, r;
struct timeval start, last_info = { 0, 0 };
pa_usec_t old_t = 0, old_rtc = 0;
+ pa_bool_t corked = FALSE;
playback = argc <= 1 || !pa_streq(argv[1], "-r");
@@ -129,7 +130,7 @@ int main(int argc, char *argv[]) {
r = pa_threaded_mainloop_start(m);
assert(r >= 0);
- for (k = 0; k < 5000; k++) {
+ for (k = 0; k < 20000; k++) {
pa_bool_t success = FALSE, changed = FALSE;
pa_usec_t t, rtc;
struct timeval now, tv;
@@ -158,6 +159,8 @@ int main(int argc, char *argv[]) {
pa_gettimeofday(&now);
if (success) {
+ pa_bool_t cork_now;
+
rtc = pa_timeval_diff(&now, &start);
printf("%i\t%llu\t%llu\t%llu\t%llu\t%u\t%u\n", k,
(unsigned long long) rtc,
@@ -170,6 +173,18 @@ int main(int argc, char *argv[]) {
fflush(stdout);
old_t = t;
old_rtc = rtc;
+
+ cork_now = (rtc / (2*PA_USEC_PER_SEC)) % 2 == 1;
+
+ if (corked != cork_now) {
+ pa_threaded_mainloop_lock(m);
+ pa_operation_unref(pa_stream_cork(stream, cork_now, NULL, NULL));
+ pa_threaded_mainloop_unlock(m);
+
+ pa_log(cork_now ? "Corking" : "Uncorking");
+
+ corked = cork_now;
+ }
}
/* Spin loop, ugly but normal usleep() is just too badly grained */
commit 3122008704ad07fe4982de0e642576ca7613d7bf
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Mar 5 04:33:40 2009 +0100
try to detect when stupid clients forks and refuse all service from then on
diff --git a/src/Makefile.am b/src/Makefile.am
index aa190a4..675431c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -540,6 +540,7 @@ lib_LTLIBRARIES = \
libpulsecommon_ at PA_MAJORMINORMICRO@_la_SOURCES = \
pulse/client-conf.c pulse/client-conf.h \
pulse/i18n.c pulse/i18n.h \
+ pulse/fork-detect.c pulse/fork-detect.h \
pulsecore/atomic.h \
pulsecore/authkey.c pulsecore/authkey.h \
pulsecore/conf-parser.c pulsecore/conf-parser.h \
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 1284153..00dffc2 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -74,6 +74,7 @@
#include "internal.h"
#include "client-conf.h"
+#include "fork-detect.h"
#ifdef HAVE_X11
#include "client-conf-x11.h"
@@ -127,6 +128,9 @@ pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *
pa_assert(mainloop);
+ if (pa_detect_fork())
+ return NULL;
+
pa_init_i18n();
c = pa_xnew(pa_context, 1);
@@ -822,6 +826,7 @@ int pa_context_connect(
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(c, c->state == PA_CONTEXT_UNCONNECTED, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(c, !(flags & ~PA_CONTEXT_NOAUTOSPAWN), PA_ERR_INVALID);
PA_CHECK_VALIDITY(c, !server || *server, PA_ERR_INVALID);
@@ -894,6 +899,9 @@ void pa_context_disconnect(pa_context *c) {
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (PA_CONTEXT_IS_GOOD(c->state))
pa_context_set_state(c, PA_CONTEXT_TERMINATED);
}
@@ -916,6 +924,9 @@ void pa_context_set_state_callback(pa_context *c, pa_context_notify_cb_t cb, voi
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (c->state == PA_CONTEXT_TERMINATED || c->state == PA_CONTEXT_FAILED)
return;
@@ -927,6 +938,9 @@ void pa_context_set_event_callback(pa_context *c, pa_context_event_cb_t cb, void
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (c->state == PA_CONTEXT_TERMINATED || c->state == PA_CONTEXT_FAILED)
return;
@@ -938,6 +952,7 @@ int pa_context_is_pending(pa_context *c) {
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(c, PA_CONTEXT_IS_GOOD(c->state), PA_ERR_BADSTATE);
return (c->pstream && pa_pstream_is_pending(c->pstream)) ||
@@ -994,6 +1009,7 @@ pa_operation* pa_context_drain(pa_context *c, pa_context_notify_cb_t cb, void *u
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, pa_context_is_pending(c), PA_ERR_BADSTATE);
@@ -1042,6 +1058,7 @@ pa_operation* pa_context_send_simple_command(pa_context *c, uint32_t command, pa
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, cb, userdata);
@@ -1068,6 +1085,7 @@ pa_operation* pa_context_set_default_sink(pa_context *c, const char *name, pa_co
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -1087,6 +1105,7 @@ pa_operation* pa_context_set_default_source(pa_context *c, const char *name, pa_
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -1102,6 +1121,7 @@ int pa_context_is_local(pa_context *c) {
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(c, !pa_detect_fork(), PA_ERR_FORKED, -1);
PA_CHECK_VALIDITY_RETURN_ANY(c, PA_CONTEXT_IS_GOOD(c->state), PA_ERR_BADSTATE, -1);
return !!c->is_local;
@@ -1114,6 +1134,7 @@ pa_operation* pa_context_set_name(pa_context *c, const char *name, pa_context_su
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(name);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
if (c->version >= 13) {
@@ -1144,8 +1165,8 @@ const char* pa_context_get_server(pa_context *c) {
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
- if (!c->server)
- return NULL;
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, c->server, PA_ERR_NOENTITY);
if (*c->server == '{') {
char *e = strchr(c->server+1, '}');
@@ -1163,6 +1184,7 @@ uint32_t pa_context_get_server_protocol_version(pa_context *c) {
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(c, !pa_detect_fork(), PA_ERR_FORKED, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(c, PA_CONTEXT_IS_GOOD(c->state), PA_ERR_BADSTATE, PA_INVALID_INDEX);
return c->version;
@@ -1185,6 +1207,7 @@ uint32_t pa_context_get_index(pa_context *c) {
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(c, !pa_detect_fork(), PA_ERR_FORKED, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(c, c->version >= 13, PA_ERR_NOTSUPPORTED, PA_INVALID_INDEX);
@@ -1199,6 +1222,7 @@ pa_operation *pa_context_proplist_update(pa_context *c, pa_update_mode_t mode, p
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, mode == PA_UPDATE_SET || mode == PA_UPDATE_MERGE || mode == PA_UPDATE_REPLACE, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 13, PA_ERR_NOTSUPPORTED);
@@ -1227,6 +1251,7 @@ pa_operation *pa_context_proplist_remove(pa_context *c, const char *const keys[]
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, keys && keys[0], PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 13, PA_ERR_NOTSUPPORTED);
diff --git a/src/pulse/def.h b/src/pulse/def.h
index 7f3a0c5..3629aab 100644
--- a/src/pulse/def.h
+++ b/src/pulse/def.h
@@ -389,6 +389,7 @@ enum {
PA_ERR_NOEXTENSION, /**< Extension does not exist. \since 0.9.12 */
PA_ERR_OBSOLETE, /**< Obsolete functionality. \since 0.9.15 */
PA_ERR_NOTIMPLEMENTED, /**< Missing implementation. \since 0.9.15 */
+ PA_ERR_FORKED, /**< The caler forked without calling execve() and tried to reuse the context. \since 0.9.15 */
PA_ERR_MAX /**< Not really an error but the first invalid error code */
};
@@ -417,6 +418,7 @@ enum {
#define PA_ERR_NOEXTENSION PA_ERR_NOEXTENSION
#define PA_ERR_OBSOLETE PA_ERR_OBSOLETE
#define PA_ERR_NOTIMPLEMENTED PA_ERR_NOTIMPLEMENTED
+#define PA_ERR_FORKED PA_ERR_FORKED
#define PA_ERR_MAX PA_ERR_MAX
/** \endcond */
diff --git a/src/pulse/error.c b/src/pulse/error.c
index 9551d98..93a13fc 100644
--- a/src/pulse/error.c
+++ b/src/pulse/error.c
@@ -63,7 +63,8 @@ const char*pa_strerror(int error) {
[PA_ERR_UNKNOWN] = N_("Unknown error code"),
[PA_ERR_NOEXTENSION] = N_("No such extension"),
[PA_ERR_OBSOLETE] = N_("Obsolete functionality"),
- [PA_ERR_NOTIMPLEMENTED] = N_("Missing implementation")
+ [PA_ERR_NOTIMPLEMENTED] = N_("Missing implementation"),
+ [PA_ERR_FORKED] = N_("Client forked")
};
pa_init_i18n();
diff --git a/src/pulse/ext-stream-restore.c b/src/pulse/ext-stream-restore.c
index 809c6a4..63c911f 100644
--- a/src/pulse/ext-stream-restore.c
+++ b/src/pulse/ext-stream-restore.c
@@ -31,6 +31,7 @@
#include "internal.h"
#include "operation.h"
+#include "fork-detect.h"
#include "ext-stream-restore.h"
@@ -87,6 +88,7 @@ pa_operation *pa_ext_stream_restore_test(
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
@@ -167,6 +169,7 @@ pa_operation *pa_ext_stream_restore_read(
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
@@ -200,6 +203,7 @@ pa_operation *pa_ext_stream_restore_write(
pa_assert(mode == PA_UPDATE_MERGE || mode == PA_UPDATE_REPLACE || mode == PA_UPDATE_SET);
pa_assert(data);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
@@ -262,6 +266,7 @@ pa_operation *pa_ext_stream_restore_delete(
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(s);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
@@ -310,6 +315,7 @@ pa_operation *pa_ext_stream_restore_subscribe(
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 14, PA_ERR_NOTSUPPORTED);
@@ -334,6 +340,9 @@ void pa_ext_stream_restore_set_subscribe_cb(
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ if (pa_detect_fork())
+ return;
+
c->ext_stream_restore.callback = cb;
c->ext_stream_restore.userdata = userdata;
}
diff --git a/src/pulse/fork-detect.c b/src/pulse/fork-detect.c
new file mode 100644
index 0000000..f10fc02
--- /dev/null
+++ b/src/pulse/fork-detect.c
@@ -0,0 +1,59 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 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.1 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.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <unistd.h>
+
+#include <pulsecore/atomic.h>
+#include <pulsecore/macro.h>
+
+#include "fork-detect.h"
+
+int pa_detect_fork(void) {
+ static pa_atomic_t pid = PA_ATOMIC_INIT((int) -1);
+
+ /* Some really stupid applications (Hey, vim, that means you!)
+ * love to fork after initializing
+ * gtk/libcanberra/pulseaudio. This is really bad style. We
+ * however have to deal with this cleanly, so we try to detect the
+ * forks making sure all our calls fail cleanly after the fork. */
+
+ pa_assert(sizeof(pa_atomic_t) >= sizeof(pid_t));
+
+ for (;;) {
+ pid_t stored_pid = (pid_t) pa_atomic_load(&pid);
+
+ /* First let's check whether the current pid matches the stored one */
+ if (stored_pid == getpid())
+ return FALSE;
+
+ /* Does it contain a different PID than ours? Then the process got forked. */
+ if ((int) stored_pid != (int) -1)
+ return TRUE;
+
+ /* Ok, it still contains no PID, then store it */
+ if (pa_atomic_cmpxchg(&pid, (int) -1, (int) getpid()))
+ return FALSE;
+ }
+}
diff --git a/src/pulse/fork-detect.h b/src/pulse/fork-detect.h
new file mode 100644
index 0000000..649d981
--- /dev/null
+++ b/src/pulse/fork-detect.h
@@ -0,0 +1,27 @@
+#ifndef fooforkdetecthfoo
+#define fooforkdetecthfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 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.1 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.
+***/
+
+int pa_detect_fork(void);
+
+#endif
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index 847ead0..ac8a11a 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -35,6 +35,7 @@
#include <pulsecore/pstream-util.h>
#include "internal.h"
+#include "fork-detect.h"
#include "introspect.h"
@@ -232,6 +233,7 @@ pa_operation* pa_context_get_sink_info_by_index(pa_context *c, uint32_t idx, pa_
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -254,6 +256,7 @@ pa_operation* pa_context_get_sink_info_by_name(pa_context *c, const char *name,
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
@@ -365,6 +368,7 @@ pa_operation* pa_context_get_source_info_by_index(pa_context *c, uint32_t idx, p
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -387,6 +391,7 @@ pa_operation* pa_context_get_source_info_by_name(pa_context *c, const char *name
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
@@ -466,6 +471,7 @@ pa_operation* pa_context_get_client_info(pa_context *c, uint32_t idx, pa_client_
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -590,6 +596,7 @@ pa_operation* pa_context_get_card_info_by_index(pa_context *c, uint32_t idx, pa_
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15, PA_ERR_NOTSUPPORTED);
@@ -614,6 +621,7 @@ pa_operation* pa_context_get_card_info_by_name(pa_context *c, const char*name, p
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15, PA_ERR_NOTSUPPORTED);
@@ -641,6 +649,7 @@ pa_operation* pa_context_set_card_profile_by_index(pa_context *c, uint32_t idx,
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15, PA_ERR_NOTSUPPORTED);
@@ -665,6 +674,7 @@ pa_operation* pa_context_set_card_profile_by_name(pa_context *c, const char *nam
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15, PA_ERR_NOTSUPPORTED);
@@ -748,6 +758,7 @@ pa_operation* pa_context_get_module_info(pa_context *c, uint32_t idx, pa_module_
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -842,6 +853,7 @@ pa_operation* pa_context_get_sink_input_info(pa_context *c, uint32_t idx, pa_sin
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -931,6 +943,7 @@ pa_operation* pa_context_get_source_output_info(pa_context *c, uint32_t idx, pa_
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -959,6 +972,7 @@ pa_operation* pa_context_set_sink_volume_by_index(pa_context *c, uint32_t idx, c
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(volume);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, pa_cvolume_valid(volume), PA_ERR_INVALID);
@@ -984,6 +998,7 @@ pa_operation* pa_context_set_sink_volume_by_name(pa_context *c, const char *name
pa_assert(name);
pa_assert(volume);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, pa_cvolume_valid(volume), PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
@@ -1008,6 +1023,7 @@ pa_operation* pa_context_set_sink_mute_by_index(pa_context *c, uint32_t idx, int
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -1031,6 +1047,7 @@ pa_operation* pa_context_set_sink_mute_by_name(pa_context *c, const char *name,
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(name);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
@@ -1055,6 +1072,7 @@ pa_operation* pa_context_set_sink_input_volume(pa_context *c, uint32_t idx, cons
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(volume);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, pa_cvolume_valid(volume), PA_ERR_INVALID);
@@ -1078,6 +1096,7 @@ pa_operation* pa_context_set_sink_input_mute(pa_context *c, uint32_t idx, int mu
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 11, PA_ERR_NOTSUPPORTED);
@@ -1102,6 +1121,7 @@ pa_operation* pa_context_set_source_volume_by_index(pa_context *c, uint32_t idx,
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(volume);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, pa_cvolume_valid(volume), PA_ERR_INVALID);
@@ -1127,6 +1147,7 @@ pa_operation* pa_context_set_source_volume_by_name(pa_context *c, const char *na
pa_assert(name);
pa_assert(volume);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, pa_cvolume_valid(volume), PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
@@ -1151,6 +1172,7 @@ pa_operation* pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, i
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata);
@@ -1174,6 +1196,7 @@ pa_operation* pa_context_set_source_mute_by_name(pa_context *c, const char *name
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(name);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, !name || *name, PA_ERR_INVALID);
@@ -1261,6 +1284,7 @@ pa_operation* pa_context_get_sample_info_by_name(pa_context *c, const char *name
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
@@ -1284,6 +1308,7 @@ pa_operation* pa_context_get_sample_info_by_index(pa_context *c, uint32_t idx, p
pa_assert(PA_REFCNT_VALUE(c) >= 1);
pa_assert(cb);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -1310,6 +1335,7 @@ static pa_operation* command_kill(pa_context *c, uint32_t command, uint32_t idx,
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -1376,6 +1402,7 @@ pa_operation* pa_context_load_module(pa_context *c, const char*name, const char
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, name && *name, PA_ERR_INVALID);
@@ -1459,6 +1486,7 @@ pa_operation* pa_context_move_sink_input_by_name(pa_context *c, uint32_t idx, co
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 10, PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -1484,6 +1512,7 @@ pa_operation* pa_context_move_sink_input_by_index(pa_context *c, uint32_t idx, u
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 10, PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -1509,6 +1538,7 @@ pa_operation* pa_context_move_source_output_by_name(pa_context *c, uint32_t idx,
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 10, PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -1534,6 +1564,7 @@ pa_operation* pa_context_move_source_output_by_index(pa_context *c, uint32_t idx
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 10, PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, idx != PA_INVALID_INDEX, PA_ERR_INVALID);
@@ -1559,6 +1590,7 @@ pa_operation* pa_context_suspend_sink_by_name(pa_context *c, const char *sink_na
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 11, PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, !sink_name || *sink_name, PA_ERR_INVALID);
@@ -1583,6 +1615,7 @@ pa_operation* pa_context_suspend_sink_by_index(pa_context *c, uint32_t idx, int
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 11, PA_ERR_NOTSUPPORTED);
@@ -1606,6 +1639,7 @@ pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *sourc
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 11, PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, !source_name || *source_name, PA_ERR_INVALID);
@@ -1630,6 +1664,7 @@ pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, in
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 11, PA_ERR_NOTSUPPORTED);
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 2455fe7..9a0ea0f 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -38,6 +38,7 @@
#include <pulsecore/macro.h>
#include <pulsecore/rtclock.h>
+#include "fork-detect.h"
#include "internal.h"
#define LATENCY_IPOL_INTERVAL_USEC (333*PA_USEC_PER_MSEC)
@@ -87,6 +88,7 @@ pa_stream *pa_stream_new_with_proplist(
pa_assert(c);
pa_assert(PA_REFCNT_VALUE(c) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(c, ss && pa_sample_spec_valid(ss), PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 12 || (ss->format != PA_SAMPLE_S32LE && ss->format != PA_SAMPLE_S32BE), PA_ERR_NOTSUPPORTED);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->version >= 15 || (ss->format != PA_SAMPLE_S24LE && ss->format != PA_SAMPLE_S24BE), PA_ERR_NOTSUPPORTED);
@@ -267,6 +269,7 @@ uint32_t pa_stream_get_index(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(s->context, !pa_detect_fork(), PA_ERR_FORKED, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE, PA_INVALID_INDEX);
return s->stream_index;
@@ -921,6 +924,7 @@ static int create_stream(
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(direction == PA_STREAM_PLAYBACK || direction == PA_STREAM_RECORD);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_UNCONNECTED, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direct_on_input == PA_INVALID_INDEX || direction == PA_STREAM_RECORD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, !(flags & ~(PA_STREAM_START_CORKED|
@@ -1122,6 +1126,7 @@ int pa_stream_write(
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(data);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_PLAYBACK || s->direction == PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, seek <= PA_SEEK_RELATIVE_END, PA_ERR_INVALID);
@@ -1216,6 +1221,7 @@ int pa_stream_peek(pa_stream *s, const void **data, size_t *length) {
pa_assert(data);
pa_assert(length);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_RECORD, PA_ERR_BADSTATE);
@@ -1240,6 +1246,7 @@ int pa_stream_drop(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction == PA_STREAM_RECORD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->peek_memchunk.memblock, PA_ERR_BADSTATE);
@@ -1262,6 +1269,7 @@ size_t pa_stream_writable_size(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(s->context, !pa_detect_fork(), PA_ERR_FORKED, (size_t) -1);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE, (size_t) -1);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->direction != PA_STREAM_RECORD, PA_ERR_BADSTATE, (size_t) -1);
@@ -1272,6 +1280,7 @@ size_t pa_stream_readable_size(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(s->context, !pa_detect_fork(), PA_ERR_FORKED, (size_t) -1);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE, (size_t) -1);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->direction == PA_STREAM_RECORD, PA_ERR_BADSTATE, (size_t) -1);
@@ -1286,6 +1295,7 @@ pa_operation * pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *us
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE);
@@ -1557,6 +1567,7 @@ pa_operation* pa_stream_update_timing_info(pa_stream *s, pa_stream_success_cb_t
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -1627,6 +1638,7 @@ int pa_stream_disconnect(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->channel_valid, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->context->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
@@ -1649,6 +1661,9 @@ void pa_stream_set_read_callback(pa_stream *s, pa_stream_request_cb_t cb, void *
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1660,6 +1675,9 @@ void pa_stream_set_write_callback(pa_stream *s, pa_stream_request_cb_t cb, void
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1671,6 +1689,9 @@ void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1682,6 +1703,9 @@ void pa_stream_set_overflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, voi
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1693,6 +1717,9 @@ void pa_stream_set_underflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, vo
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1704,6 +1731,9 @@ void pa_stream_set_latency_update_callback(pa_stream *s, pa_stream_notify_cb_t c
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1715,6 +1745,9 @@ void pa_stream_set_moved_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1726,6 +1759,9 @@ void pa_stream_set_suspended_callback(pa_stream *s, pa_stream_notify_cb_t cb, vo
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1737,6 +1773,9 @@ void pa_stream_set_started_callback(pa_stream *s, pa_stream_notify_cb_t cb, void
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1748,6 +1787,9 @@ void pa_stream_set_event_callback(pa_stream *s, pa_stream_event_cb_t cb, void *u
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ if (pa_detect_fork())
+ return;
+
if (s->state == PA_STREAM_TERMINATED || s->state == PA_STREAM_FAILED)
return;
@@ -1794,6 +1836,7 @@ pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, voi
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -1827,6 +1870,7 @@ static pa_operation* stream_send_simple_command(pa_stream *s, uint32_t command,
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
o = pa_operation_new(s->context, s, (pa_operation_cb_t) cb, userdata);
@@ -1845,6 +1889,7 @@ pa_operation* pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *use
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -1877,6 +1922,7 @@ pa_operation* pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *us
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->buffer_attr.prebuf > 0, PA_ERR_BADSTATE);
@@ -1897,6 +1943,7 @@ pa_operation* pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *u
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->buffer_attr.prebuf > 0, PA_ERR_BADSTATE);
@@ -1918,6 +1965,7 @@ pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_succe
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(name);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -1951,6 +1999,7 @@ int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->timing_info_valid, PA_ERR_NODATA);
@@ -2003,6 +2052,7 @@ int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative) {
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(r_usec);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->timing_info_valid, PA_ERR_NODATA);
@@ -2034,6 +2084,7 @@ const pa_timing_info* pa_stream_get_timing_info(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->timing_info_valid, PA_ERR_NODATA);
@@ -2045,6 +2096,8 @@ const pa_sample_spec* pa_stream_get_sample_spec(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
+
return &s->sample_spec;
}
@@ -2052,6 +2105,8 @@ const pa_channel_map* pa_stream_get_channel_map(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
+
return &s->channel_map;
}
@@ -2139,6 +2194,7 @@ pa_operation* pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr
pa_assert(PA_REFCNT_VALUE(s) >= 1);
pa_assert(attr);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->context->version >= 12, PA_ERR_NOTSUPPORTED);
@@ -2183,6 +2239,7 @@ uint32_t pa_stream_get_device_index(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(s->context, !pa_detect_fork(), PA_ERR_FORKED, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->context->version >= 12, PA_ERR_NOTSUPPORTED, PA_INVALID_INDEX);
@@ -2195,6 +2252,7 @@ const char *pa_stream_get_device_name(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->context->version >= 12, PA_ERR_NOTSUPPORTED);
@@ -2207,6 +2265,7 @@ int pa_stream_is_suspended(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->context->version >= 12, PA_ERR_NOTSUPPORTED);
@@ -2218,6 +2277,7 @@ int pa_stream_is_corked(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -2270,6 +2330,7 @@ pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_strea
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, rate > 0 && rate <= PA_RATE_MAX, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -2300,6 +2361,7 @@ pa_operation *pa_stream_proplist_update(pa_stream *s, pa_update_mode_t mode, pa_
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, mode == PA_UPDATE_SET || mode == PA_UPDATE_MERGE || mode == PA_UPDATE_REPLACE, PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -2333,6 +2395,7 @@ pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[],
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_NULL(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, keys && keys[0], PA_ERR_INVALID);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->state == PA_STREAM_READY, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction != PA_STREAM_UPLOAD, PA_ERR_BADSTATE);
@@ -2364,6 +2427,7 @@ int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY(s->context, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(s->context, sink_input_idx != PA_INVALID_INDEX, PA_ERR_INVALID);
PA_CHECK_VALIDITY(s->context, s->state == PA_STREAM_UNCONNECTED, PA_ERR_BADSTATE);
PA_CHECK_VALIDITY(s->context, s->context->version >= 13, PA_ERR_NOTSUPPORTED);
@@ -2377,6 +2441,7 @@ uint32_t pa_stream_get_monitor_stream(pa_stream *s) {
pa_assert(s);
pa_assert(PA_REFCNT_VALUE(s) >= 1);
+ PA_CHECK_VALIDITY_RETURN_ANY(s->context, !pa_detect_fork(), PA_ERR_FORKED, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->direct_on_input != PA_INVALID_INDEX, PA_ERR_BADSTATE, PA_INVALID_INDEX);
PA_CHECK_VALIDITY_RETURN_ANY(s->context, s->context->version >= 13, PA_ERR_NOTSUPPORTED, PA_INVALID_INDEX);
commit 81323b539be5b3340fb58d7b9cd383f9f5f46b4d
Merge: 3122008... dcee888...
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Mar 5 04:34:56 2009 +0100
Merge branch 'master' of ssh://rootserver/home/lennart/git/public/pulseaudio
commit 420ee3f8c7a4bd8e12471bd00e8c2e89fa52be9a
Merge: 81323b5... 7a8be7f...
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Mar 5 12:26:09 2009 +0100
Merge commit 'elmarco/bluetooth-fixes'
commit 57baff51434924e73fce8043d13a29b2977dc93e
Merge: 420ee3f... 34cefed...
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Mar 5 12:27:19 2009 +0100
Merge commit 'origin/master-tx'
commit c6ed0e87d4ec7ac28571cfcf10eb1f58a02b894b
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Mar 5 12:27:54 2009 +0100
run make update-po
diff --git a/po/ca.po b/po/ca.po
index 931dbd6..ae699a3 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-08 01:48+0000\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-02-15 20:53+0100\n"
"Last-Translator: Agusti Grau <fletxa at gmail.com>\n"
"Language-Team: Catalan <fedora at softcatala.net>\n"
@@ -27,15 +27,100 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/daemon/ltdl-bind-now.c:177
-#: ../src/daemon/ltdl-bind-now.c:197
-msgid "Failed to add bind-now-loader."
-msgstr "S'ha produït un error en afegir bind-now-loader."
+#: ../src/modules/alsa/alsa-util.c:530
+msgid "Analog Mono"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:536
+msgid "Analog Stereo"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:542
+msgid "Digital Stereo (IEC958)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:548
+msgid "Digital Stereo (HDMI)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:555
+msgid "Analog Surround 4.0"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:562
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:570
+msgid "Analog Surround 4.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:578
+msgid "Analog Surround 5.0"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:586
+msgid "Analog Surround 5.1"
+msgstr ""
-#: ../src/daemon/ltdl-bind-now.c:184
-msgid "Failed to find original dlopen loader."
+#: ../src/modules/alsa/alsa-util.c:594
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:603
+msgid "Analog Surround 7.1"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1602
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1642
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1688
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "S'ha produït un error intern"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
+#: ../src/daemon/ltdl-bind-now.c:124
+#, fuzzy
+msgid "Failed to find original lt_dlopen loader."
+msgstr "No s'ha trobat el carregador dlopen original."
+
+#: ../src/daemon/ltdl-bind-now.c:129
+#, fuzzy
+msgid "Failed to allocate new dl loader."
msgstr "No s'ha trobat el carregador dlopen original."
+#: ../src/daemon/ltdl-bind-now.c:142
+msgid "Failed to add bind-now-loader."
+msgstr "S'ha produït un error en afegir bind-now-loader."
+
#: ../src/daemon/polkit.c:55
#, c-format
msgid "Cannot connect to system bus: %s"
@@ -124,8 +209,7 @@ msgstr "El GID de l'usuari '%s' i del grup '%s' no coincideixen"
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "El directori arrel de l'usuari '%s' no és '%s', s'ignorarà ."
-#: ../src/daemon/main.c:201
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:201 ../src/daemon/main.c:206
#, c-format
msgid "Failed to create '%s': %s"
msgstr "S'ha produït un error durant la creació '%s': %s"
@@ -158,259 +242,277 @@ msgstr "El mode de sistema ampli no està suportat en aquesta plataforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "S'ha produït un error en setrlimit(%s, (%u, %u)): %s"
-#: ../src/daemon/main.c:425
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "S'ha produït un error en interpretar la lÃnia de comandes."
-#: ../src/daemon/main.c:441
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
-msgstr "Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
+msgstr ""
+"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
-#: ../src/daemon/main.c:448
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
-msgstr "Aquesta aplicació està en el grup '%s', s'està establint la prioritat en temps real."
+msgstr ""
+"Aquesta aplicació està en el grup '%s', s'està establint la prioritat en "
+"temps real."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ha permés el permÃs acquire-high-priority."
-#: ../src/daemon/main.c:459
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ha rebutjat el permÃs acquire-high-priority."
-#: ../src/daemon/main.c:464
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit h permés el permÃs acquire-real-time."
-#: ../src/daemon/main.c:467
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ha rebutjat el permÃs acquire-real-time."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:513
+#, c-format
msgid ""
-"Called SUID root and real-time/high-priority scheduling was requested in the configuration. However, we lack the necessary priviliges:\n"
-"We are not in group '"
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"La crida de la SUID de root i la prioritat alta/temps real està n especificades en la configuració, però no té els permissos necessaris:\n"
-"No es pertany al grup '"
-#: ../src/daemon/main.c:480
+#: ../src/daemon/main.c:538
msgid ""
-"' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
-"For enabling real-time scheduling please acquire the appropriate PolicyKit priviliges, or become a member of '"
+"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-"' i PolicyKit ha denegat els permÃsos. S'està lliberant SUID. \n"
-"Per habilitar la prioritat en temps real, s'ha de adquirir els permissos de PolicyKit, o pertanyer a '"
+"La prioritat alta està habilitada en la configuració però no està permesa "
+"per la polÃtica."
-#: ../src/daemon/main.c:481
-msgid "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
-msgstr "', o incremetar els lÃmits de recursos RLIMIT_NICE/RLIMIT_RTPRIO per aquest usuari."
-
-#: ../src/daemon/main.c:497
-msgid "High-priority scheduling enabled in configuration but not allowed by policy."
-msgstr "La prioritat alta està habilitada en la configuració però no està permesa per la polÃtica."
-
-#: ../src/daemon/main.c:522
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
-#: ../src/daemon/main.c:525
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Es deixa CAP_NICE"
-#: ../src/daemon/main.c:539
-msgid "Real-time scheduling enabled in configuration but not allowed by policy."
-msgstr "La prioritat temps real està habilitada en la configuració però no està permesa per la polÃtica."
+#: ../src/daemon/main.c:584
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"La prioritat temps real està habilitada en la configuració però no està "
+"permesa per la polÃtica."
-#: ../src/daemon/main.c:597
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "El dimoni no s'està executant."
-#: ../src/daemon/main.c:599
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:609
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:627
-msgid "This program is not intended to be run as root (unless --system is specified)."
-msgstr "No és necessari executar aquesta aplicació com a root (excepte si s'especifica --system)"
+#: ../src/daemon/main.c:675
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"No és necessari executar aquesta aplicació com a root (excepte si "
+"s'especifica --system)"
-#: ../src/daemon/main.c:629
-msgid "Root priviliges required."
+#: ../src/daemon/main.c:677
+#, fuzzy
+msgid "Root privileges required."
msgstr "Es requereixen permÃsos de root."
-#: ../src/daemon/main.c:634
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instà ncies de sistema."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
-msgstr "S'està executant en mode sistema, però no s'ha especificat la opció --disallow-exit."
+msgstr ""
+"S'està executant en mode sistema, però no s'ha especificat la opció --"
+"disallow-exit."
-#: ../src/daemon/main.c:642
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
-msgstr "S'està executant en mode sistema, però no s'ha especificat la opció --disallow-module-loading."
+msgstr ""
+"S'està executant en mode sistema, però no s'ha especificat la opció --"
+"disallow-module-loading."
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
-msgstr "S'està executant en mode sistema, es deshabilitarà el mode SHM forçosament."
+msgstr ""
+"S'està executant en mode sistema, es deshabilitarà el mode SHM forçosament."
-#: ../src/daemon/main.c:650
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
-msgstr "S'està executant en mode sistema, la sortida per temps d'inactivitat es deshabilita."
+msgstr ""
+"S'està executant en mode sistema, la sortida per temps d'inactivitat es "
+"deshabilita."
-#: ../src/daemon/main.c:677
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:683
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:702
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:708
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:710
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:780
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:782
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:785
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:788
+#: ../src/daemon/main.c:836
+#, c-format
+msgid "Found %u CPUs."
+msgstr ""
+
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pà gina és de %lu bytes."
-#: ../src/daemon/main.c:791
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sÃ"
-#: ../src/daemon/main.c:793
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:796
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:799
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sÃ"
-#: ../src/daemon/main.c:801
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:805
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "S'ha produït un error en obtenir la ID de la mà quina"
-#: ../src/daemon/main.c:808
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "La ID de la mà quina és %s."
-#: ../src/daemon/main.c:813
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "S'esta utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:818
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:821
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:848
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Està n disponibles els temporitzadors frescos de alta resolució."
-#: ../src/daemon/main.c:850
-msgid "Dude, your kernel stinks! The chef's recommendation today is Linux with high-resolution timers enabled!"
-msgstr "Es recomana la utilització d'un kernel amb els temporitzadors d'alta resolució habilitats."
+#: ../src/daemon/main.c:900
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Es recomana la utilització d'un kernel amb els temporitzadors d'alta "
+"resolució habilitats."
-#: ../src/daemon/main.c:860
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:921
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:926
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Com el dimoni s'ha iniciat sense cap mòdul carregat, no funciona."
-#: ../src/daemon/main.c:931
-#, c-format
-msgid "Default sink name (%s) does not exist in name register."
-msgstr "El nom sink per omissió (%s) no existeix en el registre de noms."
-
-#: ../src/daemon/main.c:944
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:950
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:971
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
-#: ../src/daemon/cmdline.c:117
-#, c-format
+#: ../src/daemon/cmdline.c:121
+#, fuzzy, c-format
msgid ""
"%s [options]\n"
"\n"
@@ -420,34 +522,48 @@ msgid ""
" --dump-conf Dump default configuration\n"
" --dump-modules Dump list of available modules\n"
" --dump-resample-methods Dump available resample methods\n"
-" --cleanup-shm Cleanup stale shared memory segments\n"
-" --start Start the daemon if it is not running\n"
+" --cleanup-shm Cleanup stale shared memory "
+"segments\n"
+" --start Start the daemon if it is not "
+"running\n"
" -k --kill Kill a running daemon\n"
-" --check Check for a running daemon\n"
+" --check Check for a running daemon (only "
+"returns exit code)\n"
"\n"
"OPTIONS:\n"
" --system[=BOOL] Run as system-wide instance\n"
" -D, --daemonize[=BOOL] Daemonize after startup\n"
" --fail[=BOOL] Quit when startup fails\n"
" --high-priority[=BOOL] Try to set high nice level\n"
-" (only available as root, when SUID or\n"
+" (only available as root, when SUID "
+"or\n"
" with elevated RLIMIT_NICE)\n"
" --realtime[=BOOL] Try to enable realtime scheduling\n"
-" (only available as root, when SUID or\n"
+" (only available as root, when SUID "
+"or\n"
" with elevated RLIMIT_RTPRIO)\n"
-" --disallow-module-loading[=BOOL] Disallow module user requested module\n"
+" --disallow-module-loading[=BOOL] Disallow module user requested "
+"module\n"
" loading/unloading after startup\n"
" --disallow-exit[=BOOL] Disallow user requested exit\n"
-" --exit-idle-time=SECS Terminate the daemon when idle and this\n"
+" --exit-idle-time=SECS Terminate the daemon when idle and "
+"this\n"
" time passed\n"
-" --module-idle-time=SECS Unload autoloaded modules when idle and\n"
+" --module-idle-time=SECS Unload autoloaded modules when idle "
+"and\n"
" this time passed\n"
-" --scache-idle-time=SECS Unload autoloaded samples when idle and\n"
+" --scache-idle-time=SECS Unload autoloaded samples when idle "
+"and\n"
" this time passed\n"
" --log-level[=LEVEL] Increase or set verbosity level\n"
" -v Increase the verbosity level\n"
" --log-target={auto,syslog,stderr} Specify the log target\n"
-" -p, --dl-search-path=PATH Set the search path for dynamic shared\n"
+" --log-meta[=BOOL] Include code location in log "
+"messages\n"
+" --log-time[=BOOL] Include timestamps in log messages\n"
+" --log-backtrace=FRAMES Include a backtrace in log messages\n"
+" -p, --dl-search-path=PATH Set the search path for dynamic "
+"shared\n"
" objects (plugins)\n"
" --resample-method=METHOD Use the specified resampling method\n"
" (See --dump-resample-methods for\n"
@@ -458,10 +574,12 @@ msgid ""
" --disable-shm[=BOOL] Disable shared memory support.\n"
"\n"
"STARTUP SCRIPT:\n"
-" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module with\n"
+" -L, --load=\"MODULE ARGUMENTS\" Load the specified plugin module "
+"with\n"
" the specified argument\n"
" -F, --file=FILENAME Run the specified script\n"
-" -C Open a command line on the running TTY\n"
+" -C Open a command line on the running "
+"TTY\n"
" after startup\n"
"\n"
" -n Don't load default script file\n"
@@ -471,104 +589,145 @@ msgstr ""
"COMANDES:\n"
" -h, --help Mostra aquesta ajuda\n"
" --version Mostra la versió\n"
-" --dump-conf Volca la configuració per omissió\n"
+" --dump-conf Volca la configuració per "
+"omissió\n"
" --dump-modules Volca la llista de mòduls\n"
-" --dump-resample-methods Volca els mètodes disponibles de remostratge\n"
-" --cleanup-shm Neteja els segments de memòria compartida sense emprar\n"
-" --start Inicia el dimoni si aquest no està corrent\n"
+" --dump-resample-methods Volca els mètodes "
+"disponibles de remostratge\n"
+" --cleanup-shm Neteja els segments de "
+"memòria compartida sense emprar\n"
+" --start Inicia el dimoni si aquest no està "
+"corrent\n"
" -k --kill Mata el dimoni en execució\n"
" --check Comprova l'execució del dimoni\n"
"\n"
"OPCIONS:\n"
-" --system[=BOOL] Executa com una instà ncia de sistema\n"
-" -D, --daemonize[=BOOL] Converteix en dimoni després de la inicialització\n"
+" --system[=BOOL] Executa com una instà ncia de "
+"sistema\n"
+" -D, --daemonize[=BOOL] Converteix en dimoni després de la "
+"inicialització\n"
" --fail[=BOOL] Surt quan falli la inicialització\n"
" --high-priority[=BOOL] Prova d'establir un nivell de \n"
-" prioritat alt (només disponible com a root,\n"
-" amb SUID o amb un RLIMIT_NICE elevat)\n"
+" prioritat alt (només disponible com "
+"a root,\n"
+" amb SUID o amb un RLIMIT_NICE "
+"elevat)\n"
" --realtime[=BOOL] Intenta habilitar la programació en\n"
-" en temps real (només disponible com a root,\n"
-" amb SUID o amb un RLIMIT_RTPRIO elevat)\n"
-" --disallow-module-loading[=BOOL] Inhabilita el mòdul de carrega/descarrega \n"
-" de mòduls demanats per l'usuari després de l'inici\n"
-" --disallow-exit[=BOOL] Inhabilita la petició de l'usuari de sortida\n"
-" --exit-idle-time=SEGS Mata el dimoni quan estigui inactiu i hagi passat\n"
+" en temps real (només disponible com "
+"a root,\n"
+" amb SUID o amb un RLIMIT_RTPRIO "
+"elevat)\n"
+" --disallow-module-loading[=BOOL] Inhabilita el mòdul de carrega/"
+"descarrega \n"
+" de mòduls demanats per l'usuari "
+"després de l'inici\n"
+" --disallow-exit[=BOOL] Inhabilita la petició de l'usuari de "
+"sortida\n"
+" --exit-idle-time=SEGS Mata el dimoni quan estigui inactiu "
+"i hagi passat\n"
" aquest temps\n"
-" --module-idle-time=SEGS Descarrega els mòduls carregats automà ticament\n"
-" quan estigui inactiu o hagi passat aquest temps\n"
-" --scache-idle-time=SEGS Descarrega les mostres carregades automà ticament\n"
-" després que hagi passat aquest temps\n"
-" --log-level[=NIVELL] Incrementa o especifica el nivell de detall\n"
+" --module-idle-time=SEGS Descarrega els mòduls carregats "
+"automà ticament\n"
+" quan estigui inactiu o hagi passat "
+"aquest temps\n"
+" --scache-idle-time=SEGS Descarrega les mostres carregades "
+"automà ticament\n"
+" després que hagi passat aquest "
+"temps\n"
+" --log-level[=NIVELL] Incrementa o especifica el nivell de "
+"detall\n"
" -v Incrementa el nivell de detall\n"
" --log-target={auto,syslog,stderr} Especifica el destà del log\n"
-" -p, --dl-search-path=CAMI Estableix el camà de cerca d'objectes dinà mics\n"
+" -p, --dl-search-path=CAMI Estableix el camà de cerca "
+"d'objectes dinà mics\n"
" compartits (plugins)\n"
" --resample-method=METODE Utilitza el mètode de remostreig\n"
-" (Per veure els valors possibles utilitza --dump-resample-methods)\n"
+" (Per veure els valors possibles "
+"utilitza --dump-resample-methods)\n"
" --use-pid-file[=BOOL] Crea un fitxer PID\n"
-" --no-cpu-limit[=BOOL] No instal·lis un limitador de cà rrega de CPU\n"
+" --no-cpu-limit[=BOOL] No instal·lis un limitador de "
+"cà rrega de CPU\n"
" en plataformes que ho suportin.\n"
-" --disable-shm[=BOOL] Inhabilita el suport de memòria compartida.\n"
+" --disable-shm[=BOOL] Inhabilita el suport de memòria "
+"compartida.\n"
"\n"
"SCRIPT D'INICI:\n"
" -L, --load=\"ARGUMENTS MODUL\" Carrega el mòdul especificat amb\n"
" els arguments especificats\n"
" -F, --file=NOMFITXER Executa l'script especificat\n"
-" -C Obre una lÃnia d'ordres en la TTY actual després\n"
+" -C Obre una lÃnia d'ordres en la TTY "
+"actual després\n"
" de l'inici\n"
"\n"
-" -n No carreguis el fitxer de configuració per omissió\n"
-#xc
-#: ../src/daemon/cmdline.c:245
+" -n No carreguis el fitxer de "
+"configuració per omissió\n"
+
+# xc
+#: ../src/daemon/cmdline.c:252
msgid "--daemonize expects boolean argument"
msgstr "--daemonize necessita un argument booleà "
-#: ../src/daemon/cmdline.c:252
+#: ../src/daemon/cmdline.c:259
msgid "--fail expects boolean argument"
msgstr "--fail necessita un argument booleà "
-#: ../src/daemon/cmdline.c:262
-msgid "--log-level expects log level argument (either numeric in range 0..4 or one of debug, info, notice, warn, error)."
-msgstr "--log-level necessita un argument de nivell de log (valor númeric 0..4 o debug, info, notice, warn, error)."
+#: ../src/daemon/cmdline.c:269
+msgid ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+msgstr ""
+"--log-level necessita un argument de nivell de log (valor númeric 0..4 o "
+"debug, info, notice, warn, error)."
-#: ../src/daemon/cmdline.c:274
+#: ../src/daemon/cmdline.c:281
msgid "--high-priority expects boolean argument"
msgstr "--high-priority necessita un argument booleà "
-#: ../src/daemon/cmdline.c:281
+#: ../src/daemon/cmdline.c:288
msgid "--realtime expects boolean argument"
msgstr "--realtime necessita un argument booleà "
-#: ../src/daemon/cmdline.c:288
+#: ../src/daemon/cmdline.c:295
msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading necessita un argument booleà "
-#: ../src/daemon/cmdline.c:295
-msgid "--disallow-exit boolean argument"
+#: ../src/daemon/cmdline.c:302
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit necessita un argument booleà "
-#: ../src/daemon/cmdline.c:302
+#: ../src/daemon/cmdline.c:309
msgid "--use-pid-file expects boolean argument"
msgstr "--use-pid-file necessita un argument booleà "
-#: ../src/daemon/cmdline.c:319
+#: ../src/daemon/cmdline.c:326
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr "Objectiu de log invà lid: utilitzeu 'syslog', 'stderr' o 'auto'."
-#: ../src/daemon/cmdline.c:338
+#: ../src/daemon/cmdline.c:333
+#, fuzzy
+msgid "--log-time expects boolean argument"
+msgstr "--realtime necessita un argument booleà "
+
+#: ../src/daemon/cmdline.c:340
+#, fuzzy
+msgid "--log-meta expects boolean argument"
+msgstr "--realtime necessita un argument booleà "
+
+#: ../src/daemon/cmdline.c:359
#, c-format
msgid "Invalid resample method '%s'."
msgstr "Mètode de remostratge invà lid '%s'."
-#: ../src/daemon/cmdline.c:345
+#: ../src/daemon/cmdline.c:366
msgid "--system expects boolean argument"
msgstr "--system necessita un argument booleà "
-#: ../src/daemon/cmdline.c:352
+#: ../src/daemon/cmdline.c:373
msgid "--no-cpu-limit expects boolean argument"
msgstr "--no-cpu-limit necessita un argument booleà "
-#: ../src/daemon/cmdline.c:359
+#: ../src/daemon/cmdline.c:380
msgid "--disable-shm expects boolean argument"
msgstr "--disable-shm necessita un argument booleà "
@@ -612,290 +771,354 @@ msgstr "CÃ rrega: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:205
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destà de log incorrecte '%s'"
-#: ../src/daemon/daemon-conf.c:221
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de log incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:237
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:260
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit no disponible en aquesta plataforma."
-#: ../src/daemon/daemon-conf.c:283
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:301
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'."
-#: ../src/daemon/daemon-conf.c:319
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
-#: ../src/daemon/daemon-conf.c:337
+#: ../src/daemon/daemon-conf.c:353
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
+
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:355
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
-#: ../src/daemon/daemon-conf.c:373
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:570
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:644
+#: ../src/daemon/daemon-conf.c:538
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n"
#: ../src/daemon/caps.c:63
-msgid "Dropping root priviliges."
+#, fuzzy
+msgid "Dropping root privileges."
msgstr "Lliberant privilegis de root."
#: ../src/daemon/caps.c:103
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "S'han limitat les capacitats cap a CAP_SYS_NICE."
-#: ../src/pulse/channelmap.c:102
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Ha fallat en matar el dimoni PulseAudio."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
-#: ../src/pulse/channelmap.c:104
+#: ../src/pulse/channelmap.c:105
msgid "Front Center"
msgstr "Frontal central"
-#: ../src/pulse/channelmap.c:105
+#: ../src/pulse/channelmap.c:106
msgid "Front Left"
msgstr "Frontal esquerra"
-#: ../src/pulse/channelmap.c:106
+#: ../src/pulse/channelmap.c:107
msgid "Front Right"
msgstr "Frontal dreta"
-#: ../src/pulse/channelmap.c:108
+#: ../src/pulse/channelmap.c:109
msgid "Rear Center"
msgstr "Posterior central"
-#: ../src/pulse/channelmap.c:109
+#: ../src/pulse/channelmap.c:110
msgid "Rear Left"
msgstr "Posterior esquerra"
-#: ../src/pulse/channelmap.c:110
+#: ../src/pulse/channelmap.c:111
msgid "Rear Right"
msgstr "Posterior dreta"
-#: ../src/pulse/channelmap.c:112
+#: ../src/pulse/channelmap.c:113
msgid "Low Frequency Emmiter"
msgstr "Emissor de baixa freqüència"
-#: ../src/pulse/channelmap.c:114
+#: ../src/pulse/channelmap.c:115
msgid "Front Left-of-center"
msgstr "Frontal central part esquerra"
-#: ../src/pulse/channelmap.c:115
+#: ../src/pulse/channelmap.c:116
msgid "Front Right-of-center"
msgstr "Frontal central part dreta"
-#: ../src/pulse/channelmap.c:117
+#: ../src/pulse/channelmap.c:118
msgid "Side Left"
msgstr "Lateral esquerra"
-#: ../src/pulse/channelmap.c:118
+#: ../src/pulse/channelmap.c:119
msgid "Side Right"
msgstr "Lateral dreta"
-#: ../src/pulse/channelmap.c:120
+#: ../src/pulse/channelmap.c:121
msgid "Auxiliary 0"
msgstr "Auxiliar 0"
-#: ../src/pulse/channelmap.c:121
+#: ../src/pulse/channelmap.c:122
msgid "Auxiliary 1"
msgstr "Auxiliar 1"
-#: ../src/pulse/channelmap.c:122
+#: ../src/pulse/channelmap.c:123
msgid "Auxiliary 2"
msgstr "Auxiliar 2"
-#: ../src/pulse/channelmap.c:123
+#: ../src/pulse/channelmap.c:124
msgid "Auxiliary 3"
msgstr "Auxiliar 3"
-#: ../src/pulse/channelmap.c:124
+#: ../src/pulse/channelmap.c:125
msgid "Auxiliary 4"
msgstr "Auxiliar 4"
-#: ../src/pulse/channelmap.c:125
+#: ../src/pulse/channelmap.c:126
msgid "Auxiliary 5"
msgstr "Auxiliar 5"
-#: ../src/pulse/channelmap.c:126
+#: ../src/pulse/channelmap.c:127
msgid "Auxiliary 6"
msgstr "Auxiliar 6"
-#: ../src/pulse/channelmap.c:127
+#: ../src/pulse/channelmap.c:128
msgid "Auxiliary 7"
msgstr "Auxiliar 7"
-#: ../src/pulse/channelmap.c:128
+#: ../src/pulse/channelmap.c:129
msgid "Auxiliary 8"
msgstr "Auxiliar 8"
-#: ../src/pulse/channelmap.c:129
+#: ../src/pulse/channelmap.c:130
msgid "Auxiliary 9"
msgstr "Auxiliar 9"
-#: ../src/pulse/channelmap.c:130
+#: ../src/pulse/channelmap.c:131
msgid "Auxiliary 10"
msgstr "Auxiliar 10"
-#: ../src/pulse/channelmap.c:131
+#: ../src/pulse/channelmap.c:132
msgid "Auxiliary 11"
msgstr "Auxiliar 11"
-#: ../src/pulse/channelmap.c:132
+#: ../src/pulse/channelmap.c:133
msgid "Auxiliary 12"
msgstr "Auxiliar 12"
-#: ../src/pulse/channelmap.c:133
+#: ../src/pulse/channelmap.c:134
msgid "Auxiliary 13"
msgstr "Auxiliar 13"
-#: ../src/pulse/channelmap.c:134
+#: ../src/pulse/channelmap.c:135
msgid "Auxiliary 14"
msgstr "Auxiliar 14"
-#: ../src/pulse/channelmap.c:135
+#: ../src/pulse/channelmap.c:136
msgid "Auxiliary 15"
msgstr "Auxiliar 15"
-#: ../src/pulse/channelmap.c:136
+#: ../src/pulse/channelmap.c:137
msgid "Auxiliary 16"
msgstr "Auxiliar 16"
-#: ../src/pulse/channelmap.c:137
+#: ../src/pulse/channelmap.c:138
msgid "Auxiliary 17"
msgstr "Auxiliar 17"
-#: ../src/pulse/channelmap.c:138
+#: ../src/pulse/channelmap.c:139
msgid "Auxiliary 18"
msgstr "Auxiliar 18"
-#: ../src/pulse/channelmap.c:139
+#: ../src/pulse/channelmap.c:140
msgid "Auxiliary 19"
msgstr "Auxiliar 19"
-#: ../src/pulse/channelmap.c:140
+#: ../src/pulse/channelmap.c:141
msgid "Auxiliary 20"
msgstr "Auxiliar 20"
-#: ../src/pulse/channelmap.c:141
+#: ../src/pulse/channelmap.c:142
msgid "Auxiliary 21"
msgstr "Auxiliar 21"
-#: ../src/pulse/channelmap.c:142
+#: ../src/pulse/channelmap.c:143
msgid "Auxiliary 22"
msgstr "Auxiliar 22"
-#: ../src/pulse/channelmap.c:143
+#: ../src/pulse/channelmap.c:144
msgid "Auxiliary 23"
msgstr "Auxiliar 23"
-#: ../src/pulse/channelmap.c:144
+#: ../src/pulse/channelmap.c:145
msgid "Auxiliary 24"
msgstr "Auxiliar 24"
-#: ../src/pulse/channelmap.c:145
+#: ../src/pulse/channelmap.c:146
msgid "Auxiliary 25"
msgstr "Auxiliar 25"
-#: ../src/pulse/channelmap.c:146
+#: ../src/pulse/channelmap.c:147
msgid "Auxiliary 26"
msgstr "Auxiliar 26"
-#: ../src/pulse/channelmap.c:147
+#: ../src/pulse/channelmap.c:148
msgid "Auxiliary 27"
msgstr "Auxiliar 27"
-#: ../src/pulse/channelmap.c:148
+#: ../src/pulse/channelmap.c:149
msgid "Auxiliary 28"
msgstr "Auxiliar 28"
-#: ../src/pulse/channelmap.c:149
+#: ../src/pulse/channelmap.c:150
msgid "Auxiliary 29"
msgstr "Auxiliar 31"
-#: ../src/pulse/channelmap.c:150
+#: ../src/pulse/channelmap.c:151
msgid "Auxiliary 30"
msgstr "Auxiliar 30"
-#: ../src/pulse/channelmap.c:151
+#: ../src/pulse/channelmap.c:152
msgid "Auxiliary 31"
msgstr "Auxiliar 31"
-#: ../src/pulse/channelmap.c:153
+#: ../src/pulse/channelmap.c:154
msgid "Top Center"
msgstr "Superior central"
-#: ../src/pulse/channelmap.c:155
+#: ../src/pulse/channelmap.c:156
msgid "Top Front Center"
msgstr "Superior frontal central"
-#: ../src/pulse/channelmap.c:156
+#: ../src/pulse/channelmap.c:157
msgid "Top Front Left"
msgstr "Superior frontal central"
-#: ../src/pulse/channelmap.c:157
+#: ../src/pulse/channelmap.c:158
msgid "Top Front Right"
msgstr "Superior frontal dreta"
-#: ../src/pulse/channelmap.c:159
+#: ../src/pulse/channelmap.c:160
msgid "Top Rear Center"
msgstr "Superior posterior central"
-#: ../src/pulse/channelmap.c:160
+#: ../src/pulse/channelmap.c:161
msgid "Top Rear Left"
msgstr "Superior posterior esquerra"
-#: ../src/pulse/channelmap.c:161
+#: ../src/pulse/channelmap.c:162
msgid "Top Rear Right"
msgstr "Superior posterior dreta"
-#: ../src/pulse/channelmap.c:472
-#: ../src/pulse/sample.c:144
-#: ../src/pulse/volume.c:163
-#: ../src/pulse/volume.c:194
+#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
+#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
msgid "(invalid)"
msgstr "(incorrecte)"
+#: ../src/pulse/channelmap.c:808
+msgid "Stereo"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:813
+msgid "Surround 4.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:819
+msgid "Surround 4.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:825
+msgid "Surround 5.0"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:831
+msgid "Surround 5.1"
+msgstr ""
+
+#: ../src/pulse/channelmap.c:838
+msgid "Surround 7.1"
+msgstr ""
+
#: ../src/pulse/error.c:43
msgid "OK"
msgstr "D'acord"
@@ -984,8 +1207,44 @@ msgstr "Codi d'error desconegut"
msgid "No such extension"
msgstr "No existeix l'extensió"
-#: ../src/pulse/client-conf-x11.c:55
-#: ../src/utils/pax11publish.c:100
+#: ../src/pulse/error.c:65
+msgid "Obsolete functionality"
+msgstr ""
+
+#: ../src/pulse/error.c:66
+msgid "Missing implementation"
+msgstr ""
+
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
+#: ../src/pulse/sample.c:169
+#, c-format
+msgid "%s %uch %uHz"
+msgstr ""
+
+#: ../src/pulse/sample.c:181
+#, c-format
+msgid "%0.1f GiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:183
+#, c-format
+msgid "%0.1f MiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:185
+#, c-format
+msgid "%0.1f KiB"
+msgstr ""
+
+#: ../src/pulse/sample.c:187
+#, c-format
+msgid "%u B"
+msgstr ""
+
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "Ha fallat XOpenDisplay()"
@@ -998,45 +1257,35 @@ msgstr "Ha fallat el parseig de les dades de la cookie"
msgid "Failed to open configuration file '%s': %s"
msgstr "S'ha produït un error en obrir el fitxer de configuració '%s': %s"
-#: ../src/pulse/context.c:516
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "No s'ha carregat cap cookie. S'està intentant connectar sense aquesta."
-#: ../src/pulse/context.c:642
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:695
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1256
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "S'ha rebut un missatge per a l'extensió desconeguda '%s'"
-#: ../src/utils/pacat.c:93
+#: ../src/utils/pacat.c:94
#, c-format
msgid "pa_stream_write() failed: %s\n"
msgstr "Ha fallat pa_stream_write(): %s\n"
-#: ../src/utils/pacat.c:132
+#: ../src/utils/pacat.c:133
#, c-format
msgid "pa_stream_peek() failed: %s\n"
msgstr "Ha fallat pa_stream_peek(): %s\n"
-#: ../src/utils/pacat.c:141
-#, c-format
-msgid "Buffer overrun, dropping incoming data\n"
-msgstr "S'ha sobrepassat la memòria intermitja, s'estan descartant les dades entrants\n"
-
-#: ../src/utils/pacat.c:143
-#, c-format
-msgid "pa_stream_drop() failed: %s\n"
-msgstr "Ha fallat pa_stream_drop(): %s\n"
-
#: ../src/utils/pacat.c:169
#, c-format
msgid "Stream successfully created.\n"
@@ -1060,7 +1309,9 @@ msgstr "Mètriques del búffer: maxlength=%u, fragsize=%u\n"
#: ../src/utils/pacat.c:183
#, c-format
msgid "Using sample spec '%s', channel map '%s'.\n"
-msgstr "S'estan utilitzant les especificacions de mostreig '%s', mapejat del canal '%s'.\n"
+msgstr ""
+"S'estan utilitzant les especificacions de mostreig '%s', mapejat del canal '%"
+"s'.\n"
#: ../src/utils/pacat.c:187
#, c-format
@@ -1106,93 +1357,88 @@ msgstr "S'ha mogut l'stream al dispositiu %s (%u, %s suspés).%s\n"
msgid "not "
msgstr "no"
-#: ../src/utils/pacat.c:259
+#: ../src/utils/pacat.c:271
#, c-format
msgid "Connection established.%s \n"
msgstr "S'ha establert la connexió.%s\n"
-#: ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:274
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "Ha fallat pa_stream_new(): %s\n"
-#: ../src/utils/pacat.c:287
+#: ../src/utils/pacat.c:301
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_playback(): %s\n"
-#: ../src/utils/pacat.c:293
+#: ../src/utils/pacat.c:307
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_record(): %s\n"
-#: ../src/utils/pacat.c:307
-#: ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:666
-#: ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ha fallat la connexió: %s\n"
-#: ../src/utils/pacat.c:328
-#: ../src/utils/paplay.c:75
+#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
#, c-format
msgid "Failed to drain stream: %s\n"
msgstr "S'ha produït un error en drenar l'stream: %s\n"
-#: ../src/utils/pacat.c:333
-#: ../src/utils/paplay.c:80
+#: ../src/utils/pacat.c:346 ../src/utils/paplay.c:80
#, c-format
msgid "Playback stream drained.\n"
msgstr "Stream de reproducció drenat.\n"
-#: ../src/utils/pacat.c:343
-#: ../src/utils/paplay.c:92
+#: ../src/utils/pacat.c:356 ../src/utils/paplay.c:92
#, c-format
msgid "Draining connection to server.\n"
msgstr "S'està drenant la connexió amb el servidor.\n"
-#: ../src/utils/pacat.c:369
+#: ../src/utils/pacat.c:382
#, c-format
msgid "Got EOF.\n"
msgstr "S'ha llegit EOF.\n"
-#: ../src/utils/pacat.c:375
+#: ../src/utils/pacat.c:388
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:385
+#: ../src/utils/pacat.c:398
#, c-format
msgid "read() failed: %s\n"
msgstr "Ha fallat read(): %s\n"
-#: ../src/utils/pacat.c:417
+#: ../src/utils/pacat.c:430
#, c-format
msgid "write() failed: %s\n"
msgstr "Ha fallat write(): %s\n"
-#: ../src/utils/pacat.c:438
+#: ../src/utils/pacat.c:451
#, c-format
msgid "Got signal, exiting.\n"
msgstr "S'ha rebut una signal, s'està sortint.\n"
-#: ../src/utils/pacat.c:452
+#: ../src/utils/pacat.c:465
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Ha fallat en obtenir la latència: %s\n"
-#: ../src/utils/pacat.c:457
+#: ../src/utils/pacat.c:470
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Temps: %0.3f segs; Latència: %0.0f microsegs.\r"
-#: ../src/utils/pacat.c:477
+#: ../src/utils/pacat.c:490
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "Ha fallat pa_stream_update_timing_info(): %s\n"
-#: ../src/utils/pacat.c:490
+#: ../src/utils/pacat.c:503
#, c-format
msgid ""
"%s [options]\n"
@@ -1205,61 +1451,94 @@ msgid ""
"\n"
" -v, --verbose Enable verbose operations\n"
"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
-" -d, --device=DEVICE The name of the sink/source to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
-" --stream-name=NAME How to call this stream on the server\n"
-" --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
-" --rate=SAMPLERATE The sample rate in Hz (defaults to 44100)\n"
-" --format=SAMPLEFORMAT The sample type, one of s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be (defaults to s16ne)\n"
-" --channels=CHANNELS The number of channels, 1 for mono, 2 for stereo\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
" (defaults to 2)\n"
-" --channel-map=CHANNELMAP Channel map to use instead of the default\n"
-" --fix-format Take the sample format from the sink the stream is\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
" being connected to.\n"
-" --fix-rate Take the sampling rate from the sink the stream is\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
" being connected to.\n"
-" --fix-channels Take the number of channels and the channel map\n"
-" from the sink the stream is being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
" --no-remix Don't upmix or downmix channels.\n"
-" --no-remap Map channels by index instead of name.\n"
-" --latency=BYTES Request the specified latency in bytes.\n"
-" --process-time=BYTES Request the specified process time per request in bytes.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
msgstr ""
"%s [opcions]\n"
"\n"
" -h, --help Mostra aquesta ajuda\n"
" --version Mostra la versió\n"
"\n"
-" -r, --record Crea una connexió per a l'enregistrament\n"
-" -p, --playback Crea una connexió per a la reproducció\n"
+" -r, --record Crea una connexió per a "
+"l'enregistrament\n"
+" -p, --playback Crea una connexió per a la "
+"reproducció\n"
"\n"
" -v, --verbose Habilita les operacions detallades\n"
"\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-se\n"
-" -d, --device=DISPOSITIU Nom del conducte/font al qual connectar-se\n"
-" -n, --client-name=NOM Com cridar aquest client al servidor\n"
+" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
+"se\n"
+" -d, --device=DISPOSITIU Nom del conducte/font al qual "
+"connectar-se\n"
+" -n, --client-name=NOM Com cridar aquest client al "
+"servidor\n"
" --stream-name=NOM Com cridar aquest flux al servidor\n"
-" --volume=VOLUM Especifica el volum inicial lineal dins el rang 0...65536\n"
-" --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per omissió, 44100)\n"
-" --format=FORMATMOSTRA El tipus de mostra, una de s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be (per omissió, s16ne)\n"
-" --channels=CANALS Número de canals, 1 per a mono, 2 per a estèreo\n"
+" --volume=VOLUM Especifica el volum inicial lineal "
+"dins el rang 0...65536\n"
+" --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per "
+"omissió, 44100)\n"
+" --format=FORMATMOSTRA El tipus de mostra, una de s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(per omissió, s16ne)\n"
+" --channels=CANALS Número de canals, 1 per a mono, 2 "
+"per a estèreo\n"
" (per omissió, 2)\n"
" --channel-map=MAPACANAL Mapa de canals a utilitzar\n"
-" --fix-format Pren el format de mostra del conducte al qual s'està connectant\n"
+" --fix-format Pren el format de mostra del "
+"conducte al qual s'està connectant\n"
" el flux.\n"
-" --fix-rate Pren la velocitat de mostreig del conducte al qual\n"
+" --fix-rate Pren la velocitat de mostreig del "
+"conducte al qual\n"
" s'està connectant el flux.\n"
-" --fix-channels Pren el número de canals i el mapa de canals del\n"
-" conducte al qual s'està connectant el flux.\n"
+" --fix-channels Pren el número de canals i el mapa "
+"de canals del\n"
+" conducte al qual s'està connectant "
+"el flux.\n"
" --no-remix No mesclar els canals.\n"
-" --no-remap Mapeja els canals per Ãndex enlloc de per nom .\n"
+" --no-remap Mapeja els canals per Ãndex enlloc "
+"de per nom .\n"
" --latency=BYTES Especifica la latència en bytes.\n"
-" --process-time=BYTES Especifica el temps de procés per peticio en bytes.\n"
+" --process-time=BYTES Especifica el temps de procés per "
+"peticio en bytes.\n"
-#: ../src/utils/pacat.c:591
+#: ../src/utils/pacat.c:604
#, c-format
msgid ""
"pacat %s\n"
@@ -1270,94 +1549,89 @@ msgstr ""
"Compil·lat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pacat.c:647
+#: ../src/utils/pacat.c:661
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mapa de canals invà lid '%s'\n"
-#: ../src/utils/pacat.c:676
+#: ../src/utils/pacat.c:690
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Especificació de latència invà lida '%s'\n"
-#: ../src/utils/pacat.c:683
+#: ../src/utils/pacat.c:697
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Especificació de temps de procés invà lida '%s'\n"
-#: ../src/utils/pacat.c:694
+#: ../src/utils/pacat.c:708
#, c-format
msgid "Invalid sample specification\n"
msgstr "Especificació de mostra invà lida\n"
-#: ../src/utils/pacat.c:699
+#: ../src/utils/pacat.c:713
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr "El mapa de canals no coincideix amb l'especificació de mostra\n"
-#: ../src/utils/pacat.c:706
+#: ../src/utils/pacat.c:720
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "S'està obrint un flux %s amb especificació de mostra '%s'.\n"
-#: ../src/utils/pacat.c:706
+#: ../src/utils/pacat.c:720
msgid "recording"
msgstr "enregistrant"
-#: ../src/utils/pacat.c:706
+#: ../src/utils/pacat.c:720
msgid "playback"
msgstr "reproducció"
-#: ../src/utils/pacat.c:714
+#: ../src/utils/pacat.c:728
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:719
+#: ../src/utils/pacat.c:733
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:729
+#: ../src/utils/pacat.c:743
#, c-format
msgid "Too many arguments.\n"
msgstr "Hi han massa arguments.\n"
-#: ../src/utils/pacat.c:742
-#: ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:909
-#: ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Ha fallat pa_mainloop_new().\n"
-#: ../src/utils/pacat.c:763
+#: ../src/utils/pacat.c:777
#, c-format
msgid "io_new() failed.\n"
msgstr "Ha fallat io_new().\n"
-#: ../src/utils/pacat.c:769
-#: ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:923
-#: ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Ha fallat pa_context_new().\n"
-#: ../src/utils/pacat.c:777
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "Ha fallat pa_context_connect(): %s"
-#: ../src/utils/pacat.c:788
+#: ../src/utils/pacat.c:802
#, c-format
msgid "time_new() failed.\n"
msgstr "Ha fallat time_new().\n"
-#: ../src/utils/pacat.c:795
-#: ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:931
-#: ../src/utils/paplay.c:407
+#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Ha fallat pa_mainloop_run().\n"
@@ -1387,8 +1661,7 @@ msgstr "Ha fallat en reprendre: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ADVERTÃNCIA: el sevidor de so no és local, no s'està suspenent.\n"
-#: ../src/utils/pasuspender.c:176
-#: ../src/utils/pactl.c:672
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1406,14 +1679,16 @@ msgid ""
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
-" -s, --server=SERVER The name of the server to connect to\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
"\n"
msgstr ""
"%s [opcions] ... \n"
"\n"
" -h, --help Mostra aquesta ajuda\n"
" --version Mostra la versió\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-se\n"
+" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
+"se\n"
"\n"
#: ../src/utils/pasuspender.c:251
@@ -1427,39 +1702,41 @@ msgstr ""
"Compil·lat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:107
+#: ../src/utils/pactl.c:108
#, c-format
msgid "Failed to get statistics: %s\n"
msgstr "Ha fallat en obtenir les estadÃstiques: %s\n"
-#: ../src/utils/pactl.c:113
+#: ../src/utils/pactl.c:114
#, c-format
msgid "Currently in use: %u blocks containing %s bytes total.\n"
msgstr "Actualment s'estan utilitzant: %u blocs contenent %s bytes en total.\n"
-#: ../src/utils/pactl.c:116
+#: ../src/utils/pactl.c:117
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
-msgstr "Allotjats durant el temps de vida: %u blocs contenent %s bytes en total.\n"
+msgstr ""
+"Allotjats durant el temps de vida: %u blocs contenent %s bytes en total.\n"
-#: ../src/utils/pactl.c:119
+#: ../src/utils/pactl.c:120
#, c-format
msgid "Sample cache size: %s\n"
msgstr "Mida de caché de mostra: %s\n"
-#: ../src/utils/pactl.c:128
+#: ../src/utils/pactl.c:129
#, c-format
msgid "Failed to get server information: %s\n"
msgstr "Ha fallat en obtenir la informació del servidor: %s\n"
-#: ../src/utils/pactl.c:135
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1473,26 +1750,31 @@ msgstr ""
"Font per omissió: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:160
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Ha fallat en obtenir la informació del conducte: %s\n"
-#: ../src/utils/pactl.c:176
-#, c-format
+#: ../src/utils/pactl.c:194
+#, fuzzy, c-format
msgid ""
-"*** Sink #%u ***\n"
-"Name: %s\n"
-"Driver: %s\n"
-"Sample Specification: %s\n"
-"Channel Map: %s\n"
-"Owner Module: %u\n"
-"Volume: %s\n"
-"Monitor Source: %s\n"
-"Latency: %0.0f usec, configured %0.0f usec\n"
-"Flags: %s%s%s%s%s%s\n"
-"Properties:\n"
-"%s"
+"Sink #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor Source: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Conducte #%u ***\n"
"Nom: %s\n"
@@ -1507,31 +1789,31 @@ msgstr ""
"Propietats:\n"
"%s"
-#: ../src/utils/pactl.c:193
-#: ../src/utils/pactl.c:371
-msgid "muted"
-msgstr "silenciat"
-
-#: ../src/utils/pactl.c:212
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ha fallat en obtenir la informació de la font: %s\n"
-#: ../src/utils/pactl.c:228
-#, c-format
+#: ../src/utils/pactl.c:274
+#, fuzzy, c-format
msgid ""
-"*** Source #%u ***\n"
-"Name: %s\n"
-"Driver: %s\n"
-"Sample Specification: %s\n"
-"Channel Map: %s\n"
-"Owner Module: %u\n"
-"Volume: %s\n"
-"Monitor of Sink: %s\n"
-"Latency: %0.0f usec, configured %0.0f usec\n"
-"Flags: %s%s%s%s%s%s\n"
-"Properties:\n"
-"%s"
+"Source #%u\n"
+"\tState: %s\n"
+"\tName: %s\n"
+"\tDescription: %s\n"
+"\tDriver: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tOwner Module: %u\n"
+"\tMute: %s\n"
+"\tVolume: %s%s%s\n"
+"\t balance %0.2f\n"
+"\tBase Volume: %s%s%s\n"
+"\tMonitor of Sink: %s\n"
+"\tLatency: %0.0f usec, configured %0.0f usec\n"
+"\tFlags: %s%s%s%s%s%s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Font #%u ***\n"
"Nom: %s\n"
@@ -1546,34 +1828,28 @@ msgstr ""
"Propietats:\n"
"%s"
-#: ../src/utils/pactl.c:246
-#: ../src/utils/pactl.c:289
-#: ../src/utils/pactl.c:322
-#: ../src/utils/pactl.c:366
-#: ../src/utils/pactl.c:367
-#: ../src/utils/pactl.c:374
-#: ../src/utils/pactl.c:418
-#: ../src/utils/pactl.c:419
-#: ../src/utils/pactl.c:425
-#: ../src/utils/pactl.c:468
-#: ../src/utils/pactl.c:469
-#: ../src/utils/pactl.c:473
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:263
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Ha fallat en obtenir informació del mòdul: %s\n"
-#: ../src/utils/pactl.c:281
-#, c-format
+#: ../src/utils/pactl.c:342
+#, fuzzy, c-format
msgid ""
-"*** Module #%u ***\n"
-"Name: %s\n"
-"Argument: %s\n"
-"Usage counter: %s\n"
-"Auto unload: %s\n"
+"Module #%u\n"
+"\tName: %s\n"
+"\tArgument: %s\n"
+"\tUsage counter: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Mòdul #%u ***\n"
"Nom: %s\n"
@@ -1581,19 +1857,40 @@ msgstr ""
"Contador d'utilització: %s\n"
"Auto descà rrega: %s\n"
-#: ../src/utils/pactl.c:298
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Ha fallat en obtenir informació: %s\n"
-#: ../src/utils/pactl.c:316
-#, c-format
+#: ../src/utils/pactl.c:379
+#, fuzzy, c-format
msgid ""
+"Client #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
+msgstr ""
"*** Client #%u ***\n"
-"Driver: %s\n"
-"Owner Module: %s\n"
-"Properties:\n"
+"Controlador: %s\n"
+"Propietari del mòdul: %s\n"
+"Propietats:\n"
"%s"
+
+#: ../src/utils/pactl.c:396
+#, fuzzy, c-format
+msgid "Failed to get card information: %s\n"
+msgstr "Ha fallat en obtenir la informació de la cà rrega automà tica: %s\n"
+
+#: ../src/utils/pactl.c:414
+#, fuzzy, c-format
+msgid ""
+"Card #%u\n"
+"\tName: %s\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Client #%u ***\n"
"Controlador: %s\n"
@@ -1601,27 +1898,40 @@ msgstr ""
"Propietats:\n"
"%s"
-#: ../src/utils/pactl.c:333
+#: ../src/utils/pactl.c:428
+#, c-format
+msgid "\tProfiles:\n"
+msgstr ""
+
+#: ../src/utils/pactl.c:434
+#, fuzzy, c-format
+msgid "\tActive Profile: %s\n"
+msgstr "Ha fallat la canonada: %s"
+
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Ha fallat en obtenir informació del conducte d'entrada: %s\n"
-#: ../src/utils/pactl.c:352
-#, c-format
+#: ../src/utils/pactl.c:464
+#, fuzzy, c-format
msgid ""
-"*** Sink Input #%u ***\n"
-"Driver: %s\n"
-"Owner Module: %s\n"
-"Client: %s\n"
-"Sink: %u\n"
-"Sample Specification: %s\n"
-"Channel Map: %s\n"
-"Volume: %s\n"
-"Buffer Latency: %0.0f usec\n"
-"Sink Latency: %0.0f usec\n"
-"Resample method: %s\n"
-"Properties:\n"
-"%s"
+"Sink Input #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSink: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tMute: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSink Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Conducte d'entrada #%u ***\n"
"Controlador: %s\n"
@@ -1637,26 +1947,26 @@ msgstr ""
"Propietats:\n"
"%s"
-#: ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Ha fallat en obtenir la informació del conducte de sortida: %s\n"
-#: ../src/utils/pactl.c:405
-#, c-format
+#: ../src/utils/pactl.c:523
+#, fuzzy, c-format
msgid ""
-"*** Source Output #%u ***\n"
-"Driver: %s\n"
-"Owner Module: %s\n"
-"Client: %s\n"
-"Source: %u\n"
-"Sample Specification: %s\n"
-"Channel Map: %s\n"
-"Buffer Latency: %0.0f usec\n"
-"Source Latency: %0.0f usec\n"
-"Resample method: %s\n"
-"Properties:\n"
-"%s"
+"Source Output #%u\n"
+"\tDriver: %s\n"
+"\tOwner Module: %s\n"
+"\tClient: %s\n"
+"\tSource: %u\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tBuffer Latency: %0.0f usec\n"
+"\tSource Latency: %0.0f usec\n"
+"\tResample method: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Sortida de la font #%u ***\n"
"Driver: %s\n"
@@ -1671,25 +1981,27 @@ msgstr ""
"Propietats:\n"
"%s"
-#: ../src/utils/pactl.c:436
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ha fallat en obteinr informació de la mostra: %s\n"
-#: ../src/utils/pactl.c:455
-#, c-format
+#: ../src/utils/pactl.c:572
+#, fuzzy, c-format
msgid ""
-"*** Sample #%u ***\n"
-"Name: %s\n"
-"Volume: %s\n"
-"Sample Specification: %s\n"
-"Channel Map: %s\n"
-"Duration: %0.1fs\n"
-"Size: %s\n"
-"Lazy: %s\n"
-"Filename: %s\n"
-"Properties:\n"
-"%s"
+"Sample #%u\n"
+"\tName: %s\n"
+"\tSample Specification: %s\n"
+"\tChannel Map: %s\n"
+"\tVolume: %s\n"
+"\t %s\n"
+"\t balance %0.2f\n"
+"\tDuration: %0.1fs\n"
+"\tSize: %s\n"
+"\tLazy: %s\n"
+"\tFilename: %s\n"
+"\tProperties:\n"
+"\t\t%s\n"
msgstr ""
"*** Mostra #%u ***\n"
"Nom: %s\n"
@@ -1703,52 +2015,23 @@ msgstr ""
"Propietats:\n"
"%s"
-#: ../src/utils/pactl.c:481
-#, c-format
-msgid "Failed to get autoload information: %s\n"
-msgstr "Ha fallat en obtenir la informació de la cà rrega automà tica: %s\n"
-
-#: ../src/utils/pactl.c:497
-#, c-format
-msgid ""
-"*** Autoload Entry #%u ***\n"
-"Name: %s\n"
-"Type: %s\n"
-"Module: %s\n"
-"Argument: %s\n"
-msgstr ""
-"*** Entrada de cà rrega automà tica #%u ***\n"
-"Nom: %s\n"
-"Tipus: %s\n"
-"Mòdul: %s\n"
-"Arguments: %s\n"
-
-#: ../src/utils/pactl.c:504
-msgid "sink"
-msgstr "conducte"
-
-#: ../src/utils/pactl.c:504
-msgid "source"
-msgstr "font"
-
-#: ../src/utils/pactl.c:511
-#: ../src/utils/pactl.c:521
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Ha fallat: %s\n"
-#: ../src/utils/pactl.c:545
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ha fallat en pujar la mostra: %s\n"
-#: ../src/utils/pactl.c:562
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "S'ha trobat un fi de fitxer prematurament\n"
-#: ../src/utils/pactl.c:678
-#, c-format
+#: ../src/utils/pactl.c:774
+#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
"%s [options] list\n"
@@ -1762,12 +2045,15 @@ msgid ""
"%s [options] unload-module ID\n"
"%s [options] suspend-sink [SINK] 1|0\n"
"%s [options] suspend-source [SOURCE] 1|0\n"
+"%s [options] set-card-profile [CARD] [PROFILE] \n"
"\n"
" -h, --help Show this help\n"
" --version Show version\n"
"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
msgstr ""
"%s [opcions] stat\n"
"%s [opcions] list\n"
@@ -1784,11 +2070,13 @@ msgstr ""
"\n"
" -h, --help Mostra aquesta ajuda\n"
" --version Mostra la versió\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-se\n"
-" -n, --client-name=NOM Com cridar aquest client al servidor\n"
+" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
+"se\n"
+" -n, --client-name=NOM Com cridar aquest client al "
+"servidor\n"
"\n"
-#: ../src/utils/pactl.c:729
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1799,57 +2087,70 @@ msgstr ""
"Compil·lat amb libpulse %s\n"
"Enllaçat amb libpulse %s\n"
-#: ../src/utils/pactl.c:768
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "Especifiqueu un fitxer de mostra per a carregar\n"
-#: ../src/utils/pactl.c:790
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Ha fallat en obrir el fitxer de so.\n"
-#: ../src/utils/pactl.c:802
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Heu d'especificar un nom de mostra a reproduir\n"
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Heu d'especificar un nom de mostra a esborrar\n"
-#: ../src/utils/pactl.c:822
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr "Heu d'especificar una entrada del conducte i un conducte\n"
-#: ../src/utils/pactl.c:831
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "Heu d'especificar una font de sortida i una font\n"
-#: ../src/utils/pactl.c:845
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Heu d'especificar un nom de mòdul i els seus arguments.\n"
-#: ../src/utils/pactl.c:865
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Heu d'especificar un Ãndex de mòdul\n"
-#: ../src/utils/pactl.c:875
-#, c-format
-msgid "You may not specify more than one sink. You have to specify at least one boolean value.\n"
-msgstr "No harÃeu d'especificar més d'un conducte. Heu d'especifcar com a mÃnim un valor booleà .\n"
+#: ../src/utils/pactl.c:972
+#, fuzzy, c-format
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"No harÃeu d'especificar més d'un conducte. Heu d'especifcar com a mÃnim un "
+"valor booleà .\n"
-#: ../src/utils/pactl.c:888
-#, c-format
-msgid "You may not specify more than one source. You have to specify at least one boolean value.\n"
-msgstr "No harÃeu d'especificar més d'una font. Heu d'especificar com a mÃnim un valor booleà .\n"
+#: ../src/utils/pactl.c:985
+#, fuzzy, c-format
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"No harÃeu d'especificar més d'una font. Heu d'especificar com a mÃnim un "
+"valor booleà .\n"
+
+#: ../src/utils/pactl.c:997
+#, fuzzy, c-format
+msgid "You have to specify a card name/index and a profile name\n"
+msgstr "Heu d'especificar una entrada del conducte i un conducte\n"
-#: ../src/utils/pactl.c:904
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "S'ha especificat una ordre invà lida.\n"
@@ -1861,14 +2162,18 @@ msgid ""
"\n"
" -d Show current PulseAudio data attached to X11 display (default)\n"
" -e Export local PulseAudio data to X11 display\n"
-" -i Import PulseAudio data from X11 display to local environment variables and cookie file.\n"
+" -i Import PulseAudio data from X11 display to local environment "
+"variables and cookie file.\n"
" -r Remove PulseAudio data from X11 display\n"
msgstr ""
-"%s [-D pantalla] [-S servidor] [-O conducte] [-I font] [-c fitxer] [-d|-e|-i|-r]\n"
+"%s [-D pantalla] [-S servidor] [-O conducte] [-I font] [-c fitxer] [-d|-e|-"
+"i|-r]\n"
"\n"
-" -d Mostra les dades actuals de PulseAudio vinculat a una pantalla X11 (per omissió)\n"
+" -d Mostra les dades actuals de PulseAudio vinculat a una pantalla X11 "
+"(per omissió)\n"
" -e Exporta les dades locals de PulseAudio a una pantalla X11\n"
-" -i Importa les dades de PulseAudio de una pantalla X11 a les variables d'entorn locals i a un fitxer cookie\n"
+" -i Importa les dades de PulseAudio de una pantalla X11 a les variables "
+"d'entorn locals i a un fitxer cookie\n"
" -r Esborra les dades de PulseAudio de una pantalla X11\n"
#: ../src/utils/pax11publish.c:94
@@ -1949,19 +2254,17 @@ msgstr "Ha fallat en matar el dimoni PulseAudio."
msgid "Daemon not responding."
msgstr "El dimoni no respon."
-#: ../src/utils/pacmd.c:112
+#: ../src/utils/pacmd.c:144
#, c-format
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:124
-#: ../src/utils/pacmd.c:140
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:153
-#: ../src/utils/pacmd.c:167
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -1991,11 +2294,15 @@ msgid ""
"\n"
" -v, --verbose Enable verbose operation\n"
"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
-" --stream-name=NAME How to call this stream on the server\n"
-" --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
" --channel-map=CHANNELMAP Set the channel map to the use\n"
msgstr ""
"%s [opcions] [FITXER]\n"
@@ -2005,27 +2312,41 @@ msgstr ""
"\n"
" -v, --verbose Habilita les operacions detallades\n"
"\n"
-" -s, --server=SERVIDOR Nom del servidor al qual connectar-se\n"
-" -d, --device=DISPOSITIU Nom del conducte/font al qual connectar-se\n"
-" -n, --client-name=NOM Com cridar aquest client al servidor\n"
+" -s, --server=SERVIDOR Nom del servidor al qual connectar-"
+"se\n"
+" -d, --device=DISPOSITIU Nom del conducte/font al qual "
+"connectar-se\n"
+" -n, --client-name=NOM Com cridar aquest client al "
+"servidor\n"
" --stream-name=NOM Com cridar aquest flux al servidor\n"
-" --volume=VOLUM Especifica el volum inicial lineal dins el rang 0...65536\n"
-" --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per omissió, 44100)\n"
-" --format=FORMATMOSTRA El tipus de mostra, una de s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be (per omissió, s16ne)\n"
-" --channels=CANALS Número de canals, 1 per a mono, 2 per a estèreo\n"
+" --volume=VOLUM Especifica el volum inicial lineal "
+"dins el rang 0...65536\n"
+" --rate=VELOCITATMOSTREIG La velocitat de mostreig en Hz (per "
+"omissió, 44100)\n"
+" --format=FORMATMOSTRA El tipus de mostra, una de s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(per omissió, s16ne)\n"
+" --channels=CANALS Número de canals, 1 per a mono, 2 "
+"per a estèreo\n"
" (per omissió, 2)\n"
" --channel-map=MAPACANAL Mapa de canals a utilitzar\n"
-" --fix-format Pren el format de mostra del conducte al qual s'està connectant\n"
+" --fix-format Pren el format de mostra del "
+"conducte al qual s'està connectant\n"
" el flux.\n"
-" --fix-rate Pren la velocitat de mostreig del conducte al qual\n"
+" --fix-rate Pren la velocitat de mostreig del "
+"conducte al qual\n"
" s'està connectant el flux.\n"
-" --fix-channels Pren el número de canals i el mapa de canals del\n"
-" conducte al qual s'està connectant el flux.\n"
+" --fix-channels Pren el número de canals i el mapa "
+"de canals del\n"
+" conducte al qual s'està connectant "
+"el flux.\n"
" --no-remix No mesclar els canals.\n"
-" --no-remap Mapeja els canals per Ãndex enlloc de per nom .\n"
+" --no-remap Mapeja els canals per Ãndex enlloc "
+"de per nom .\n"
" --latency=BYTES Especifica la latència en bytes.\n"
-" --process-time=BYTES Especifica el temps de procés per petició en bytes.\n"
+" --process-time=BYTES Especifica el temps de procés per "
+"petició en bytes.\n"
#: ../src/utils/paplay.c:255
#, c-format
@@ -2058,8 +2379,64 @@ msgstr "El mapa de canals no coincideix amb el fitxer.\n"
msgid "Using sample spec '%s'\n"
msgstr "S'estan utilitzant les especificacions de mostra '%s'\n"
-#: ../src/pulsecore/lock-autospawn.c:126
-#: ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "No s'ha pogut accedir al bloqueig d'autospawn."
+#~ msgid ""
+#~ "Called SUID root and real-time/high-priority scheduling was requested in "
+#~ "the configuration. However, we lack the necessary priviliges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "La crida de la SUID de root i la prioritat alta/temps real està n "
+#~ "especificades en la configuració, però no té els permissos necessaris:\n"
+#~ "No es pertany al grup '"
+
+#~ msgid ""
+#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
+#~ "For enabling real-time scheduling please acquire the appropriate "
+#~ "PolicyKit priviliges, or become a member of '"
+#~ msgstr ""
+#~ "' i PolicyKit ha denegat els permÃsos. S'està lliberant SUID. \n"
+#~ "Per habilitar la prioritat en temps real, s'ha de adquirir els permissos "
+#~ "de PolicyKit, o pertanyer a '"
+
+#~ msgid ""
+#~ "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this "
+#~ "user."
+#~ msgstr ""
+#~ "', o incremetar els lÃmits de recursos RLIMIT_NICE/RLIMIT_RTPRIO per "
+#~ "aquest usuari."
+
+#~ msgid "Default sink name (%s) does not exist in name register."
+#~ msgstr "El nom sink per omissió (%s) no existeix en el registre de noms."
+
+#~ msgid "Buffer overrun, dropping incoming data\n"
+#~ msgstr ""
+#~ "S'ha sobrepassat la memòria intermitja, s'estan descartant les dades "
+#~ "entrants\n"
+
+#~ msgid "pa_stream_drop() failed: %s\n"
+#~ msgstr "Ha fallat pa_stream_drop(): %s\n"
+
+#~ msgid "muted"
+#~ msgstr "silenciat"
+
+#~ msgid ""
+#~ "*** Autoload Entry #%u ***\n"
+#~ "Name: %s\n"
+#~ "Type: %s\n"
+#~ "Module: %s\n"
+#~ "Argument: %s\n"
+#~ msgstr ""
+#~ "*** Entrada de cà rrega automà tica #%u ***\n"
+#~ "Nom: %s\n"
+#~ "Tipus: %s\n"
+#~ "Mòdul: %s\n"
+#~ "Arguments: %s\n"
+
+#~ msgid "sink"
+#~ msgstr "conducte"
+
+#~ msgid "source"
+#~ msgstr "font"
diff --git a/po/cs.po b/po/cs.po
index 9be3890..c4e857f 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2008-10-19 22:31+0200\n"
"Last-Translator: Petr Kovar <pknbe at volny.cz>\n"
"Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -17,51 +17,51 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -70,7 +70,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -79,7 +79,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -88,6 +88,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "VnitÅnà chyba"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
#, fuzzy
msgid "Failed to find original lt_dlopen loader."
@@ -223,38 +232,38 @@ msgstr "Režim celého systému nenà na této platformÄ podporován."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "NezdaÅila se analýza pÅÃkazového Åádku."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"NacházÃme se ve skupinÄ \"%s\", což umožÅuje plánovánà o vysoké prioritÄ."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "NacházÃme se ve skupinÄ \"%s\", což umožÅuje plánovánà v reálném Äase."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nám udÄlil oprávnÄnà acquire-high-priority."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit nám neudÄlil oprávnÄnà acquire-high-priority."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nám udÄlil oprávnÄnà acquire-real-time."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit nám neudÄlil oprávnÄnà acquire-real-time."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -267,46 +276,46 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Plánovánà o vysoké prioritÄ v konfiguraci zapnuto, ale nepovoleno pravidly."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "ÃspÄÅ¡nÄ zvýšeno RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO selhalo: %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Vzdávánà se CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Plánovánà v reálném Äase v konfiguraci zapnuto, ale nepovoleno pravidly."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "Démon nebÄžÃ"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon bÄžà jako PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabità démona se nezdaÅilo: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -314,143 +323,143 @@ msgstr ""
"Tento program nenà urÄen ke spuÅ¡tÄnà pod superuživatelem (nenÃ-li zadáno --"
"system)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
#, fuzzy
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnÄnà superuživatele."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancÃ."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "BÄžà v systémovém režimu, ale nenastaveno --disallow-exit!"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "BÄžà v systémovém režimu, ale nenastaveno --disallow-module-loading!"
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "BÄžà v systémovém režimu, vynucenÄ se vypÃná režim SHM!"
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "BÄžà v systémovém režimu, vynucenÄ se vypÃná Äas neÄinnosti ukonÄenÃ!"
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "NezdaÅilo se zÃskánà stdio."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "SpuÅ¡tÄnà démona selhalo."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "SpuÅ¡tÄnà démona bylo úspÄÅ¡né."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "PÅekladový poÄÃtaÄ: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "PÅekladové CFLAGS: %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "BÄžà na poÄÃtaÄi: %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "PÅeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "PÅeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "BÄžà v režimu valgrind: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Optimalizované sestavenÃ: ano"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Optimalizované sestavenÃ: ne"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "NezdaÅilo se zÃskánà ID poÄÃtaÄe"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "ID poÄÃtaÄe je %s."
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "PoužÃván bÄhový adresáŠ%s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "PoužÃván stavový adresáŠ%s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "BÄžà v systémovém režimu: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"Jsou dostupné výteÄné ÄasovaÄe o vysokém rozliÅ¡enÃ. Tak s chutà do toho!"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -458,27 +467,27 @@ msgstr ""
"Sorry, vole, kernel error! Tip šéfkuchaÅe na dneÅ¡nà den znÃ: Linux se "
"zapnutými ÄasovaÄi o vysokém rozliÅ¡enÃ."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Selhalo spuÅ¡tÄnà démona."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "SpuÅ¡tÄnà démona bez jakýchkoliv nahraných modulů, bÄh bude odmÃtnut."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "SpuÅ¡tÄnà démona dokonÄeno."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "VypÃnánà démona spuÅ¡tÄno."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Démon ukonÄen."
@@ -711,78 +720,78 @@ msgstr "NaÄÃst Jednou s n"
msgid "Path: %s\n"
msgstr "Cesta: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovacà cÃl \"%s\"."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovacà úroveŠ\"%s\"."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda pÅevzorkovánà \"%s\"."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit na této platformÄ nenà podporováno."
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovacà formát \"%s\"."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovacà frekvence \"%s\"."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovacà kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Neplatné vzorkovacà kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný poÄet fragmentů \"%s\"."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveŠnice \"%s\"."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "NezdaÅilo se otevÅÃt konfiguraÄnà soubor: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Ätenà z konfiguraÄnÃho souboru: %s ###\n"
@@ -1156,6 +1165,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1194,21 +1207,21 @@ msgstr "Selhala analýza dat cookie"
msgid "Failed to open configuration file '%s': %s"
msgstr "Selhalo otevÅenà konfiguraÄnÃho souboru \"%s\": %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Žádný soubor cookie nenahrán. Pokus o spojenà bez tohoto kroku."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "PÅijata zpráva pro neznámé rozÅ¡ÃÅenà \"%s\""
diff --git a/po/de.po b/po/de.po
index e55fd1e..3e78cdb 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-02-19 12:04+0100\n"
"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de at redhat.com>\n"
@@ -18,57 +18,57 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
#, fuzzy
msgid "Analog Stereo"
msgstr "Stereo"
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
#, fuzzy
msgid "Analog Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
#, fuzzy
msgid "Analog Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
#, fuzzy
msgid "Analog Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
#, fuzzy
msgid "Analog Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
#, fuzzy
msgid "Analog Surround 7.1"
msgstr "Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -77,7 +77,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -86,7 +86,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -95,6 +95,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Interner Fehler"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr "Ursprünglicher dlopen-Loader konnte nicht gefunden werden."
@@ -228,40 +237,40 @@ msgstr "System-Modus auf dieser Plattform nicht unterstützt."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
"ermöglicht."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -277,44 +286,44 @@ msgstr ""
"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -322,167 +331,167 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "System-Modus aktiv, jedoch --disallow-module-loading nicht gesetzt!"
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "SeitengröÃe ist %lu Bytes."
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "Der Chefkoch empfiehlt: Linux mit aktivierten hochauslösenden Timern!"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -734,78 +743,78 @@ msgstr "Lade einmalig: %s\n"
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige FragmentgröÃe '%s'."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
@@ -1178,6 +1187,10 @@ msgstr "Veraltete Funktion"
msgid "Missing implementation"
msgstr "Fehlende Implementation"
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1216,21 +1229,21 @@ msgstr "Parsen der Cookie-Daten fehlgeschlagen"
msgid "Failed to open configuration file '%s': %s"
msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Verbindungsversuch ohne Cookie, da keines geladen."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
diff --git a/po/el.po b/po/el.po
index e23edb5..8e930fd 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris at glezos.com>\n"
"Language-Team: Greek <fedora-trans-el at redhat.com>\n"
@@ -16,51 +16,51 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +69,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,7 +78,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,6 +87,14 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+msgid "Internal Audio"
+msgstr ""
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr ""
@@ -220,37 +228,37 @@ msgstr ""
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -263,184 +271,184 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "ÎÏ
ÏÏ ÎµÎ¯Î½Î±Î¹ Ïο PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -448,27 +456,27 @@ msgstr ""
"ÎικΠμοÏ
, ο ÏÏ
ÏÎ®Î½Î±Ï ÏοÏ
είναι για Ïα μÏάζα! Î ÏÏÏÏαÏη ÏοÏ
ÏÎµÏ ÏήμεÏα είναι "
"Linux με ενεÏγοÏοιημÎνα Ïα high-resolution timers!"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr ""
@@ -649,78 +657,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
@@ -1089,6 +1097,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1127,21 +1139,21 @@ msgstr ""
msgid "Failed to open configuration file '%s': %s"
msgstr ""
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr ""
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr ""
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
diff --git a/po/es.po b/po/es.po
index b293ed3..d7b434b 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-01-16 09:25-0300\n"
"Last-Translator: daniel cabrera <h.daniel.cabrera at gmail.com>\n"
"Language-Team: Spanish <fedora-trans-es at redhat.com>\n"
@@ -16,51 +16,51 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +69,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -78,7 +78,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -87,6 +87,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Error interno"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
#, fuzzy
msgid "Failed to find original lt_dlopen loader."
@@ -222,37 +231,37 @@ msgstr "El modo a nivel de sistema no es soportado en esta plataforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "Falló al analizar la lÃnea de comando."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -265,48 +274,48 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitadada la planificación de prioridad alta, pero no están "
"permitidas por la polÃtica."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Fallo en RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitada la planificación en tiempo real, pero no está permitido por "
"la polÃtica."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -314,149 +323,149 @@ msgstr ""
"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
"sea especificado)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
#, fuzzy
msgid "Root privileges required."
msgstr "Se necesitan privilegios de usuario root."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! "
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-"
"module-loading!"
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!"
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!"
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
"appetit!"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -464,29 +473,29 @@ msgstr ""
"¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el "
"chef es Linux con cronómetros de alta resolución activados! "
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
"funcionar."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
@@ -754,78 +763,78 @@ msgstr "Carga una vez: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] Rlimit no soportado en esta plataforma."
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "No se pudo abrir el archivo de configuración: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
@@ -1197,6 +1206,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1235,21 +1248,21 @@ msgstr "Fallo al analizar los datos de la cookie"
msgid "Failed to open configuration file '%s': %s"
msgstr "Fallo al abrir el archivo de configuración '%s': %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "No se ha cargado ninguna cookie. Intentando conectar de todos modos."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(:) %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'"
diff --git a/po/fi.po b/po/fi.po
index ba0b9e7..f3acfea 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-02-13 08:57+0200\n"
"Last-Translator: Timo Jyrinki <timo.jyrinki at iki.fi>\n"
"Language-Team: Finnish <laatu at lokalisointi.org>\n"
@@ -15,51 +15,51 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -68,7 +68,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -77,7 +77,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -86,6 +86,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Sisäinen virhe"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr "Alkuperäisen ld_dlopen-lataimen löytäminen epäonnistui."
@@ -219,37 +228,37 @@ msgstr ""
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -262,46 +271,46 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Tosiaikainen ajoitus otettu käyttöön asetuksissa, mutta käytännöt eivät "
"salli sitä."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -309,144 +318,144 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Suoritetaan järjestelmätilassa, otetaan SHM-tila pakotetusti pois käytöstä."
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Suoritetaan järjestelmätilassa, otetaan poistumisen joutenoloaika "
"pakotetusti pois käytöstä."
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -454,29 +463,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"Taustaprosessin käynnistys ilman ladattavia moduuleita, kieltäydytään "
"toiminnasta."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
@@ -657,78 +666,78 @@ msgstr "Lataa kerran: %s\n"
msgid "Path: %s\n"
msgstr "Polku: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "Epäkelpo kanavakartta\n"
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Luettu asetustiedostosta: %s ###\n"
@@ -1098,6 +1107,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1136,21 +1149,21 @@ msgstr "Evästetietojen jäsennys epäonnistui"
msgid "Failed to open configuration file '%s': %s"
msgstr ""
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Ei ladattua evästettä. Yritetään yhdistämistä ilman."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr ""
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr ""
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 8908a6e..fc1c57c 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2008-10-18 20:34+0200\n"
"Last-Translator: Pablo Martin-Gomez <pablo.martin-gomez at laposte.net>\n"
"Language-Team: Français <fedora-trans-fr at redhat.com>\n"
@@ -19,51 +19,51 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -72,7 +72,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -81,7 +81,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -90,6 +90,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Erreur interne"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
#, fuzzy
msgid "Failed to find original lt_dlopen loader."
@@ -226,40 +235,40 @@ msgstr "Mode système étendu non pris en charge sur cette plateforme."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "Ãchec lors de l'analyse de la ligne de commande"
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nous sommes dans le groupe « %s », permettant une planification à haute "
"priorité."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Nous sommes dans le groupe « %s », permettant une planification en temps réel."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -272,48 +281,48 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La planification à haute priorité est activée dans la configuration mais "
"n'est pas permise par la politique."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Augmentation de RLIMIT_RTPRIO réussie"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO a échoué : %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Abandon de CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La planification en temps réel est activée mais n'est pas permise par la "
"politique."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -321,148 +330,148 @@ msgstr ""
"Le programme n'est pas conçu pour être lancé en tant que root (sauf si --"
"system est renseigné)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
#, fuzzy
msgid "Root privileges required."
msgstr "Les permissions root sont nécessaires."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Le démon s'exécute en mode système, mais --disallow-exit n'est pas défini."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Le démon s'exécute en mode système, mais --disallow-module-loading n'est pas "
"défini."
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Le démon s'exécute en mode système, désactivation forcée du mode SHM."
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Le démon s'exécute en mode système, désactivation forcée de la fermeture "
"après délai d'inactivité."
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "Ãchec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "Ãchec du tube : %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "Ãchec de fork()Â : %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "Ãchec de read()Â : %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Ãchec lors du démarrage du démon."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Ãchec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "Ãchec de pa_pid_file_create()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -470,27 +479,27 @@ msgstr ""
"Eh mec, ton noyau il pue ! La recommandation d'aujourd'hui du patron est "
"d'activer les horloges à haute résolution sur ton Linux."
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "Ãchec de pa_core_new()."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Ãchec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Démarrage du démon sans aucun module chargé : refus de fonctionner."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Démon terminé."
@@ -758,78 +767,78 @@ msgid "Path: %s\n"
msgstr "Chemin : %s\n"
# dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci]
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme."
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãchec lors de l'ouverture du fichier de configuration : %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
@@ -1203,6 +1212,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1241,21 +1254,21 @@ msgstr "Ãchec lors de l'analyse des données du cookie"
msgid "Failed to open configuration file '%s': %s"
msgstr "Ãchec lors de l'ouverture du fichier de configuration « %s » :%s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Aucun cookie chargé. Tentative de connexion sans celui-ci."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork()Â : %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid()Â : %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Message reçu pour une extension inconnue « %s »"
diff --git a/po/it.po b/po/it.po
index 96660b8..893d9db 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-02-23 19:19+0100\n"
"Last-Translator: Luca Ferretti <elle.uca at libero.it>\n"
"Language-Team: Italiano <tp at lists.linux.it>\n"
@@ -15,57 +15,57 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
#, fuzzy
msgid "Analog Stereo"
msgstr "Stereo"
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
#, fuzzy
msgid "Analog Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
#, fuzzy
msgid "Analog Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
#, fuzzy
msgid "Analog Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
#, fuzzy
msgid "Analog Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
#, fuzzy
msgid "Analog Surround 7.1"
msgstr "Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -74,7 +74,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -83,7 +83,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -92,6 +92,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Errore interno"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr "Ricerca del loader lt_dlopen originale non riuscita."
@@ -226,37 +235,37 @@ msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Privilegi acquire-real-time assegnati da PolicyKit."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Privilegi acquire-real-time rifiutati da PolicyKit."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -269,49 +278,49 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Scheduling high-priority abilitato nella configurazione, ma non ammesso "
"dalla politica."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Incremento di RLIMIT_RTPRIO riuscito"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO non riuscito: %s"
# abbandono??
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Abbandono del CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Scheduling real-time abilitato nella configurazione, ma non ammesso dalla "
"politica."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -319,150 +328,150 @@ msgstr ""
"Questo programma non è pensato per essere eseguito come root (a meno di "
"specificare --system)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "In esecuzione in modalità sistema, ma --disallow-exit non impostato."
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"In esecuzione in modalità sistema, ma --disallow-module-loading non "
"impostato."
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"In esecuzione in modalità sistema, disabilitata modalità SHM in modo forzoso."
# tempo idle????
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"In esecuzione in modalità sistema, disabilitato il tempo idle di uscita in "
"modo forzoso."
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Disponibili timer high-resolution freschi freschi! Buon appetito!"
# $REPEAT_PREVIOUS_COMMENT_HERE
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -470,27 +479,27 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Avvio del demone senza alcun modulo caricato, rifiuta di lavorare."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Demone terminato."
@@ -783,79 +792,79 @@ msgstr "Caricato una sola volta: %s\n"
msgid "Path: %s\n"
msgstr "Percorso: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit non supportato su questa piattaforma."
# o campionamento?? ma campionamento non è sampling?
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lettura dal file di configurazione: %s ###\n"
@@ -1228,6 +1237,10 @@ msgstr "Funzionalità obsoleta"
msgid "Missing implementation"
msgstr "Implementazione mancante"
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1266,21 +1279,21 @@ msgstr "Analisi dei dati cookie non riuscita"
msgid "Failed to open configuration file '%s': %s"
msgstr "Apertura del file di configurazione \"%s\" non riuscita: %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nessun cookie caricato. Tentativo di connettersi senza."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
diff --git a/po/pl.po b/po/pl.po
index 7132812..24283d3 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-02-25 00:31+0100\n"
"Last-Translator: Piotr DrÄ
g <piotrdrag at gmail.com>\n"
"Language-Team: Polish <pl at li.org>\n"
@@ -13,51 +13,51 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr "Analogowe mono"
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr "Analogowe stereo"
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr "Cyfrowe stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr "Cyfrowe stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr "Analogowe surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Cyfrowe surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr "Analogowe surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr "Analogowe surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr "Analogowe surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Cyfrowe surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr "Analogowe surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -69,7 +69,7 @@ msgstr ""
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA \"%s\". ProszÄ zgÅosiÄ ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -81,7 +81,7 @@ msgstr ""
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA \"%s\". ProszÄ zgÅosiÄ ten "
"problem programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -93,6 +93,15 @@ msgstr ""
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA \"%s\". ProszÄ zgÅosiÄ ten "
"problem programistom ALSA."
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "WewnÄtrzny bÅÄ
d"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr ""
@@ -227,39 +236,39 @@ msgstr "Tryb systemowy nie jest obsÅugiwany na tej platformie."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceÅ nie powiodÅa siÄ."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie o wysokim priorytecie."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie w czasie rzeczywistym."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nadaÅ uprawnienie \"acquire-high-priority\"."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odmówiŠnadania uprawnienia \"acquire-high-priority\"."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nadaÅ uprawnienie \"acquire-real-time\"."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odmówiŠnadania uprawnienia \"acquire-real-time\"."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -271,57 +280,57 @@ msgid ""
"appropriate PolicyKit privileges, or become a member of '%s', or increase "
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"W konfiguracji zażÄ
dano SUID roota i szeregowanie w czasie rzeczywistym "
-"i/lub o wysokim priorytecie. Brak wymaganych uprawnieÅ:\n"
+"W konfiguracji zażÄ
dano SUID roota i szeregowanie w czasie rzeczywistym i/"
+"lub o wysokim priorytecie. Brak wymaganych uprawnieÅ:\n"
"Nie jesteÅmy w grupie \"%s\", PolicyKit odmawia przyznania żÄ
danych "
"uprawnieÅ i brak ograniczeÅ zwiÄkszania zasobów RLIMIT_NICE/RLIMIT_RTPRIO.\n"
"Aby wÅÄ
czyÄ szeregowanie w czasie rzeczywistym i/lub o wysokim priorytecie, "
-"należy uzyskaÄ odpowiednie uprawnienia PolicyKit, zostaÄ czÅonkiem grupy "
-"\"%s\" lub zwiÄkszyÄ ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego "
+"należy uzyskaÄ odpowiednie uprawnienia PolicyKit, zostaÄ czÅonkiem grupy \"%s"
+"\" lub zwiÄkszyÄ ograniczenia zasobów RLIMIT_NICE/RLIMIT_RTPRIO dla tego "
"użytkownika."
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie o wysokim priorytecie jest wÅÄ
czone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "PomyÅlnie zwiÄkszono RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Oddawanie CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie w czasie rzeczywistym jest wÅÄ
czone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -329,146 +338,146 @@ msgstr ""
"Ten program nie powinien byÄ uruchomiany jako root (chyba, że podano --"
"system)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
msgid "Root privileges required."
msgstr "Wymagane sÄ
uprawnienia roota."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start nie jest obsÅugiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Uruchamianie w trybie systemowym, ale --disallow-exit nie jest ustawione!"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Uruchamianie w trybie systemowym, ale --disallow-module-loading nie jest "
"ustawione!"
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyÅÄ
czenia trybu SHM!"
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Uruchamianie w trybie systemowym, wymuszanie wyÅÄ
czenia czasu oczekiwania na "
"zakoÅczenie!"
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejÅcia/wyjÅcia nie powiodÅo siÄ."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódÅ siÄ: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "PomyÅlnie uruchomiono demona."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsÅugÄ
Valgrind: tak"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsÅugÄ
Valgrind: nie"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodÅo siÄ"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Åwieże zegary o wysokiej rozdzielczoÅci! Smacznego!"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -476,27 +485,27 @@ msgstr ""
"KoleÅ, twoje jÄ
dro Åmierdzi! Szef kuchni poleca dzisiaj Linuksa w wÅÄ
czonymi "
"zegarami o wysokiej rozdzielczoÅci!"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych moduÅów, odmawianie pracy."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "ZakoÅczono uruchamianie demona."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyÅÄ
czenie demona."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Demon zostaÅ zniszczony."
@@ -757,72 +766,72 @@ msgstr "Wczytanie jednorazowe: %s\n"
msgid "Path: %s\n"
msgstr "Åcieżka: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] NieprawidÅowy dziennik docelowy \"%s\"."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom dziennika \"%s\"."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] NieprawidÅowa metoda resamplingu \"%s\"."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] NieprawidÅowy rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nie jest obsÅugiwany na tej platformie."
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] NieprawidÅowy format próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] NieprawidÅowa czÄstotliwoÅÄ próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] NieprawidÅowe kanaÅy próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] NieprawidÅowa mapa kanaÅów \"%s\"."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] NieprawidÅowa liczba fragmentów \"%s\"."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] NieprawidÅowy rozmiar fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodÅo siÄ: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -830,7 +839,7 @@ msgstr ""
"Podana domyÅlna mapa kanaÅów ma innÄ
liczbÄ kanaÅów niż podana domyÅlna "
"liczba kanaÅów."
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Odczytano z pliku konfiguracji: %s ###\n"
@@ -1205,6 +1214,10 @@ msgstr "PrzestarzaÅa funkcjonalnoÅÄ"
msgid "Missing implementation"
msgstr "Brak implementacji"
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1243,21 +1256,21 @@ msgstr "Analiza danych ciasteczka nie powiodÅo siÄ"
msgid "Failed to open configuration file '%s': %s"
msgstr "Otwarcie pliku konfiguracji \"%s\" nie powiodÅo siÄ: %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nie wczytano ciasteczka. Próbowanie poÅÄ
czenia siÄ bez niego."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Otrzymano komunikat z nieznanego powodu \"%s\""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index c6d4c11..6bb158c 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2008-11-21 01:21-0300\n"
"Last-Translator: Henrique (LonelySpooky) Junior <lspooky at fedoraproject.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br at redhat.com>\n"
@@ -18,51 +18,51 @@ msgstr ""
"X-Poedit-Language: Brazilian Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -71,7 +71,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -80,7 +80,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -89,6 +89,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Erro interno"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
#, fuzzy
msgid "Failed to find original lt_dlopen loader."
@@ -224,37 +233,37 @@ msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "Falha em interpretar a linha de comando."
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real."
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -267,48 +276,48 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de alta prioridade foi habilitado para esta configuração, "
"mas não é permitida pela polÃtica."
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO aumentado com sucesso"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO falhou: %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de tempo real foi habilitado pela configuração, mas não é "
"permitido pela polÃtica."
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -316,144 +325,144 @@ msgstr ""
"Este programa não é para ser executado como root (a não ser que --system "
"seja especificado)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
#, fuzzy
msgid "Root privileges required."
msgstr "Privilégios de rot são requeridos."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Executando em no modo system, mas --disallow-exit não foi configurado!"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Executando no modo system, mas --disallow-module-loading não foi configurado!"
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Executando no modo system, desabilitando forçadamente o exit idle time!"
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponÃveis! Bon appetit!"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -461,28 +470,28 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "Daemon terminado."
@@ -742,78 +751,78 @@ msgstr "Carrega uma vez: %s\n"
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NÃvel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não tem suporte nessa plataforma."
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Números de fragmentos inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lido do arquivo de configuração: %s ###\n"
@@ -1185,6 +1194,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1223,21 +1236,21 @@ msgstr "Falhou ao analisar os dados do cookie"
msgid "Failed to open configuration file '%s': %s"
msgstr "Falha em abrir o arquivo de configuração '%s': %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nenhum cookie foi carregado. Tentativa de conexão sem eles."
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'"
diff --git a/po/sv.po b/po/sv.po
index 2e70d8c..2e3d17e 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
@@ -15,51 +15,51 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -68,7 +68,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -77,7 +77,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -86,6 +86,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "Internt fel"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr ""
@@ -220,37 +229,37 @@ msgstr ""
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -263,44 +272,44 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO misslyckades: %s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -308,168 +317,168 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr ""
@@ -653,78 +662,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Sökväg: %s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
@@ -1095,6 +1104,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1133,21 +1146,21 @@ msgstr ""
msgid "Failed to open configuration file '%s': %s"
msgstr "Misslyckades med att öppna konfigurationsfilen \"%s\": %s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr ""
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 96fdeb7..cbf4eaf 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-24 11:33+0100\n"
+"POT-Creation-Date: 2009-03-05 12:27+0100\n"
"PO-Revision-Date: 2009-01-24 12:47+0800\n"
"Last-Translator: çæ³½å½ <zak.zeguo.wang at gmail.com>\n"
"Language-Team: Chinese/Simplified\n"
@@ -17,51 +17,51 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:526
+#: ../src/modules/alsa/alsa-util.c:530
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:532
+#: ../src/modules/alsa/alsa-util.c:536
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:538
+#: ../src/modules/alsa/alsa-util.c:542
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:544
+#: ../src/modules/alsa/alsa-util.c:548
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:551
+#: ../src/modules/alsa/alsa-util.c:555
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:558
+#: ../src/modules/alsa/alsa-util.c:562
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:566
+#: ../src/modules/alsa/alsa-util.c:570
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:574
+#: ../src/modules/alsa/alsa-util.c:578
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:582
+#: ../src/modules/alsa/alsa-util.c:586
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:590
+#: ../src/modules/alsa/alsa-util.c:594
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:599
+#: ../src/modules/alsa/alsa-util.c:603
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1582
+#: ../src/modules/alsa/alsa-util.c:1602
#, c-format
msgid ""
"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
@@ -70,7 +70,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1622
+#: ../src/modules/alsa/alsa-util.c:1642
#, c-format
msgid ""
"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
@@ -79,7 +79,7 @@ msgid ""
"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1668
+#: ../src/modules/alsa/alsa-util.c:1688
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
@@ -88,6 +88,15 @@ msgid ""
"to the ALSA developers."
msgstr ""
+#: ../src/pulsecore/sink.c:1963
+#, fuzzy
+msgid "Internal Audio"
+msgstr "å
é¨é误"
+
+#: ../src/pulsecore/sink.c:1969
+msgid "Modem"
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
#, fuzzy
msgid "Failed to find original lt_dlopen loader."
@@ -223,37 +232,37 @@ msgstr "æ¤å¹³å°ä¸æ¯æsystem-wide模å¼ã"
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败ï¼%s"
-#: ../src/daemon/main.c:432
+#: ../src/daemon/main.c:434
msgid "Failed to parse command line."
msgstr "åæå½ä»¤è¡å¤±è´¥ã"
-#: ../src/daemon/main.c:456
+#: ../src/daemon/main.c:458
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "æ们å¨'%s'ç»ä¸ï¼å
许é«ä¼å
级è°åº¦ã"
-#: ../src/daemon/main.c:463
+#: ../src/daemon/main.c:465
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "æ们å¨'%s'ç»ä¸ï¼å
许å®æ¶è°åº¦ã"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:473
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKitæäºæ们âè·åé«ä¼å
级âæéã"
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:476
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKitæç»âè·åé«ä¼å
级âæéã"
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:481
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKitæäºæ们âè·åå®æ¶âæéã"
-#: ../src/daemon/main.c:482
+#: ../src/daemon/main.c:484
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKitæç»æ们âè·åå®æ¶âæéã"
-#: ../src/daemon/main.c:511
+#: ../src/daemon/main.c:513
#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
@@ -266,211 +275,211 @@ msgid ""
"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:536
+#: ../src/daemon/main.c:538
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "é
ç½®ä¸å·²å¯ç¨é«ä¼å
级è°åº¦ï¼ä½çç¥æªå
许ã"
-#: ../src/daemon/main.c:565
+#: ../src/daemon/main.c:567
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "æé«RLIMIT_RTPRIOæåã"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:570
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO失败ï¼%s"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:577
msgid "Giving up CAP_NICE"
msgstr "æ£å¨æ¾å¼CAP_NICE"
-#: ../src/daemon/main.c:582
+#: ../src/daemon/main.c:584
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "é
ç½®ä¸å·²å¯ç¨å®æ¶è°åº¦ï¼ä½çç¥æªå
许ã"
-#: ../src/daemon/main.c:643
+#: ../src/daemon/main.c:645
msgid "Daemon not running"
msgstr "åå°ç¨åºæ²¡æè¿è¡"
-#: ../src/daemon/main.c:645
+#: ../src/daemon/main.c:647
#, c-format
msgid "Daemon running as PID %u"
msgstr "åå°ç¨åºæ£å¨è¿è¡ï¼PID %u"
-#: ../src/daemon/main.c:655
+#: ../src/daemon/main.c:657
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ææ»åå°ç¨åºå¤±è´¥ï¼%s"
-#: ../src/daemon/main.c:673
+#: ../src/daemon/main.c:675
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ä¸åºä»¥root身份è¿è¡æ¬ç¨åºï¼é¤éæå® --systemï¼ã"
-#: ../src/daemon/main.c:675
+#: ../src/daemon/main.c:677
#, fuzzy
msgid "Root privileges required."
msgstr "éè¦rootæéã"
-#: ../src/daemon/main.c:680
+#: ../src/daemon/main.c:682
msgid "--start not supported for system instances."
msgstr "ç³»ç»å®ä¾ä¸æ¯æ --startã"
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:687
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-exit æªè®¾å®ï¼"
-#: ../src/daemon/main.c:688
+#: ../src/daemon/main.c:690
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-module-loading æªè®¾å®ï¼"
-#: ../src/daemon/main.c:691
+#: ../src/daemon/main.c:693
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨SHM模å¼ï¼"
-#: ../src/daemon/main.c:696
+#: ../src/daemon/main.c:698
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨éåºç©ºé²æ¶é´ï¼"
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:725
msgid "Failed to acquire stdio."
msgstr "è·åstdio失败ã"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:731
#, c-format
msgid "pipe failed: %s"
msgstr "管é失败ï¼%s"
-#: ../src/daemon/main.c:734
+#: ../src/daemon/main.c:736
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败ï¼%s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:750
#, c-format
msgid "read() failed: %s"
msgstr "read()失败ï¼%s"
-#: ../src/daemon/main.c:754
+#: ../src/daemon/main.c:756
msgid "Daemon startup failed."
msgstr "åå°ç¨åºå¯å¨å¤±è´¥ã"
-#: ../src/daemon/main.c:756
+#: ../src/daemon/main.c:758
msgid "Daemon startup successful."
msgstr "åå°ç¨åºå¯å¨æåã"
-#: ../src/daemon/main.c:826
+#: ../src/daemon/main.c:828
#, c-format
msgid "This is PulseAudio %s"
msgstr "è¿æ¯ PulseAudio %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:829
#, c-format
msgid "Compilation host: %s"
msgstr "ç¼è¯ä¸»æºï¼%s"
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:830
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ç¼è¯CFLAGSï¼%s"
-#: ../src/daemon/main.c:831
+#: ../src/daemon/main.c:833
#, c-format
msgid "Running on host: %s"
msgstr "æ£å¨ä¸»æºä¸è¿è¡ï¼%s"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:836
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:836
+#: ../src/daemon/main.c:838
#, c-format
msgid "Page size is %lu bytes"
msgstr "页é¢å¤§å°ä¸º%luåè"
-#: ../src/daemon/main.c:839
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: yes"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼æ¯"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:843
msgid "Compiled with Valgrind support: no"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼å¦"
-#: ../src/daemon/main.c:844
+#: ../src/daemon/main.c:846
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "æ£å¨ä»¥valgrind模å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:849
msgid "Optimized build: yes"
msgstr "ä¼åçæï¼æ¯"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:851
msgid "Optimized build: no"
msgstr "ä¼åçæï¼å¦"
-#: ../src/daemon/main.c:853
+#: ../src/daemon/main.c:855
msgid "Failed to get machine ID"
msgstr "è·åmachine ID失败"
-#: ../src/daemon/main.c:856
+#: ../src/daemon/main.c:858
#, c-format
msgid "Machine ID is %s."
msgstr "machine IDæ¯%sã"
-#: ../src/daemon/main.c:861
+#: ../src/daemon/main.c:863
#, c-format
msgid "Using runtime directory %s."
msgstr "æ£å¨ä½¿ç¨è¿è¡æ¶æ件夹%sã"
-#: ../src/daemon/main.c:866
+#: ../src/daemon/main.c:868
#, c-format
msgid "Using state directory %s."
msgstr "æ£å¨ä½¿ç¨ç¶ææ件夹%sã"
-#: ../src/daemon/main.c:869
+#: ../src/daemon/main.c:871
#, c-format
msgid "Running in system mode: %s"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:884
+#: ../src/daemon/main.c:886
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败ã"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:898
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "æ°é²çé«å辨ç计æ¶å¨å¼é
äºï¼å个饱ï¼"
-#: ../src/daemon/main.c:898
+#: ../src/daemon/main.c:900
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "èå
ï¼ä½ çå
æ ¸çèï¼ç°å¨æµè¡çæ¯å¯ç¨äºé«å辩ç计åå¨çLinuxï¼"
-#: ../src/daemon/main.c:910
+#: ../src/daemon/main.c:912
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败ã"
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:974
msgid "Failed to initialize daemon."
msgstr "åå°ç¨åºåå§å失败ã"
-#: ../src/daemon/main.c:977
+#: ../src/daemon/main.c:979
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "åå°ç¨åºå¯å¨æªå 载任ä½æ¨¡åï¼æç»å·¥ä½ã"
-#: ../src/daemon/main.c:990
+#: ../src/daemon/main.c:992
msgid "Daemon startup complete."
msgstr "åå°ç¨åºå¯å¨å®æã"
-#: ../src/daemon/main.c:996
+#: ../src/daemon/main.c:998
msgid "Daemon shutdown initiated."
msgstr "å¼å§å
³éåå°ç¨åºã"
-#: ../src/daemon/main.c:1014
+#: ../src/daemon/main.c:1016
msgid "Daemon terminated."
msgstr "åå°ç¨åºå·²ç»æ¢ã"
@@ -708,78 +717,78 @@ msgstr "å è½½ä¸æ¬¡ï¼%s\n"
msgid "Path: %s\n"
msgstr "è·¯å¾ï¼%s\n"
-#: ../src/daemon/daemon-conf.c:213
+#: ../src/daemon/daemon-conf.c:215
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] æ æçæ¥å¿ç®æ '%s'ã"
-#: ../src/daemon/daemon-conf.c:229
+#: ../src/daemon/daemon-conf.c:231
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] æ æçæ¥å¿çº§å«'%s'ã"
-#: ../src/daemon/daemon-conf.c:245
+#: ../src/daemon/daemon-conf.c:247
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] æ æçééæ ·æ¹æ³'%s'ã"
-#: ../src/daemon/daemon-conf.c:268
+#: ../src/daemon/daemon-conf.c:270
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] æ æçrlimit '%s'ã"
-#: ../src/daemon/daemon-conf.c:275
+#: ../src/daemon/daemon-conf.c:277
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] æ¤å¹³å°ä¸æ¯ærlimitã"
-#: ../src/daemon/daemon-conf.c:291
+#: ../src/daemon/daemon-conf.c:293
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] æ æçæ ·åæ ¼å¼'%s'ã"
-#: ../src/daemon/daemon-conf.c:309
+#: ../src/daemon/daemon-conf.c:311
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] æ æçæ ·åç'%s'ã"
-#: ../src/daemon/daemon-conf.c:333
+#: ../src/daemon/daemon-conf.c:335
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] æ æçæ ·åéé'%s'ã"
-#: ../src/daemon/daemon-conf.c:351
+#: ../src/daemon/daemon-conf.c:353
#, fuzzy, c-format
msgid "[%s:%u] Invalid channel map '%s'."
msgstr "[%s:%u] æ æçæ ·åéé'%s'ã"
-#: ../src/daemon/daemon-conf.c:369
+#: ../src/daemon/daemon-conf.c:371
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] æ æçå段æ°'%s'ã"
-#: ../src/daemon/daemon-conf.c:387
+#: ../src/daemon/daemon-conf.c:389
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] æ æçå段大å°'%s'ã"
-#: ../src/daemon/daemon-conf.c:405
+#: ../src/daemon/daemon-conf.c:407
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] æ æçnice level '%s'ã"
-#: ../src/daemon/daemon-conf.c:518
+#: ../src/daemon/daemon-conf.c:522
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "æå¼é
ç½®æ件失败ï¼%s"
-#: ../src/daemon/daemon-conf.c:534
+#: ../src/daemon/daemon-conf.c:538
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
msgstr ""
-#: ../src/daemon/daemon-conf.c:612
+#: ../src/daemon/daemon-conf.c:616
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ä»é
ç½®æ件读åï¼%s ###\n"
@@ -1151,6 +1160,10 @@ msgstr ""
msgid "Missing implementation"
msgstr ""
+#: ../src/pulse/error.c:67
+msgid "Client forked"
+msgstr ""
+
#: ../src/pulse/sample.c:169
#, c-format
msgid "%s %uch %uHz"
@@ -1189,21 +1202,21 @@ msgstr "cookieæ°æ®åæ失败"
msgid "Failed to open configuration file '%s': %s"
msgstr "æå¼é
ç½®æ件'%s'失败ï¼%s"
-#: ../src/pulse/context.c:519
+#: ../src/pulse/context.c:523
msgid "No cookie loaded. Attempting to connect without."
msgstr "没æå è½½cookieãå°è¯ä¸å è½½cookieè¿è¡è¿æ¥ã"
-#: ../src/pulse/context.c:649
+#: ../src/pulse/context.c:653
#, c-format
msgid "fork(): %s"
msgstr "fork()ï¼%s"
-#: ../src/pulse/context.c:702
+#: ../src/pulse/context.c:706
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid()ï¼%s"
-#: ../src/pulse/context.c:1279
+#: ../src/pulse/context.c:1304
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "æ¶å°æªç¥æ©å±'%s'çä¿¡æ¯"
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list