[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master-tx, updated. v0.9.16-test4-113-gf4f16ab
Lennart Poettering
gitmailer-noreply at 0pointer.de
Tue Aug 18 19:16:51 PDT 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 91e06c12053f7835bb4fc2c77745c7a65f8610e2 (commit)
- Log -----------------------------------------------------------------
f4f16ab i18n: run make update-po
8f29090 i18n: add ko to LINGUAS
b2cb8ef Merge commit 'origin/master-tx'
7af3833 lirc: replace manual code by pa_cvolume_{inc|dec}()
2f54798 mmkbd: replace manual code by pa_cvolume_{inc|dec}()
8c31974 sink: volume handling rework, new flat volume logic
5207e19 match: document how broken the module-match logic is
cfef930 volume: introduce pa_cvolume_{inc|dec}()
1421eff volume: use PA_VOLUME_MAX instead of (pa_volume_t) -1
d6f598a udev: allow passing of ignore_dB= parameter to alsa modules
24e5828 source: rework volume handling
2838b78 macro: extend comments a bit
a69b729 voltest: extend test to verify correctness of _multiply() and _divide()
2223a9f dbus: never return DBUS_HANDLER_RESULT_HANDLED in filter callbacks, since other callbacks might stell want to have the messages
ef01baf volume: round properly when showing human readable volume percentages
96f01b8 volume: simplify volume multiplifactions, do them in integer only
d634555 volume: introduce pa_cvolume_min() and pa_cvolume_min_mask()
8f928b2 macro: simplify page/word alignment macros a bit
fe3a21f macro: add PA_ROUND_UP/PA_ROUND_DOWN macros
319d187 bluetooth: fix match syntax
90a0743 bluetooth: make NameOwnerChanged filter matches more focussed
ffeb1b8 volume: document when arguments of certain functions may overlap
caa7928 libpulse: some minor optimizations when checking equality
50de2d8 channelmap: minor doxygen fix
6dd580d channelmap: document where the WAVEX channelmap is documented
32a1ef3 channelmap: adjust RFC3551 channel maps to follow spec more closely
c579cb5 reserver: update from upstream git
8208214 volume: add pa_cvolume_merge() call
01e4b61 aupdate: implicitly call _write_swap() if it wasn't called explicitly
8dd0d87 core: add to FIXMEs
4c29ba9 modules: add various checks to avoid selecting objects that are not linked or in another unclear state
2a39663 bluetooth: move installation of mq's earlier to avoid context asserts to be triggered
de4968c bluetooth: ask first for Headset and AudioSink properties, followed by Audio
fa52a91 bluetooth: recognize only those BT devices that implement both the Audio and either AudioSink or Headset interfaces
5c90cf2 bluetooth: drop PA_BT_AUDIO_STATE_LAST since it is unused and we normally call that _MAX anyway
011add1 thread-mq: do final q flush only when we aren't dispatching anyway
0c20e74 asyncmsgq: introduce pa_asyncmsgq_dispatching()
e5b08a8 ladspa/remap: sync latency flags from master sink when moving between sinks
0c08dbd core: introduce pa_{sink|source}_update_flags()
d8a90a3 pulse: even in case of record stream, let's initialize req_bytes to 0
3ecb80e bluetooth: fix typo with service_{read,write}_type
fd32fee bluetooth: don't call pa_sink_render with 0 bytes request
ea5cdcb database: simple hashmap based database implementation
61105df combine: determine sample parameters of combined sink from underlying sinks
1eeddd8 combine: warn when the latency of a stream gets too high
e1f3f5e combine: big rework
8947d65 combine: drop adjust_timestamp variable because it is unused
a5b2dee ladspa: name sink after human readable plugin name, not the id string
7638662 module-ladspa: allow moving of sink, forward fixed latency
1b3848e module-remap: allow moving of sink, forward fixed latency
c44f518 ladspa: move LADSPA_Data size check to compile time
fb5205d remap: unify argument order with other modules
d9e4605 hook-list: make use of PA_LLIST_FOREACH
d7d86e3 native-protocol: downgrade volume change log messages
3c271ae core: document difference between IO and main thread view on requested latency
c6080d8 core: don't update latency range if not changed
3f9c67a core: call pa_sink_get_latency_within_thread() instead of going directly via process_msg()
350a2bc core: make fixed latency dynamically changeable
4eb59fb core: move rtpoll to thread_info sub structure
58d441f log: place more rate limit invocations
fd1266c rescure-stream: handle failed moves as well as dying sinks/sources
e4db56b core: split of FAIL_ON_SUSPEND into KILL_ON_SUSPEND and NO_CREATE_ON_SUSPEND
e53d2fc native: handle moving() callback with NULL destination properly
0989be1 core: introduce pa_{sink_input|source_output}_fail_move()
7891f96 module-stream-restore: don't fiddle with sinks/sources/streams that are not fully set up yet
0f2a4ed volume: guarantee dB/linear conversion is reversible
72d2540 protocol-native: log explicitly each time a client triggers a volume change
a1598c7 daemon: reset gids too, not just uids
fecd0dc resampler: round up when estimating input/output sizes
9e21182 thread-mq: never drop queued messages for the main loop
446fb2c asyncmsgq: add pa_asyncmsgq_flush() call
a42c597 memblockq: add pa_memblockq_get_maxrewind() API
b0cabfe shm: bump shm size limit to 1GB
aae7054 pacmd: handle multi word commands in argv[] properly
5ee4069 core: add functions to query max_rewind/max_request values from streams
9a95fe4 core: add assert macros for verifying calling context
17d5741 start-child: clean up child environment a bit better
5fcb8a3 pacmd: port pacmd from select() to poll() so that we notice writer side hangups
286ab2f memblock: rate limit 'Pool full' message
5921324 context: document why we only do minimal cleanups before the autospawn exec()
27b8cd7 daemon: reset scheduling priority on startup, too
ef176ec core-util: move personality resetting into core-util
9f53aa5 daemon: unconditionally clean up priviliges
facae1f conf: invert all negative boolean configuration option
8998cba conf: add pa_config_parse_not_bool() for parsing inverse boolean configuration options
eb40da2 daemon: install D-Bus system policy file for PA system instances
e834034 alsa: enable ext. amplifier by default
462cdf4 alsa: adjust priority bonus of mappings that match the configured default channel map
d27e26d volume-restore: forward module load return value of stream-restore back to caller
c117feb hal: replace subdevs= parameter by subdevices= parameter
c1039c9 udev: drop definition of LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
c904f97 hal: add stub module that loads module-udev-detect instead of module-hal-detect
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 51 ++-
man/pulse-client.conf.5.xml.in | 4 +-
man/pulse-daemon.conf.5.xml.in | 59 +-
po/LINGUAS | 1 +
po/as.po | 212 +++---
po/bn_IN.po | 212 +++---
po/ca.po | 212 +++---
po/cs.po | 320 +++++----
po/de.po | 212 +++---
po/de_CH.po | 212 +++---
po/el.po | 204 +++---
po/es.po | 831 ++++++++++++-------
po/fi.po | 212 +++---
po/fr.po | 212 +++---
po/gu.po | 212 +++---
po/hi.po | 212 +++---
po/it.po | 212 +++---
po/kn.po | 212 +++---
po/ko.po | 204 +++---
po/mr.po | 212 +++---
po/nl.po | 208 +++---
po/or.po | 212 +++---
po/pa.po | 212 +++---
po/pl.po | 212 +++---
po/pt.po | 212 +++---
po/pt_BR.po | 774 +++++++++++-------
po/sr.po | 212 +++---
po/sr at latin.po | 212 +++---
po/sv.po | 211 +++---
po/ta.po | 212 +++---
po/te.po | 212 +++---
po/uk.po | 212 +++---
po/zh_CN.po | 212 +++---
src/Makefile.am | 21 +-
src/daemon/caps.c | 15 +-
src/daemon/daemon-conf.c | 18 +-
src/daemon/daemon.conf.in | 12 +-
src/daemon/main.c | 11 +-
src/daemon/pulseaudio-system.conf | 37 +
src/map-file | 5 +
src/modules/alsa/alsa-mixer.c | 4 +-
src/modules/alsa/alsa-sink.c | 42 +-
src/modules/alsa/alsa-source.c | 37 +-
.../alsa/mixer/paths/analog-output.conf.common | 4 +-
src/modules/bluetooth/bluetooth-util.c | 18 +-
src/modules/bluetooth/bluetooth-util.h | 3 +-
src/modules/bluetooth/module-bluetooth-device.c | 39 +-
src/modules/module-combine.c | 541 ++++++++-----
src/modules/module-console-kit.c | 2 -
src/modules/module-device-restore.c | 2 +-
...volume-restore.c => module-hal-detect-compat.c} | 34 +-
src/modules/module-hal-detect.c | 13 +-
src/modules/module-intended-roles.c | 54 ++-
src/modules/module-ladspa-sink.c | 142 ++--
src/modules/module-lirc.c | 28 +-
src/modules/module-match.c | 5 +-
src/modules/module-mmkbd-evdev.c | 49 +-
src/modules/module-remap-sink.c | 139 ++--
src/modules/module-rescue-streams.c | 179 ++++-
src/modules/module-stream-restore.c | 132 +++-
src/modules/module-tunnel.c | 4 +-
src/modules/module-udev-detect.c | 27 +-
src/modules/module-volume-restore.c | 9 +-
src/modules/oss/module-oss.c | 16 +-
src/modules/raop/module-raop-sink.c | 6 +-
src/modules/reserve-monitor.c | 51 +-
src/modules/reserve.c | 25 +-
src/modules/rtp/module-rtp-recv.c | 2 +-
src/pulse/channelmap.c | 18 +-
src/pulse/channelmap.h | 18 +-
src/pulse/client-conf.c | 21 +-
src/pulse/client.conf.in | 2 +-
src/pulse/context.c | 5 +-
src/pulse/sample.c | 4 +
src/pulse/stream.c | 2 +-
src/pulse/volume.c | 116 +++-
src/pulse/volume.h | 35 +-
src/pulsecore/asyncmsgq.c | 42 +-
src/pulsecore/asyncmsgq.h | 4 +
src/pulsecore/aupdate.c | 8 +
src/pulsecore/aupdate.h | 4 +
src/pulsecore/cli-command.c | 4 +-
src/pulsecore/cli-text.c | 20 +-
src/pulsecore/conf-parser.c | 24 +
src/pulsecore/conf-parser.h | 1 +
src/pulsecore/core-util.c | 13 +
src/pulsecore/core-util.h | 2 +
src/pulsecore/core.h | 1 -
src/pulsecore/database-simple.c | 510 ++++++++++++
src/pulsecore/hook-list.c | 2 +-
src/pulsecore/macro.h | 62 +-
src/pulsecore/memblock.c | 3 +-
src/pulsecore/memblockq.c | 6 +
src/pulsecore/memblockq.h | 3 +
src/pulsecore/namereg.c | 30 +-
src/pulsecore/protocol-native.c | 41 +-
src/pulsecore/resampler.c | 8 +-
src/pulsecore/shm.c | 3 +-
src/pulsecore/sink-input.c | 259 ++++---
src/pulsecore/sink-input.h | 33 +-
src/pulsecore/sink.c | 633 +++++++++++-----
src/pulsecore/sink.h | 42 +-
src/pulsecore/source-output.c | 69 ++-
src/pulsecore/source-output.h | 17 +-
src/pulsecore/source.c | 248 +++++--
src/pulsecore/source.h | 25 +-
src/pulsecore/start-child.c | 15 +-
src/pulsecore/thread-mq.c | 11 +-
src/pulsecore/thread-mq.h | 8 +
src/tests/voltest.c | 70 ++
src/utils/pacmd.c | 62 +-
111 files changed, 7113 insertions(+), 4648 deletions(-)
create mode 100644 src/daemon/pulseaudio-system.conf
copy src/modules/{module-volume-restore.c => module-hal-detect-compat.c} (62%)
create mode 100644 src/pulsecore/database-simple.c
-----------------------------------------------------------------------
commit c904f97e2d77bac298130de55621fa2498b5aa51
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Aug 11 23:04:35 2009 +0200
hal: add stub module that loads module-udev-detect instead of module-hal-detect
This adds module-hal-detect-compat.c which when enabled will be compiled
into a module module-hal-detect which simply loads module-udev-detect.
The purpose of this is to allow easy upgrading without breaking
default.pa. Distributions are recommended to enable this to easy
upgrades from HAL versions of PA to udev versions.
diff --git a/configure.ac b/configure.ac
index a35bef8..3b91bc0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1118,6 +1118,28 @@ 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.])
+#### HAL compat support (optional) ####
+
+AC_ARG_ENABLE([hal-compat],
+ AS_HELP_STRING([--disable-hal-compat],[Disable optional HAL->udev transition compatibility support]),
+ [
+ case "${enableval}" in
+ yes) halcompat=yes ;;
+ no) halcompat=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-hal-compat) ;;
+ esac
+ ],
+ [halcompat=auto])
+if test "x${halcompat}" != xno -a "x$HAVE_HAL" = "x0" -a "x$HAVE_UDEV" = "x1" ; then
+ HAVE_HAL_COMPAT=1
+ AC_DEFINE([HAVE_HAL_COMPAT], 1, [Have HAL compatibility.])
+else
+ HAVE_HAL_COMPAT=0
+fi
+
+AC_SUBST(HAVE_HAL_COMPAT)
+AM_CONDITIONAL([HAVE_HAL_COMPAT], [test "x$HAVE_HAL_COMPAT" = x1])
+
#### BlueZ support (optional) ####
AC_ARG_ENABLE([bluez],
@@ -1441,6 +1463,11 @@ if test "x$HAVE_UDEV" = "x1" ; then
ENABLE_UDEV=yes
fi
+ENABLE_HAL_COMPAT=no
+if test "x$HAVE_HAL_COMPAT" = "x1" ; then
+ ENABLE_HAL_COMPAT=yes
+fi
+
ENABLE_TCPWRAP=no
if test "x${LIBWRAP_LIBS}" != x ; then
ENABLE_TCPWRAP=yes
@@ -1507,6 +1534,7 @@ echo "
Enable LIRC: ${ENABLE_LIRC}
Enable HAL: ${ENABLE_HAL}
Enable udev: ${ENABLE_UDEV}
+ Enable HAL->udev compat: ${ENABLE_HAL_COMPAT}
Enable BlueZ: ${ENABLE_BLUEZ}
Enable TCP Wrappers: ${ENABLE_TCPWRAP}
Enable libsamplerate: ${ENABLE_LIBSAMPLERATE}
diff --git a/src/Makefile.am b/src/Makefile.am
index 5d71157..2add80e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1120,6 +1120,11 @@ modlibexec_LTLIBRARIES += \
module-hal-detect.la
endif
+if HAVE_HAL_COMPAT
+modlibexec_LTLIBRARIES += \
+ module-hal-detect.la
+endif
+
if HAVE_UDEV
modlibexec_LTLIBRARIES += \
module-udev-detect.la
@@ -1576,10 +1581,16 @@ module_jack_source_la_LDFLAGS = $(MODULE_LDFLAGS)
module_jack_source_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la $(JACK_LIBS) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_jack_source_la_CFLAGS = $(AM_CFLAGS) $(JACK_CFLAGS)
+if HAVE_HAL_COMPAT
+module_hal_detect_la_SOURCES = modules/module-hal-detect-compat.c
+module_hal_detect_la_LIBADD = $(AM_LIBADD) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+module_hal_detect_la_CFLAGS = $(AM_CFLAGS)
+else
module_hal_detect_la_SOURCES = modules/module-hal-detect.c
-module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_hal_detect_la_LIBADD = $(AM_LIBADD) $(HAL_LIBS) libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
module_hal_detect_la_CFLAGS = $(AM_CFLAGS) $(HAL_CFLAGS)
+endif
+module_hal_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
module_udev_detect_la_SOURCES = modules/module-udev-detect.c
module_udev_detect_la_LDFLAGS = $(MODULE_LDFLAGS)
diff --git a/src/modules/module-hal-detect-compat.c b/src/modules/module-hal-detect-compat.c
new file mode 100644
index 0000000..14cf814
--- /dev/null
+++ b/src/modules/module-hal-detect-compat.c
@@ -0,0 +1,84 @@
+/***
+ 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 <pulse/xmalloc.h>
+
+#include <pulsecore/module.h>
+#include <pulsecore/modargs.h>
+#include <pulsecore/log.h>
+#include <pulsecore/core-util.h>
+
+#include "module-hal-detect-symdef.h"
+
+PA_MODULE_AUTHOR("Lennart Poettering");
+PA_MODULE_DESCRIPTION("Compatibility module");
+PA_MODULE_VERSION(PACKAGE_VERSION);
+PA_MODULE_LOAD_ONCE(TRUE);
+PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
+
+static const char* const valid_modargs[] = {
+ "api",
+ "tsched",
+ "subdevices",
+ NULL,
+};
+
+int pa__init(pa_module*m) {
+ pa_modargs *ma = NULL;
+ pa_bool_t tsched = TRUE;
+ pa_module *n;
+ char *t;
+
+ pa_assert(m);
+
+ if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
+ pa_log("Failed to parse module arguments");
+ goto fail;
+ }
+
+ if (pa_modargs_get_value_boolean(ma, "tsched", &tsched) < 0) {
+ pa_log("tsched= expects boolean arguments");
+ goto fail;
+ }
+
+ pa_log_warn("We will now load module-udev-detect. Please make sure to remove module-hal-detect from your configuration.");
+
+ t = pa_sprintf_malloc("tsched=%s", pa_yes_no(tsched));
+ n = pa_module_load(m->core, "module-udev-detect", t);
+ pa_xfree(t);
+
+ if (n)
+ pa_module_unload_request(m, TRUE);
+
+ pa_modargs_free(ma);
+
+ return n ? 0 : -1;
+
+fail:
+ if (ma)
+ pa_modargs_free(ma);
+
+ return -1;
+}
commit c1039c94fbae193aad149339124e8e62f0233eaa
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Aug 11 23:06:44 2009 +0200
udev: drop definition of LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
We depend on udev 143 anyway, where this definition is not necessary
anymore.
diff --git a/configure.ac b/configure.ac
index 3b91bc0..a38d8a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1116,8 +1116,6 @@ 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.])
-
#### HAL compat support (optional) ####
AC_ARG_ENABLE([hal-compat],
commit c117febbe4a92864a7214da2dd8a5c9dae432925
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Aug 11 23:18:01 2009 +0200
hal: replace subdevs= parameter by subdevices= parameter
Abbreviating tsched like this was bad enough, so let's not add another
option here.
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index b5b2aaf..ec370d6 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -58,13 +58,13 @@ PA_MODULE_LOAD_ONCE(TRUE);
#if defined(HAVE_ALSA) && defined(HAVE_OSS_OUTPUT)
PA_MODULE_USAGE("api=<alsa or oss> "
"tsched=<enable system timer based scheduling mode?>"
- "subdevs=<init all subdevices>");
+ "subdevices=<init all subdevices>");
#elif defined(HAVE_ALSA)
PA_MODULE_USAGE("api=<alsa> "
"tsched=<enable system timer based scheduling mode?>");
#elif defined(HAVE_OSS_OUTPUT)
PA_MODULE_USAGE("api=<oss>"
- "subdevs=<init all subdevices>");
+ "subdevices=<init all subdevices>");
#endif
PA_MODULE_DEPRECATED("Please use module-udev-detect instead of module-hal-detect!");
@@ -98,7 +98,7 @@ static const char* const valid_modargs[] = {
"tsched",
#endif
#ifdef HAVE_OSS_OUTPUT
- "subdevs",
+ "subdevices",
#endif
NULL
};
@@ -772,8 +772,8 @@ int pa__init(pa_module*m) {
}
#ifdef HAVE_OSS_OUTPUT
- if (pa_modargs_get_value_boolean(ma, "subdevs", &u->init_subdevs) < 0) {
- pa_log("Failed to parse subdevs argument.");
+ if (pa_modargs_get_value_boolean(ma, "subdevices", &u->init_subdevs) < 0) {
+ pa_log("Failed to parse subdevices= argument.");
goto fail;
}
#endif
commit d27e26dca0b492b1906b42b2d0f7decd38ed8ae3
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Aug 11 23:19:28 2009 +0200
volume-restore: forward module load return value of stream-restore back to caller
diff --git a/src/modules/module-volume-restore.c b/src/modules/module-volume-restore.c
index 91da598..6e484ea 100644
--- a/src/modules/module-volume-restore.c
+++ b/src/modules/module-volume-restore.c
@@ -48,6 +48,7 @@ static const char* const valid_modargs[] = {
int pa__init(pa_module*m) {
pa_modargs *ma = NULL;
pa_bool_t restore_device = TRUE, restore_volume = TRUE;
+ pa_module *n;
char *t;
pa_assert(m);
@@ -66,13 +67,15 @@ int pa__init(pa_module*m) {
pa_log_warn("We will now load module-stream-restore. Please make sure to remove module-volume-restore from your configuration.");
t = pa_sprintf_malloc("restore_volume=%s restore_device=%s", pa_yes_no(restore_volume), pa_yes_no(restore_device));
- pa_module_load(m->core, "module-stream-restore", t);
+ n = pa_module_load(m->core, "module-stream-restore", t);
pa_xfree(t);
- pa_module_unload_request(m, TRUE);
+ if (n)
+ pa_module_unload_request(m, TRUE);
pa_modargs_free(ma);
- return 0;
+
+ return n ? 0 : -1;
fail:
if (ma)
commit 462cdf44b7fe36768c836c90761f6b8153290517
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 00:53:38 2009 +0200
alsa: adjust priority bonus of mappings that match the configured default channel map
We need to make sure that having both input and output weighs more for
selecting the default profile than a channel map that matches the
default channel map has.
https://bugzilla.redhat.com/show_bug.cgi?id=496320
diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index 6a0b4ab..a4c2ee0 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -2838,9 +2838,9 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) {
if (bonus) {
if (pa_channel_map_equal(&m->channel_map, bonus))
- m->priority += 5000;
+ m->priority += 50;
else if (m->channel_map.channels == bonus->channels)
- m->priority += 4000;
+ m->priority += 30;
}
return 0;
commit e8340345f6a102cd03b6676576bcd3879ead7aad
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 00:56:10 2009 +0200
alsa: enable ext. amplifier by default
diff --git a/src/modules/alsa/mixer/paths/analog-output.conf.common b/src/modules/alsa/mixer/paths/analog-output.conf.common
index cc1185f..3c6ce80 100644
--- a/src/modules/alsa/mixer/paths/analog-output.conf.common
+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common
@@ -104,8 +104,8 @@ switch = select
[Option External Amplifier:on]
name = output-amplifier-on
-priority = 0
+priority = 10
[Option External Amplifier:off]
name = output-amplifier-off
-priority = 10
+priority = 0
commit eb40da25d666b2dce9b69ae21cd36513eb885f61
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 01:50:24 2009 +0200
daemon: install D-Bus system policy file for PA system instances
Original patch from 'mgrela'.
http://pulseaudio.org/ticket/582
diff --git a/src/Makefile.am b/src/Makefile.am
index 2add80e..aa82d79 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -32,6 +32,7 @@ xdgautostartdir=$(sysconfdir)/xdg/autostart
alsaprofilesetsdir=$(datadir)/pulseaudio/alsa-mixer/profile-sets
alsapathsdir=$(datadir)/pulseaudio/alsa-mixer/paths
udevrulesdir=/lib/udev/rules.d
+dbuspolicydir=$(sysconfdir)/dbus-1/system.d
###################################
# Defines #
@@ -119,6 +120,7 @@ EXTRA_DIST = \
modules/module-defs.h.m4 \
daemon/pulseaudio.desktop.in \
map-file \
+ daemon/pulseaudio-system.conf \
modules/alsa/mixer/profile-sets/default.conf \
modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf \
modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf \
@@ -145,6 +147,9 @@ pulseconf_DATA = \
daemon.conf \
client.conf
+dbuspolicy_DATA = \
+ daemon/pulseaudio-system.conf
+
if HAVE_X11
xdgautostart_in_files = \
daemon/pulseaudio.desktop.in
diff --git a/src/daemon/pulseaudio-system.conf b/src/daemon/pulseaudio-system.conf
new file mode 100644
index 0000000..edddaf9
--- /dev/null
+++ b/src/daemon/pulseaudio-system.conf
@@ -0,0 +1,37 @@
+<?xml version="1.0"?><!--*-nxml-*-->
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<!--
+This file is part of PulseAudio.
+
+PulseAudio is free software; you can redistribute it 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 Lesser 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.
+-->
+
+<busconfig>
+
+ <!-- System-wide PulseAudio runs as 'pulse' user. This fragment is
+ not necessary for user PulseAudio instances. -->
+
+ <policy user="pulse">
+ <allow own="org.pulseaudio.Server"/>
+
+ <!-- Allow pulseaudio to talk to HAL for device detection -->
+ <allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Manager"/>
+ <allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Device"/>
+ </policy>
+
+</busconfig>
commit 8998cba6839a46f11daec411c83a1b35723c5117
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 20:14:31 2009 +0200
conf: add pa_config_parse_not_bool() for parsing inverse boolean configuration options
diff --git a/src/pulsecore/conf-parser.c b/src/pulsecore/conf-parser.c
index 2dc9a22..b4ab23c 100644
--- a/src/pulsecore/conf-parser.c
+++ b/src/pulsecore/conf-parser.c
@@ -278,6 +278,30 @@ int pa_config_parse_bool(const char *filename, unsigned line, const char *sectio
return 0;
}
+int pa_config_parse_not_bool(
+ const char *filename, unsigned line,
+ const char *section,
+ const char *lvalue, const char *rvalue,
+ void *data, void *userdata) {
+
+ int k;
+ pa_bool_t *b = data;
+
+ pa_assert(filename);
+ pa_assert(lvalue);
+ pa_assert(rvalue);
+ pa_assert(data);
+
+ if ((k = pa_parse_boolean(rvalue)) < 0) {
+ pa_log("[%s:%u] Failed to parse boolean value: %s", filename, line, rvalue);
+ return -1;
+ }
+
+ *b = !k;
+
+ return 0;
+}
+
int pa_config_parse_string(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
char **s = data;
diff --git a/src/pulsecore/conf-parser.h b/src/pulsecore/conf-parser.h
index 08e17ca..c6c8a14 100644
--- a/src/pulsecore/conf-parser.h
+++ b/src/pulsecore/conf-parser.h
@@ -47,6 +47,7 @@ int pa_config_parse_int(const char *filename, unsigned line, const char *section
int pa_config_parse_unsigned(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
int pa_config_parse_size(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
int pa_config_parse_bool(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
+int pa_config_parse_not_bool(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
int pa_config_parse_string(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata);
#endif
commit facae1f27504983d7eff7c7c3ffa864f7e002272
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 20:15:28 2009 +0200
conf: invert all negative boolean configuration option
diff --git a/man/pulse-client.conf.5.xml.in b/man/pulse-client.conf.5.xml.in
index 26e3890..46cc845 100644
--- a/man/pulse-client.conf.5.xml.in
+++ b/man/pulse-client.conf.5.xml.in
@@ -92,9 +92,9 @@ USA.
</option>
<option>
- <p><opt>disable-shm=</opt> Disable data transfer via POSIX
+ <p><opt>enable-shm=</opt> Enable data transfer via POSIX
shared memory. Takes a boolean argument, defaults to
- <opt>no</opt>.</p>
+ <opt>yes</opt>.</p>
</option>
<option>
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index f1d5b8f..82c2b8e 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -65,20 +65,21 @@ USA.
</option>
<option>
- <p><opt>disallow-module-loading=</opt> Disallow module loading
- after startup. This is a security feature that makes sure that
- no further modules may be loaded into the PulseAudio server
- after startup completed. It is recommended to enable this when
- <opt>system-instance</opt> is enabled. Please note that certain
- features like automatic hot-plug support will not work if this
- option is enabled. Takes a boolean argument, defaults to
- <opt>no</opt>. The <opt>--disallow-module-loading</opt> command line
- option takes precedence.</p>
+ <p><opt>allow-module-loading=</opt> Allow/disallow module
+ loading after startup. This is a security feature that if
+ dsabled makes sure that no further modules may be loaded into
+ the PulseAudio server after startup completed. It is recommended
+ to disable this when <opt>system-instance</opt> is
+ enabled. Please note that certain features like automatic
+ hot-plug support will not work if this option is enabled. Takes
+ a boolean argument, defaults to <opt>yes</opt>. The
+ <opt>--disallow-module-loading</opt> command line option takes
+ precedence.</p>
</option>
<option>
- <p><opt>disallow-exit=</opt> Disallow exit on user
- request. Defaults to <opt>no</opt>.</p>
+ <p><opt>allow-exit=</opt> Allow/disallow exit on user
+ request. Defaults to <opt>yes</opt>.</p>
</option>
<option>
@@ -105,19 +106,19 @@ USA.
</option>
<option>
- <p><opt>disable-remixing=</opt> Never upmix or downmix channels
- to different channel maps. Instead, do a simple name-based
- matching only.</p>
+ <p><opt>enable-remixing=</opt> If disabled never upmix or
+ downmix channels to different channel maps. Instead, do a simple
+ name-based matching only. Defaults to <opt>yes.</opt></p>
</option>
<option>
- <p><opt>disable-lfe-remixing=</opt> When upmixing or downmixing
- ignore LFE channels. When this option is on the output LFE
- channel will only get a signal when an input LFE channel is
- available as well. If no input LFE channel is available the
- output LFE channel will always be 0. If no output LFE channel is
- available the signal on the input LFE channel will be
- ignored. Defaults to "on".</p>
+ <p><opt>enable-lfe-remixing=</opt> if disabeld when upmixing or
+ downmixing ignore LFE channels. When this option is dsabled the
+ output LFE channel will only get a signal when an input LFE
+ channel is available as well. If no input LFE channel is
+ available the output LFE channel will always be 0. If no output
+ LFE channel is available the signal on the input LFE channel
+ will be ignored. Defaults to <opt>no</opt>.</p>
</option>
<option>
@@ -132,12 +133,12 @@ USA.
</option>
<option>
- <p><opt>no-cpu-limit=</opt> Do not install the CPU load limiter,
- even on platforms where it is supported. This option is useful
- when debugging/profiling PulseAudio to disable disturbing
- SIGXCPU signals. Takes a boolean argument, defaults to <opt>no</opt>. The
- <opt>--no-cpu-limit</opt> command line argument takes
- precedence.</p>
+ <p><opt>cpu-limit=</opt> If disabled d not install the CPU load
+ limiter, even on platforms where it is supported. This option is
+ useful when debugging/profiling PulseAudio to disable disturbing
+ SIGXCPU signals. Takes a boolean argument, defaults to
+ <opt>yes</opt>. The <opt>--no-cpu-limit</opt> command line
+ argument takes precedence.</p>
</option>
<option>
@@ -148,9 +149,9 @@ USA.
</option>
<option>
- <p><opt>disable-shm=</opt> Disable data transfer via POSIX
+ <p><opt>enable-shm=</opt> Enable data transfer via POSIX
shared memory. Takes a boolean argument, defaults to
- <opt>no</opt>. The <opt>--disable-shm</opt> command line
+ <opt>yes</opt>. The <opt>--disable-shm</opt> command line
argument takes precedence.</p>
</option>
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index 9010f2f..9a87b55 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -441,11 +441,15 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "high-priority", pa_config_parse_bool, &c->high_priority, NULL },
{ "realtime-scheduling", pa_config_parse_bool, &c->realtime_scheduling, NULL },
{ "disallow-module-loading", pa_config_parse_bool, &c->disallow_module_loading, NULL },
+ { "allow-module-loading", pa_config_parse_not_bool, &c->disallow_module_loading, NULL },
{ "disallow-exit", pa_config_parse_bool, &c->disallow_exit, NULL },
+ { "allow-exit", pa_config_parse_not_bool, &c->disallow_exit, NULL },
{ "use-pid-file", pa_config_parse_bool, &c->use_pid_file, NULL },
{ "system-instance", pa_config_parse_bool, &c->system_instance, NULL },
{ "no-cpu-limit", pa_config_parse_bool, &c->no_cpu_limit, NULL },
+ { "cpu-limit", pa_config_parse_not_bool, &c->no_cpu_limit, NULL },
{ "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL },
{ "flat-volumes", pa_config_parse_bool, &c->flat_volumes, NULL },
{ "lock-memory", pa_config_parse_bool, &c->lock_memory, NULL },
{ "exit-idle-time", pa_config_parse_int, &c->exit_idle_time, NULL },
@@ -465,7 +469,9 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
{ "default-fragment-size-msec", parse_fragment_size_msec, c, NULL },
{ "nice-level", parse_nice_level, c, NULL },
{ "disable-remixing", pa_config_parse_bool, &c->disable_remixing, NULL },
+ { "enable-remixing", pa_config_parse_not_bool, &c->disable_remixing, NULL },
{ "disable-lfe-remixing", pa_config_parse_bool, &c->disable_lfe_remixing, NULL },
+ { "enable-lfe-remixing", pa_config_parse_not_bool, &c->disable_lfe_remixing, NULL },
{ "load-default-script-file", pa_config_parse_bool, &c->load_default_script_file, NULL },
{ "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
{ "log-meta", pa_config_parse_bool, &c->log_meta, NULL },
@@ -623,12 +629,12 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "nice-level = %i\n", c->nice_level);
pa_strbuf_printf(s, "realtime-scheduling = %s\n", pa_yes_no(c->realtime_scheduling));
pa_strbuf_printf(s, "realtime-priority = %i\n", c->realtime_priority);
- pa_strbuf_printf(s, "disallow-module-loading = %s\n", pa_yes_no(c->disallow_module_loading));
- pa_strbuf_printf(s, "disallow-exit = %s\n", pa_yes_no(c->disallow_exit));
+ pa_strbuf_printf(s, "allow-module-loading = %s\n", pa_yes_no(!c->disallow_module_loading));
+ pa_strbuf_printf(s, "allow-exit = %s\n", pa_yes_no(!c->disallow_exit));
pa_strbuf_printf(s, "use-pid-file = %s\n", pa_yes_no(c->use_pid_file));
pa_strbuf_printf(s, "system-instance = %s\n", pa_yes_no(c->system_instance));
- pa_strbuf_printf(s, "no-cpu-limit = %s\n", pa_yes_no(c->no_cpu_limit));
- pa_strbuf_printf(s, "disable-shm = %s\n", pa_yes_no(c->disable_shm));
+ pa_strbuf_printf(s, "cpu-limit = %s\n", pa_yes_no(!c->no_cpu_limit));
+ pa_strbuf_printf(s, "enable-shm = %s\n", pa_yes_no(!c->disable_shm));
pa_strbuf_printf(s, "flat-volumes = %s\n", pa_yes_no(c->flat_volumes));
pa_strbuf_printf(s, "lock-memory = %s\n", pa_yes_no(c->lock_memory));
pa_strbuf_printf(s, "exit-idle-time = %i\n", c->exit_idle_time);
@@ -639,8 +645,8 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf_printf(s, "log-target = %s\n", c->auto_log_target ? "auto" : (c->log_target == PA_LOG_SYSLOG ? "syslog" : "stderr"));
pa_strbuf_printf(s, "log-level = %s\n", log_level_to_string[c->log_level]);
pa_strbuf_printf(s, "resample-method = %s\n", pa_resample_method_to_string(c->resample_method));
- pa_strbuf_printf(s, "disable-remixing = %s\n", pa_yes_no(c->disable_remixing));
- pa_strbuf_printf(s, "disable-lfe-remixing = %s\n", pa_yes_no(c->disable_lfe_remixing));
+ pa_strbuf_printf(s, "enable-remixing = %s\n", pa_yes_no(!c->disable_remixing));
+ pa_strbuf_printf(s, "enable-lfe-remixing = %s\n", pa_yes_no(!c->disable_lfe_remixing));
pa_strbuf_printf(s, "default-sample-format = %s\n", pa_sample_format_to_string(c->default_sample_spec.format));
pa_strbuf_printf(s, "default-sample-rate = %u\n", c->default_sample_spec.rate);
pa_strbuf_printf(s, "default-sample-channels = %u\n", c->default_sample_spec.channels);
diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
index 6931359..d8b58d8 100644
--- a/src/daemon/daemon.conf.in
+++ b/src/daemon/daemon.conf.in
@@ -21,14 +21,14 @@
; daemonize = no
; fail = yes
-; disallow-module-loading = no
-; disallow-exit = no
+; allow-module-loading = yes
+; allow-exit = yes
; use-pid-file = yes
; system-instance = no
-; disable-shm = no
+; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
-; no-cpu-limit = no
+; cpu-limit = yes
; high-priority = yes
; nice-level = -11
@@ -51,8 +51,8 @@
; log-backtrace = 0
; resample-method = speex-float-3
-; disable-remixing = no
-; disable-lfe-remixing = yes
+; enable-remixing = yes
+; enable-lfe-remixing = no
; flat-volumes = yes
diff --git a/src/pulse/client-conf.c b/src/pulse/client-conf.c
index 940d0b6..4aa4ba1 100644
--- a/src/pulse/client-conf.c
+++ b/src/pulse/client-conf.c
@@ -92,16 +92,17 @@ int pa_client_conf_load(pa_client_conf *c, const char *filename) {
/* Prepare the configuration parse table */
pa_config_item table[] = {
- { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL },
- { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL },
- { "default-sink", pa_config_parse_string, &c->default_sink, NULL },
- { "default-source", pa_config_parse_string, &c->default_source, NULL },
- { "default-server", pa_config_parse_string, &c->default_server, NULL },
- { "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
- { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL },
- { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
- { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
- { NULL, NULL, NULL, NULL },
+ { "daemon-binary", pa_config_parse_string, &c->daemon_binary, NULL },
+ { "extra-arguments", pa_config_parse_string, &c->extra_arguments, NULL },
+ { "default-sink", pa_config_parse_string, &c->default_sink, NULL },
+ { "default-source", pa_config_parse_string, &c->default_source, NULL },
+ { "default-server", pa_config_parse_string, &c->default_server, NULL },
+ { "autospawn", pa_config_parse_bool, &c->autospawn, NULL },
+ { "cookie-file", pa_config_parse_string, &c->cookie_file, NULL },
+ { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "enable-shm", pa_config_parse_not_bool, &c->disable_shm, NULL },
+ { "shm-size-bytes", pa_config_parse_size, &c->shm_size, NULL },
+ { NULL, NULL, NULL, NULL },
};
if (filename) {
diff --git a/src/pulse/client.conf.in b/src/pulse/client.conf.in
index 579bcc2..6c8d371 100644
--- a/src/pulse/client.conf.in
+++ b/src/pulse/client.conf.in
@@ -29,5 +29,5 @@
; cookie-file =
-; disable-shm = no
+; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
commit 9f53aa5546e7bf9246546c6dda5637d50679483c
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:35:48 2009 +0200
daemon: unconditionally clean up priviliges
diff --git a/src/daemon/caps.c b/src/daemon/caps.c
index 294be49..69e58cc 100644
--- a/src/daemon/caps.c
+++ b/src/daemon/caps.c
@@ -58,11 +58,8 @@ void pa_drop_root(void) {
#ifdef HAVE_GETUID
uid_t uid;
+ pa_log_debug(_("Cleaning up privileges."));
uid = getuid();
- if (uid == 0 || geteuid() != 0)
- return;
-
- pa_log_info(_("Dropping root privileges."));
#if defined(HAVE_SETRESUID)
pa_assert_se(setresuid(uid, uid, uid) >= 0);
@@ -82,7 +79,7 @@ void pa_drop_root(void) {
#endif
#ifdef HAVE_SYS_CAPABILITY_H
- {
+ if (uid != 0) {
cap_t caps;
pa_assert_se(caps = cap_init());
pa_assert_se(cap_clear(caps) == 0);
commit ef176ecb62a8f04bd14ca37e7c2a40469f0bb8ba
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:36:52 2009 +0200
core-util: move personality resetting into core-util
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 7a95195..355b0d5 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -65,10 +65,6 @@
#include <dbus/dbus.h>
#endif
-#ifdef __linux__
-#include <sys/personality.h>
-#endif
-
#include <pulse/mainloop.h>
#include <pulse/mainloop-signal.h>
#include <pulse/timeval.h>
@@ -446,11 +442,7 @@ int main(int argc, char *argv[]) {
* context we have been started. Let's cleanup our execution
* context as good as possible */
-#ifdef __linux__
- if (personality(PER_LINUX) < 0)
- pa_log_warn("Uh, personality() failed: %s", pa_cstrerror(errno));
-#endif
-
+ pa_reset_personality();
pa_drop_root();
pa_close_all(passed_fd, -1);
pa_reset_sigs(-1);
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index d4baf69..6494244 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -101,6 +101,10 @@
#include "rtkit.h"
#endif
+#ifdef __linux__
+#include <sys/personality.h>
+#endif
+
#include <pulse/xmalloc.h>
#include <pulse/util.h>
#include <pulse/utf8.h>
@@ -2855,3 +2859,12 @@ size_t pa_pipe_buf(int fd) {
return 4096;
#endif
}
+
+void pa_reset_personality(void) {
+
+#ifdef __linux__
+ if (personality(PER_LINUX) < 0)
+ pa_log_warn("Uh, personality() failed: %s", pa_cstrerror(errno));
+#endif
+
+}
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index 6de4b77..3d3aec7 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -241,4 +241,6 @@ char* pa_maybe_prefix_path(const char *path, const char *prefix);
/* Returns size of the specified pipe or 4096 on failure */
size_t pa_pipe_buf(int fd);
+void pa_reset_personality(void);
+
#endif
commit 27b8cd783c2aedb23af8f88fc88632d5c4f387fd
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:37:40 2009 +0200
daemon: reset scheduling priority on startup, too
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 355b0d5..8521e72 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -447,6 +447,7 @@ int main(int argc, char *argv[]) {
pa_close_all(passed_fd, -1);
pa_reset_sigs(-1);
pa_unblock_sigs(-1);
+ pa_reset_priority();
setlocale(LC_ALL, "");
pa_init_i18n();
commit 5921324fd3c16e2b3d38d07b200febd90835f169
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:40:12 2009 +0200
context: document why we only do minimal cleanups before the autospawn exec()
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 7c3717f..894ab2e 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -707,10 +707,13 @@ static int context_autospawn(pa_context *c) {
if (c->spawn_api.atfork)
c->spawn_api.atfork();
+ /* We leave most of the cleaning up of the process environment
+ * to the executable. We only clean up the file descriptors to
+ * make sure the executable can actually be loaded
+ * correctly. */
pa_close_all(-1);
/* Setup argv */
-
argv[n++] = c->conf->daemon_binary;
argv[n++] = "--start";
commit 286ab2f19370c7a0041897435614b2c6aadc8e70
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:40:38 2009 +0200
memblock: rate limit 'Pool full' message
diff --git a/src/pulsecore/memblock.c b/src/pulsecore/memblock.c
index 3bc10de..441b397 100644
--- a/src/pulsecore/memblock.c
+++ b/src/pulsecore/memblock.c
@@ -258,7 +258,8 @@ static struct mempool_slot* mempool_allocate_slot(pa_mempool *p) {
slot = (struct mempool_slot*) ((uint8_t*) p->memory.ptr + (p->block_size * (size_t) idx));
if (!slot) {
- pa_log_debug("Pool full");
+ if (pa_log_ratelimit())
+ pa_log_debug("Pool full");
pa_atomic_inc(&p->stat.n_pool_full);
return NULL;
}
commit 5fcb8a3c0838a4ecdb00a0af09b6e1a358b114d0
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:42:02 2009 +0200
pacmd: port pacmd from select() to poll() so that we notice writer side hangups
diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c
index ac60a0b..e4d054b 100644
--- a/src/utils/pacmd.c
+++ b/src/utils/pacmd.c
@@ -25,7 +25,7 @@
#include <assert.h>
#include <signal.h>
-#include <sys/select.h>
+#include <sys/poll.h>
#include <sys/socket.h>
#include <unistd.h>
#include <errno.h>
@@ -45,6 +45,13 @@
int main(int argc, char*argv[]) {
+ enum {
+ WATCH_STDIN,
+ WATCH_STDOUT,
+ WATCH_SOCKET,
+ N_WATCH
+ };
+
pid_t pid ;
int fd = -1;
int ret = 1, i;
@@ -53,6 +60,7 @@ int main(int argc, char*argv[]) {
size_t ibuf_index, ibuf_length, obuf_index, obuf_length;
char *cli;
pa_bool_t ibuf_eof, obuf_eof, ibuf_closed, obuf_closed;
+ struct pollfd pollfd[N_WATCH];
setlocale(LC_ALL, "");
bindtextdomain(GETTEXT_PACKAGE, PULSE_LOCALEDIR);
@@ -120,38 +128,45 @@ int main(int argc, char*argv[]) {
ibuf_eof = TRUE;
}
- for (;;) {
- fd_set ifds, ofds;
+ pa_zero(pollfd);
+ pollfd[WATCH_STDIN].fd = STDIN_FILENO;
+ pollfd[WATCH_STDOUT].fd = STDOUT_FILENO;
+ pollfd[WATCH_SOCKET].fd = fd;
+
+ for (;;) {
if (ibuf_eof &&
obuf_eof &&
ibuf_length <= 0 &&
obuf_length <= 0)
break;
- FD_ZERO(&ifds);
- FD_ZERO(&ofds);
+ pollfd[WATCH_STDIN].events = pollfd[WATCH_STDOUT].events = pollfd[WATCH_SOCKET].events = 0;
if (obuf_length > 0)
- FD_SET(1, &ofds);
+ pollfd[WATCH_STDOUT].events |= POLLOUT;
else if (!obuf_eof)
- FD_SET(fd, &ifds);
+ pollfd[WATCH_SOCKET].events |= POLLIN;
if (ibuf_length > 0)
- FD_SET(fd, &ofds);
+ pollfd[WATCH_SOCKET].events |= POLLOUT;
else if (!ibuf_eof)
- FD_SET(0, &ifds);
+ pollfd[WATCH_STDIN].events |= POLLIN;
- if (select(FD_SETSIZE, &ifds, &ofds, NULL, NULL) < 0) {
- pa_log(_("select(): %s"), strerror(errno));
+ if (poll(pollfd, N_WATCH, -1) < 0) {
+
+ if (errno == EINTR)
+ continue;
+
+ pa_log(_("poll(): %s"), strerror(errno));
goto fail;
}
- if (FD_ISSET(0, &ifds)) {
+ if (pollfd[WATCH_STDIN].revents & POLLIN) {
ssize_t r;
pa_assert(!ibuf_length);
- if ((r = pa_read(0, ibuf, sizeof(ibuf), NULL)) <= 0) {
+ if ((r = pa_read(STDIN_FILENO, ibuf, sizeof(ibuf), NULL)) <= 0) {
if (r < 0) {
pa_log(_("read(): %s"), strerror(errno));
goto fail;
@@ -164,7 +179,7 @@ int main(int argc, char*argv[]) {
}
}
- if (FD_ISSET(fd, &ifds)) {
+ if (pollfd[WATCH_SOCKET].revents & POLLIN) {
ssize_t r;
pa_assert(!obuf_length);
@@ -181,21 +196,26 @@ int main(int argc, char*argv[]) {
}
}
- if (FD_ISSET(1, &ofds)) {
+ if (pollfd[WATCH_STDOUT].revents & POLLHUP) {
+ obuf_eof = TRUE;
+ obuf_length = 0;
+ } else if (pollfd[WATCH_STDOUT].revents & POLLOUT) {
ssize_t r;
pa_assert(obuf_length);
- if ((r = pa_write(1, obuf + obuf_index, obuf_length, NULL)) < 0) {
+ if ((r = pa_write(STDOUT_FILENO, obuf + obuf_index, obuf_length, NULL)) < 0) {
pa_log(_("write(): %s"), strerror(errno));
goto fail;
}
obuf_length -= (size_t) r;
obuf_index += obuf_index;
-
}
- if (FD_ISSET(fd, &ofds)) {
+ if (pollfd[WATCH_SOCKET].revents & POLLHUP) {
+ ibuf_eof = TRUE;
+ ibuf_length = 0;
+ } if (pollfd[WATCH_SOCKET].revents & POLLOUT) {
ssize_t r;
pa_assert(ibuf_length);
@@ -209,14 +229,14 @@ int main(int argc, char*argv[]) {
}
if (ibuf_length <= 0 && ibuf_eof && !ibuf_closed) {
- pa_close(0);
+ pa_close(STDIN_FILENO);
shutdown(fd, SHUT_WR);
ibuf_closed = TRUE;
}
if (obuf_length <= 0 && obuf_eof && !obuf_closed) {
shutdown(fd, SHUT_RD);
- pa_close(1);
+ pa_close(STDOUT_FILENO);
obuf_closed = TRUE;
}
}
commit 17d57415f5abad5b7c30301227054b4c899bc705
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 12 21:43:06 2009 +0200
start-child: clean up child environment a bit better
diff --git a/src/pulsecore/start-child.c b/src/pulsecore/start-child.c
index 7774bde..b3bce13 100644
--- a/src/pulsecore/start-child.c
+++ b/src/pulsecore/start-child.c
@@ -68,23 +68,24 @@ int pa_start_child_for_read(const char *name, const char *argv1, pid_t *pid) {
} else {
/* child */
- pa_reset_priority();
+ pa_reset_personality();
pa_assert_se(pa_close(pipe_fds[0]) == 0);
- pa_assert_se(dup2(pipe_fds[1], 1) == 1);
+ pa_assert_se(dup2(pipe_fds[1], STDOUT_FILENO) == STDOUT_FILENO);
- if (pipe_fds[1] != 1)
+ if (pipe_fds[1] != STDOUT_FILENO)
pa_assert_se(pa_close(pipe_fds[1]) == 0);
- pa_close(0);
- pa_assert_se(open("/dev/null", O_RDONLY) == 0);
+ pa_close(STDIN_FILENO);
+ pa_assert_se(open("/dev/null", O_RDONLY) == STDIN_FILENO);
- pa_close(2);
- pa_assert_se(open("/dev/null", O_WRONLY) == 2);
+ pa_close(STDERR_FILENO);
+ pa_assert_se(open("/dev/null", O_WRONLY) == STDERR_FILENO);
pa_close_all(-1);
pa_reset_sigs(-1);
pa_unblock_sigs(-1);
+ pa_reset_priority();
#ifdef PR_SET_PDEATHSIG
/* On Linux we can use PR_SET_PDEATHSIG to have the helper
commit 9a95fe49c848d2711dcdcf4c407e626e41e4657f
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Aug 13 02:14:19 2009 +0200
core: add assert macros for verifying calling context
This adds pa_assert_io_context() and pa_assert_ctl_context() in addition
to a few related macros. When called they will fail when the current execution
context is not IO resp. not control context. (aka 'thread' context vs.
'main' context)
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index a5f9635..c783729 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -51,7 +51,7 @@ static void sink_input_free(pa_object *o);
pa_sink_input_new_data* pa_sink_input_new_data_init(pa_sink_input_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->resample_method = PA_RESAMPLER_INVALID;
data->proplist = pa_proplist_new();
@@ -142,6 +142,7 @@ int pa_sink_input_new(
pa_assert(_i);
pa_assert(core);
pa_assert(data);
+ pa_assert_ctl_context();
if (data->client)
pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->client->proplist);
@@ -348,6 +349,7 @@ int pa_sink_input_new(
/* Called from main context */
static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) {
pa_assert(i);
+ pa_assert_ctl_context();
if (!i->sink)
return;
@@ -362,6 +364,7 @@ static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) {
static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state) {
pa_sink_input *ssync;
pa_assert(i);
+ pa_assert_ctl_context();
if (state == PA_SINK_INPUT_DRAINED)
state = PA_SINK_INPUT_RUNNING;
@@ -400,7 +403,9 @@ static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state)
void pa_sink_input_unlink(pa_sink_input *i) {
pa_bool_t linked;
pa_source_output *o, *p = NULL;
+
pa_assert(i);
+ pa_assert_ctl_context();
/* See pa_sink_unlink() for a couple of comments how this function
* works */
@@ -471,6 +476,7 @@ static void sink_input_free(pa_object *o) {
pa_sink_input* i = PA_SINK_INPUT(o);
pa_assert(i);
+ pa_assert_ctl_context();
pa_assert(pa_sink_input_refcnt(i) == 0);
if (PA_SINK_INPUT_IS_LINKED(i->state))
@@ -502,7 +508,9 @@ static void sink_input_free(pa_object *o) {
/* Called from main context */
void pa_sink_input_put(pa_sink_input *i) {
pa_sink_input_state_t state;
+
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(i->state == PA_SINK_INPUT_INIT);
@@ -538,6 +546,7 @@ void pa_sink_input_put(pa_sink_input *i) {
/* Called from main context */
void pa_sink_input_kill(pa_sink_input*i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
i->kill(i);
@@ -548,6 +557,7 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency) {
pa_usec_t r[2] = { 0, 0 };
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_GET_LATENCY, r, 0, NULL) == 0);
@@ -569,6 +579,7 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
size_t ilength;
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(slength, &i->sink->sample_spec));
pa_assert(chunk);
@@ -706,8 +717,9 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
/* Called from thread context */
void pa_sink_input_drop(pa_sink_input *i, size_t nbytes /* in sink sample spec */) {
- pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
pa_assert(nbytes > 0);
@@ -721,8 +733,9 @@ void pa_sink_input_drop(pa_sink_input *i, size_t nbytes /* in sink sample spec *
void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sample spec */) {
size_t lbq;
pa_bool_t called = FALSE;
- pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
@@ -792,6 +805,7 @@ void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sam
/* Called from thread context */
void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
@@ -804,6 +818,7 @@ void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the
/* Called from thread context */
void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &i->sink->sample_spec));
@@ -814,6 +829,7 @@ void pa_sink_input_update_max_request(pa_sink_input *i, size_t nbytes /* in the
/* Called from thread context */
pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa_usec_t usec) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
usec = i->sink->fixed_latency;
@@ -830,6 +846,7 @@ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa
/* Called from main context */
pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) {
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
@@ -858,6 +875,7 @@ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec)
/* Called from main context */
pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (PA_SINK_INPUT_IS_LINKED(i->state) && i->sink) {
pa_usec_t usec = 0;
@@ -876,6 +894,7 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
pa_cvolume v;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
@@ -922,6 +941,7 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
/* Called from main context */
pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) {
@@ -939,6 +959,7 @@ pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v) {
unsigned c;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(v);
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
@@ -959,6 +980,7 @@ void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) {
pa_cvolume _v;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec));
@@ -985,8 +1007,8 @@ void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) {
/* Called from main context */
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
- pa_assert(i);
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
if (!i->muted == !mute)
@@ -1002,6 +1024,7 @@ void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
/* Called from main context */
pa_bool_t pa_sink_input_get_mute(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
return i->muted;
@@ -1010,6 +1033,7 @@ pa_bool_t pa_sink_input_get_mute(pa_sink_input *i) {
/* Called from main thread */
void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_proplist *p) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(i->proplist, mode, p);
@@ -1023,6 +1047,7 @@ void pa_sink_input_update_proplist(pa_sink_input *i, pa_update_mode_t mode, pa_p
/* Called from main context */
void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
sink_input_set_state(i, b ? PA_SINK_INPUT_CORKED : PA_SINK_INPUT_RUNNING);
@@ -1031,6 +1056,7 @@ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b) {
/* Called from main context */
int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_return_val_if_fail(i->thread_info.resampler, -PA_ERR_BADSTATE);
@@ -1049,13 +1075,14 @@ int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate) {
void pa_sink_input_set_name(pa_sink_input *i, const char *name) {
const char *old;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (!name && !pa_proplist_contains(i->proplist, PA_PROP_MEDIA_NAME))
return;
old = pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME);
- if (old && name && !strcmp(old, name))
+ if (old && name && pa_streq(old, name))
return;
if (name)
@@ -1072,6 +1099,7 @@ void pa_sink_input_set_name(pa_sink_input *i, const char *name) {
/* Called from main context */
pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
return i->actual_resample_method;
}
@@ -1079,6 +1107,7 @@ pa_resample_method_t pa_sink_input_get_resample_method(pa_sink_input *i) {
/* Called from main context */
pa_bool_t pa_sink_input_may_move(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
if (i->flags & PA_SINK_INPUT_DONT_MOVE)
@@ -1095,6 +1124,7 @@ pa_bool_t pa_sink_input_may_move(pa_sink_input *i) {
/* Called from main context */
pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_sink_assert_ref(dest);
@@ -1123,6 +1153,7 @@ int pa_sink_input_start_move(pa_sink_input *i) {
int r;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(i->sink);
@@ -1177,6 +1208,7 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
pa_resampler *new_resampler;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(!i->sink);
pa_sink_assert_ref(dest);
@@ -1271,6 +1303,7 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
int r;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
pa_assert(i->sink);
pa_sink_assert_ref(dest);
@@ -1301,7 +1334,9 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
/* Called from IO thread context */
void pa_sink_input_set_state_within_thread(pa_sink_input *i, pa_sink_input_state_t state) {
pa_bool_t corking, uncorking;
+
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
if (state == i->thread_info.state)
return;
@@ -1411,6 +1446,7 @@ int pa_sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int64_t
/* Called from main thread */
pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
if (i->state == PA_SINK_INPUT_RUNNING || i->state == PA_SINK_INPUT_DRAINED)
return pa_atomic_load(&i->thread_info.drained) ? PA_SINK_INPUT_DRAINED : PA_SINK_INPUT_RUNNING;
@@ -1421,6 +1457,7 @@ pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i) {
/* Called from IO context */
pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
if (PA_SINK_INPUT_IS_LINKED(i->thread_info.state))
return pa_memblockq_is_empty(i->thread_info.render_memblockq);
@@ -1445,6 +1482,7 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam
* rewound. */
pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
nbytes = PA_MAX(i->thread_info.rewrite_nbytes, nbytes);
@@ -1511,8 +1549,11 @@ void pa_sink_input_request_rewind(pa_sink_input *i, size_t nbytes /* in our sam
/* Called from main context */
pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret) {
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(ret);
+ /* FIXME: Shouldn't access resampler object from main context! */
+
pa_silence_memchunk_get(
&i->core->silence_cache,
i->core->mempool,
@@ -1529,6 +1570,7 @@ void pa_sink_input_send_event(pa_sink_input *i, const char *event, pa_proplist *
pa_sink_input_send_event_hook_data hook_data;
pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
pa_assert(event);
if (!i->send_event)
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index 98144d4..5ede1ca 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -359,4 +359,7 @@ pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret);
/* To be used by sink.c only */
void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v);
+#define pa_sink_input_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SINK_INPUT_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 5e9662c..edcf5bd 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -59,7 +59,7 @@ static void sink_free(pa_object *s);
pa_sink_new_data* pa_sink_new_data_init(pa_sink_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->proplist = pa_proplist_new();
return data;
@@ -177,6 +177,7 @@ pa_sink* pa_sink_new(
pa_assert(core);
pa_assert(data);
pa_assert(data->name);
+ pa_assert_ctl_context();
s = pa_msgobject_new(pa_sink);
@@ -360,6 +361,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
pa_sink_state_t original_state;
pa_assert(s);
+ pa_assert_ctl_context();
if (s->state == state)
return 0;
@@ -413,6 +415,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
/* Called from main context */
void pa_sink_put(pa_sink* s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(s->state == PA_SINK_INIT);
@@ -458,6 +461,7 @@ void pa_sink_unlink(pa_sink* s) {
pa_sink_input *i, *j = NULL;
pa_assert(s);
+ pa_assert_ctl_context();
/* Please note that pa_sink_unlink() does more than simply
* reversing pa_sink_put(). It also undoes the registrations
@@ -507,6 +511,7 @@ static void sink_free(pa_object *o) {
pa_sink_input *i;
pa_assert(s);
+ pa_assert_ctl_context();
pa_assert(pa_sink_refcnt(s) == 0);
if (PA_SINK_IS_LINKED(s->state))
@@ -550,6 +555,7 @@ static void sink_free(pa_object *o) {
/* Called from main context */
void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
s->asyncmsgq = q;
@@ -560,6 +566,7 @@ void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
/* Called from main context */
void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
s->rtpoll = p;
@@ -570,6 +577,7 @@ void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
/* Called from main context */
int pa_sink_update_status(pa_sink*s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->state == PA_SINK_SUSPENDED)
@@ -581,6 +589,7 @@ int pa_sink_update_status(pa_sink*s) {
/* Called from main context */
int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(cause != 0);
@@ -609,6 +618,7 @@ pa_queue *pa_sink_move_all_start(pa_sink *s, pa_queue *q) {
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
if (!q)
@@ -633,6 +643,7 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) {
pa_sink_input *i;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(q);
@@ -649,6 +660,8 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) {
/* Called from main context */
void pa_sink_move_all_fail(pa_queue *q) {
pa_sink_input *i;
+
+ pa_assert_ctl_context();
pa_assert(q);
while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) {
@@ -667,6 +680,7 @@ void pa_sink_process_rewind(pa_sink *s, size_t nbytes) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
/* If nobody requested this and this is actually no real rewind
@@ -703,6 +717,7 @@ static unsigned fill_mix_info(pa_sink *s, size_t *length, pa_mix_info *info, uns
size_t mixlength = *length;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(info);
while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)) && maxinfo > 0) {
@@ -742,6 +757,7 @@ static void inputs_drop(pa_sink *s, pa_mix_info *info, unsigned n, pa_memchunk *
unsigned n_unreffed = 0;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(result);
pa_assert(result->memblock);
pa_assert(result->length > 0);
@@ -837,6 +853,7 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) {
size_t block_size_max;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(pa_frame_aligned(length, &s->sample_spec));
pa_assert(result);
@@ -923,6 +940,7 @@ void pa_sink_render_into(pa_sink*s, pa_memchunk *target) {
size_t length, block_size_max;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(target);
pa_assert(target->memblock);
@@ -1006,6 +1024,7 @@ void pa_sink_render_into_full(pa_sink *s, pa_memchunk *target) {
size_t l, d;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(target);
pa_assert(target->memblock);
@@ -1040,6 +1059,7 @@ void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result) {
unsigned n;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
pa_assert(length > 0);
pa_assert(pa_frame_aligned(length, &s->sample_spec));
@@ -1131,6 +1151,7 @@ pa_usec_t pa_sink_get_latency(pa_sink *s) {
pa_usec_t usec = 0;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
/* The returned value is supposed to be in the time domain of the sound card! */
@@ -1152,6 +1173,7 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
pa_msgobject *o;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
/* The returned value is supposed to be in the time domain of the sound card! */
@@ -1218,6 +1240,7 @@ void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume) {
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(new_volume);
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
@@ -1274,6 +1297,7 @@ void pa_sink_propagate_flat_volume(pa_sink *s) {
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
@@ -1322,6 +1346,7 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
pa_bool_t virtual_volume_changed;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
@@ -1363,6 +1388,7 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
/* Called from main thread. Only to be called by sink implementor */
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(volume);
s->soft_volume = *volume;
@@ -1376,6 +1402,8 @@ void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) {
/* Called from main thread */
const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_bool_t reference) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->refresh_volume || force_refresh) {
struct pa_cvolume old_virtual_volume = s->virtual_volume;
@@ -1408,6 +1436,8 @@ const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_boo
/* Called from main thread */
void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
/* The sink implementor may call this if the volume changed to make sure everyone is notified */
if (pa_cvolume_equal(&s->virtual_volume, new_volume))
@@ -1427,6 +1457,7 @@ void pa_sink_set_mute(pa_sink *s, pa_bool_t mute, pa_bool_t save) {
pa_bool_t old_muted;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
old_muted = s->muted;
@@ -1446,6 +1477,8 @@ void pa_sink_set_mute(pa_sink *s, pa_bool_t mute, pa_bool_t save) {
pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->refresh_muted || force_refresh) {
pa_bool_t old_muted = s->muted;
@@ -1472,6 +1505,8 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
/* Called from main thread */
void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
/* The sink implementor may call this if the volume changed to make sure everyone is notified */
@@ -1487,6 +1522,7 @@ void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted) {
/* Called from main thread */
pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(s->proplist, mode, p);
@@ -1500,16 +1536,18 @@ pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist
}
/* Called from main thread */
+/* FIXME -- this should be dropped and be merged into pa_sink_update_proplist() */
void pa_sink_set_description(pa_sink *s, const char *description) {
const char *old;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!description && !pa_proplist_contains(s->proplist, PA_PROP_DEVICE_DESCRIPTION))
return;
old = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_DESCRIPTION);
- if (old && description && !strcmp(old, description))
+ if (old && description && pa_streq(old, description))
return;
if (description)
@@ -1536,6 +1574,7 @@ unsigned pa_sink_linked_by(pa_sink *s) {
unsigned ret;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
ret = pa_idxset_size(s->inputs);
@@ -1554,6 +1593,7 @@ unsigned pa_sink_used_by(pa_sink *s) {
unsigned ret;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
ret = pa_idxset_size(s->inputs);
@@ -1572,6 +1612,7 @@ unsigned pa_sink_check_suspend(pa_sink *s) {
uint32_t idx;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SINK_IS_LINKED(s->state))
return 0;
@@ -1605,8 +1646,9 @@ static void sync_input_volumes_within_thread(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
- while ((i = PA_SINK_INPUT(pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))) {
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state) {
if (pa_cvolume_equal(&i->thread_info.soft_volume, &i->soft_volume))
continue;
@@ -1942,9 +1984,10 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause)
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert_ctl_context();
pa_assert(cause != 0);
- for (sink = PA_SINK(pa_idxset_first(c->sinks, &idx)); sink; sink = PA_SINK(pa_idxset_next(c->sinks, &idx))) {
+ PA_IDXSET_FOREACH(sink, c->sinks, idx) {
int r;
if ((r = pa_sink_suspend(sink, suspend, cause)) < 0)
@@ -1957,6 +2000,7 @@ int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause)
/* Called from main thread */
void pa_sink_detach(pa_sink *s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_DETACH, NULL, 0, NULL) == 0);
@@ -1965,6 +2009,7 @@ void pa_sink_detach(pa_sink *s) {
/* Called from main thread */
void pa_sink_attach(pa_sink *s) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_ATTACH, NULL, 0, NULL) == 0);
@@ -1976,9 +2021,10 @@ void pa_sink_detach_within_thread(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->detach)
i->detach(i);
@@ -1992,9 +2038,10 @@ void pa_sink_attach_within_thread(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->attach)
i->attach(i);
@@ -2005,6 +2052,7 @@ void pa_sink_attach_within_thread(pa_sink *s) {
/* Called from IO thread */
void pa_sink_request_rewind(pa_sink*s, size_t nbytes) {
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(PA_SINK_IS_LINKED(s->thread_info.state));
if (s->thread_info.state == PA_SINK_SUSPENDED)
@@ -2034,6 +2082,7 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
pa_usec_t monitor_latency;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
@@ -2070,6 +2119,7 @@ pa_usec_t pa_sink_get_requested_latency(pa_sink *s) {
pa_usec_t usec = 0;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
if (s->state == PA_SINK_SUSPENDED)
@@ -2085,16 +2135,16 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (max_rewind == s->thread_info.max_rewind)
return;
s->thread_info.max_rewind = max_rewind;
- if (PA_SINK_IS_LINKED(s->thread_info.state)) {
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ if (PA_SINK_IS_LINKED(s->thread_info.state))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
pa_sink_input_update_max_rewind(i, s->thread_info.max_rewind);
- }
if (s->monitor_source)
pa_source_set_max_rewind_within_thread(s->monitor_source, s->thread_info.max_rewind);
@@ -2103,6 +2153,7 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind) {
/* Called from main thread */
void pa_sink_set_max_rewind(pa_sink *s, size_t max_rewind) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (PA_SINK_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0);
@@ -2115,6 +2166,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (max_request == s->thread_info.max_request)
return;
@@ -2124,7 +2176,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
pa_sink_input *i;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
pa_sink_input_update_max_request(i, s->thread_info.max_request);
}
}
@@ -2132,6 +2184,7 @@ void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request) {
/* Called from main thread */
void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (PA_SINK_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_MAX_REQUEST, NULL, max_request, NULL) == 0);
@@ -2145,6 +2198,7 @@ void pa_sink_invalidate_requested_latency(pa_sink *s) {
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
return;
@@ -2156,7 +2210,7 @@ void pa_sink_invalidate_requested_latency(pa_sink *s) {
if (s->update_requested_latency)
s->update_requested_latency(s);
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->update_sink_requested_latency)
i->update_sink_requested_latency(i);
}
@@ -2165,6 +2219,7 @@ void pa_sink_invalidate_requested_latency(pa_sink *s) {
/* Called from main thread */
void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
/* min_latency == 0: no limit
* min_latency anything else: specified limit
@@ -2199,6 +2254,7 @@ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_
/* Called from main thread */
void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *max_latency) {
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(min_latency);
pa_assert(max_latency);
@@ -2220,6 +2276,7 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
void *state = NULL;
pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY);
pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY);
@@ -2236,7 +2293,7 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
pa_sink_input *i;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->update_sink_latency_range)
i->update_sink_latency_range(i);
}
@@ -2249,7 +2306,7 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
/* Called from main thread, before the sink is put */
void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
pa_sink_assert_ref(s);
-
+ pa_assert_ctl_context();
pa_assert(pa_sink_get_state(s) == PA_SINK_INIT);
if (latency < ABSOLUTE_MIN_LATENCY)
@@ -2266,6 +2323,7 @@ void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
size_t pa_sink_get_max_rewind(pa_sink *s) {
size_t r;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SINK_IS_LINKED(s->state))
return s->thread_info.max_rewind;
@@ -2279,6 +2337,7 @@ size_t pa_sink_get_max_rewind(pa_sink *s) {
size_t pa_sink_get_max_request(pa_sink *s) {
size_t r;
pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SINK_IS_LINKED(s->state))
return s->thread_info.max_request;
@@ -2292,7 +2351,8 @@ size_t pa_sink_get_max_request(pa_sink *s) {
int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) {
pa_device_port *port;
- pa_assert(s);
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
if (!s->set_port) {
pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name);
@@ -2323,7 +2383,6 @@ int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) {
return 0;
}
-/* Called from main context */
pa_bool_t pa_device_init_icon(pa_proplist *p, pa_bool_t is_sink) {
const char *ff, *c, *t = NULL, *s = "", *profile, *bus;
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 7a8cdaf..1303396 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -42,6 +42,7 @@ typedef struct pa_device_port pa_device_port;
#include <pulsecore/rtpoll.h>
#include <pulsecore/card.h>
#include <pulsecore/queue.h>
+#include <pulsecore/thread-mq.h>
#define PA_MAX_INPUTS_PER_SINK 32
@@ -343,4 +344,10 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s);
pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra);
void pa_device_port_free(pa_device_port *p);
+/* Verify that we called in IO context (aka 'thread context), or that
+ * the sink is not yet set up, i.e. the thread not set up yet. See
+ * pa_assert_io_context() in thread-mq.h for more information. */
+#define pa_sink_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SINK_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 4ba25ae..fdc00e1 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -48,7 +48,7 @@ static void source_output_free(pa_object* mo);
pa_source_output_new_data* pa_source_output_new_data_init(pa_source_output_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->resample_method = PA_RESAMPLER_INVALID;
data->proplist = pa_proplist_new();
@@ -111,6 +111,7 @@ int pa_source_output_new(
pa_assert(_o);
pa_assert(core);
pa_assert(data);
+ pa_assert_ctl_context();
if (data->client)
pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->client->proplist);
@@ -262,6 +263,7 @@ int pa_source_output_new(
/* Called from main context */
static void update_n_corked(pa_source_output *o, pa_source_output_state_t state) {
pa_assert(o);
+ pa_assert_ctl_context();
if (!o->source)
return;
@@ -275,6 +277,7 @@ static void update_n_corked(pa_source_output *o, pa_source_output_state_t state)
/* Called from main context */
static void source_output_set_state(pa_source_output *o, pa_source_output_state_t state) {
pa_assert(o);
+ pa_assert_ctl_context();
if (o->state == state)
return;
@@ -294,6 +297,7 @@ static void source_output_set_state(pa_source_output *o, pa_source_output_state_
void pa_source_output_unlink(pa_source_output*o) {
pa_bool_t linked;
pa_assert(o);
+ pa_assert_ctl_context();
/* See pa_sink_unlink() for a couple of comments how this function
* works */
@@ -346,6 +350,7 @@ static void source_output_free(pa_object* mo) {
pa_source_output *o = PA_SOURCE_OUTPUT(mo);
pa_assert(o);
+ pa_assert_ctl_context();
pa_assert(pa_source_output_refcnt(o) == 0);
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state))
@@ -371,7 +376,9 @@ static void source_output_free(pa_object* mo) {
/* Called from main context */
void pa_source_output_put(pa_source_output *o) {
pa_source_output_state_t state;
+
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(o->state == PA_SOURCE_OUTPUT_INIT);
@@ -395,6 +402,7 @@ void pa_source_output_put(pa_source_output *o) {
/* Called from main context */
void pa_source_output_kill(pa_source_output*o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
o->kill(o);
@@ -405,6 +413,7 @@ pa_usec_t pa_source_output_get_latency(pa_source_output *o, pa_usec_t *source_la
pa_usec_t r[2] = { 0, 0 };
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_GET_LATENCY, r, 0, NULL) == 0);
@@ -424,6 +433,7 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {
size_t limit, mbs = 0;
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state));
pa_assert(chunk);
pa_assert(pa_frame_aligned(chunk->length, &o->source->sample_spec));
@@ -499,8 +509,9 @@ void pa_source_output_push(pa_source_output *o, const pa_memchunk *chunk) {
/* Called from thread context */
void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in source sample spec */) {
- pa_source_output_assert_ref(o);
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &o->source->sample_spec));
@@ -528,6 +539,7 @@ void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in so
/* Called from thread context */
void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* in the source's sample spec */) {
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->thread_info.state));
pa_assert(pa_frame_aligned(nbytes, &o->source->sample_spec));
@@ -538,6 +550,7 @@ void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* i
/* Called from thread context */
pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec) {
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
usec = o->source->fixed_latency;
@@ -554,6 +567,7 @@ pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output
/* Called from main context */
pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t usec) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) {
pa_assert_se(pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o), PA_SOURCE_OUTPUT_MESSAGE_SET_REQUESTED_LATENCY, &usec, 0, NULL) == 0);
@@ -582,6 +596,7 @@ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t
/* Called from main context */
pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
if (PA_SOURCE_OUTPUT_IS_LINKED(o->state) && o->source) {
pa_usec_t usec = 0;
@@ -598,6 +613,7 @@ pa_usec_t pa_source_output_get_requested_latency(pa_source_output *o) {
/* Called from main context */
void pa_source_output_cork(pa_source_output *o, pa_bool_t b) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
source_output_set_state(o, b ? PA_SOURCE_OUTPUT_CORKED : PA_SOURCE_OUTPUT_RUNNING);
@@ -606,6 +622,7 @@ void pa_source_output_cork(pa_source_output *o, pa_bool_t b) {
/* Called from main context */
int pa_source_output_set_rate(pa_source_output *o, uint32_t rate) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_return_val_if_fail(o->thread_info.resampler, -PA_ERR_BADSTATE);
@@ -623,6 +640,7 @@ int pa_source_output_set_rate(pa_source_output *o, uint32_t rate) {
/* Called from main context */
void pa_source_output_set_name(pa_source_output *o, const char *name) {
const char *old;
+ pa_assert_ctl_context();
pa_source_output_assert_ref(o);
if (!name && !pa_proplist_contains(o->proplist, PA_PROP_MEDIA_NAME))
@@ -647,11 +665,12 @@ void pa_source_output_set_name(pa_source_output *o, const char *name) {
/* Called from main thread */
void pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t mode, pa_proplist *p) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(o->proplist, mode, p);
- if (PA_SINK_IS_LINKED(o->state)) {
+ if (PA_SOURCE_OUTPUT_IS_LINKED(o->state)) {
pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_PROPLIST_CHANGED], o);
pa_subscription_post(o->core, PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT|PA_SUBSCRIPTION_EVENT_CHANGE, o->index);
}
@@ -660,6 +679,7 @@ void pa_source_output_update_proplist(pa_source_output *o, pa_update_mode_t mode
/* Called from main context */
pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
return o->actual_resample_method;
}
@@ -667,6 +687,7 @@ pa_resample_method_t pa_source_output_get_resample_method(pa_source_output *o) {
/* Called from main context */
pa_bool_t pa_source_output_may_move(pa_source_output *o) {
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
if (o->flags & PA_SOURCE_OUTPUT_DONT_MOVE)
@@ -708,6 +729,7 @@ int pa_source_output_start_move(pa_source_output *o) {
int r;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert(o->source);
@@ -739,6 +761,7 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t
pa_resampler *new_resampler;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert(!o->source);
pa_source_assert_ref(dest);
@@ -820,6 +843,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
int r;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
pa_assert(o->source);
pa_source_assert_ref(dest);
@@ -850,6 +874,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
/* Called from IO thread context */
void pa_source_output_set_state_within_thread(pa_source_output *o, pa_source_output_state_t state) {
pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
if (state == o->thread_info.state)
return;
@@ -906,11 +931,13 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int
return -PA_ERR_NOTIMPLEMENTED;
}
+/* Called from main context */
void pa_source_output_send_event(pa_source_output *o, const char *event, pa_proplist *data) {
pa_proplist *pl = NULL;
pa_source_output_send_event_hook_data hook_data;
pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
pa_assert(event);
if (!o->send_event)
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 9824e16..7b32c86 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -277,4 +277,7 @@ int pa_source_output_process_msg(pa_msgobject *mo, int code, void *userdata, int
pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output *o, pa_usec_t usec);
+#define pa_source_output_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SOURCE_OUTPUT_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index b8af148..97a20b9 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -33,6 +33,7 @@
#include <pulse/timeval.h>
#include <pulse/util.h>
+#include <pulsecore/core-util.h>
#include <pulsecore/source-output.h>
#include <pulsecore/namereg.h>
#include <pulsecore/core-subscribe.h>
@@ -52,7 +53,7 @@ static void source_free(pa_object *o);
pa_source_new_data* pa_source_new_data_init(pa_source_new_data *data) {
pa_assert(data);
- memset(data, 0, sizeof(*data));
+ pa_zero(*data);
data->proplist = pa_proplist_new();
return data;
@@ -145,6 +146,7 @@ pa_source* pa_source_new(
pa_assert(core);
pa_assert(data);
pa_assert(data->name);
+ pa_assert_ctl_context();
s = pa_msgobject_new(pa_source);
@@ -297,6 +299,7 @@ static int source_set_state(pa_source *s, pa_source_state_t state) {
pa_source_state_t original_state;
pa_assert(s);
+ pa_assert_ctl_context();
if (s->state == state)
return 0;
@@ -348,6 +351,7 @@ static int source_set_state(pa_source *s, pa_source_state_t state) {
/* Called from main context */
void pa_source_put(pa_source *s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(s->state == PA_SOURCE_INIT);
@@ -382,6 +386,7 @@ void pa_source_unlink(pa_source *s) {
pa_source_output *o, *j = NULL;
pa_assert(s);
+ pa_assert_ctl_context();
/* See pa_sink_unlink() for a couple of comments how this function
* works. */
@@ -423,6 +428,7 @@ static void source_free(pa_object *o) {
pa_source *s = PA_SOURCE(o);
pa_assert(s);
+ pa_assert_ctl_context();
pa_assert(pa_source_refcnt(s) == 0);
if (PA_SOURCE_IS_LINKED(s->state))
@@ -460,6 +466,7 @@ static void source_free(pa_object *o) {
/* Called from main context */
void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) {
+ pa_assert_ctl_context();
pa_source_assert_ref(s);
s->asyncmsgq = q;
@@ -467,6 +474,7 @@ void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) {
/* Called from main context */
void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p) {
+ pa_assert_ctl_context();
pa_source_assert_ref(s);
s->rtpoll = p;
@@ -475,6 +483,7 @@ void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p) {
/* Called from main context */
int pa_source_update_status(pa_source*s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->state == PA_SOURCE_SUSPENDED)
@@ -486,6 +495,7 @@ int pa_source_update_status(pa_source*s) {
/* Called from main context */
int pa_source_suspend(pa_source *s, pa_bool_t suspend, pa_suspend_cause_t cause) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(cause != 0);
@@ -513,6 +523,7 @@ int pa_source_sync_suspend(pa_source *s) {
pa_sink_state_t state;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(s->monitor_of);
@@ -532,6 +543,7 @@ pa_queue *pa_source_move_all_start(pa_source *s, pa_queue *q) {
uint32_t idx;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (!q)
@@ -556,6 +568,7 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) {
pa_source_output *o;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(q);
@@ -572,6 +585,8 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) {
/* Called from main context */
void pa_source_move_all_fail(pa_queue *q) {
pa_source_output *o;
+
+ pa_assert_ctl_context();
pa_assert(q);
while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) {
@@ -590,6 +605,7 @@ void pa_source_process_rewind(pa_source *s, size_t nbytes) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
if (nbytes <= 0)
@@ -612,6 +628,7 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
pa_assert(chunk);
@@ -651,6 +668,7 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) {
/* Called from IO thread context */
void pa_source_post_direct(pa_source*s, pa_source_output *o, const pa_memchunk *chunk) {
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
pa_source_output_assert_ref(o);
pa_assert(o->thread_info.direct_on_input);
@@ -682,6 +700,7 @@ pa_usec_t pa_source_get_latency(pa_source *s) {
pa_usec_t usec;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->state == PA_SOURCE_SUSPENDED)
@@ -701,6 +720,7 @@ pa_usec_t pa_source_get_latency_within_thread(pa_source *s) {
pa_msgobject *o;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
/* The returned value is supposed to be in the time domain of the sound card! */
@@ -727,6 +747,7 @@ void pa_source_set_volume(pa_source *s, const pa_cvolume *volume, pa_bool_t save
pa_bool_t virtual_volume_changed;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
@@ -752,6 +773,7 @@ void pa_source_set_volume(pa_source *s, const pa_cvolume *volume, pa_bool_t save
/* Called from main thread. Only to be called by source implementor */
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(volume);
if (PA_SOURCE_IS_LINKED(s->state))
@@ -763,6 +785,7 @@ void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume) {
/* Called from main thread */
const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->refresh_volume || force_refresh) {
@@ -785,6 +808,8 @@ const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) {
/* Called from main thread */
void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SOURCE_IS_LINKED(s->state));
/* The source implementor may call this if the volume changed to make sure everyone is notified */
@@ -802,6 +827,7 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute, pa_bool_t save) {
pa_bool_t old_muted;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
old_muted = s->muted;
@@ -820,6 +846,7 @@ void pa_source_set_mute(pa_source *s, pa_bool_t mute, pa_bool_t save) {
/* Called from main thread */
pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->refresh_muted || force_refresh) {
@@ -846,6 +873,8 @@ pa_bool_t pa_source_get_mute(pa_source *s, pa_bool_t force_refresh) {
/* Called from main thread */
void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SOURCE_IS_LINKED(s->state));
/* The source implementor may call this if the mute state changed to make sure everyone is notified */
@@ -861,6 +890,7 @@ void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted) {
/* Called from main thread */
pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_proplist *p) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (p)
pa_proplist_update(s->proplist, mode, p);
@@ -874,16 +904,18 @@ pa_bool_t pa_source_update_proplist(pa_source *s, pa_update_mode_t mode, pa_prop
}
/* Called from main thread */
+/* FIXME -- this should be dropped and be merged into pa_source_update_proplist() */
void pa_source_set_description(pa_source *s, const char *description) {
const char *old;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (!description && !pa_proplist_contains(s->proplist, PA_PROP_DEVICE_DESCRIPTION))
return;
old = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_DESCRIPTION);
- if (old && description && !strcmp(old, description))
+ if (old && description && pa_streq(old, description))
return;
if (description)
@@ -901,6 +933,7 @@ void pa_source_set_description(pa_source *s, const char *description) {
unsigned pa_source_linked_by(pa_source *s) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert_ctl_context();
return pa_idxset_size(s->outputs);
}
@@ -911,6 +944,7 @@ unsigned pa_source_used_by(pa_source *s) {
pa_source_assert_ref(s);
pa_assert(PA_SOURCE_IS_LINKED(s->state));
+ pa_assert_ctl_context();
ret = pa_idxset_size(s->outputs);
pa_assert(ret >= s->n_corked);
@@ -925,6 +959,7 @@ unsigned pa_source_check_suspend(pa_source *s) {
uint32_t idx;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (!PA_SOURCE_IS_LINKED(s->state))
return 0;
@@ -1120,6 +1155,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus
int ret = 0;
pa_core_assert_ref(c);
+ pa_assert_ctl_context();
pa_assert(cause != 0);
for (source = PA_SOURCE(pa_idxset_first(c->sources, &idx)); source; source = PA_SOURCE(pa_idxset_next(c->sources, &idx))) {
@@ -1138,6 +1174,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus
/* Called from main thread */
void pa_source_detach(pa_source *s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_DETACH, NULL, 0, NULL) == 0);
@@ -1146,6 +1183,7 @@ void pa_source_detach(pa_source *s) {
/* Called from main thread */
void pa_source_attach(pa_source *s) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_ATTACH, NULL, 0, NULL) == 0);
@@ -1157,9 +1195,10 @@ void pa_source_detach_within_thread(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->detach)
o->detach(o);
}
@@ -1170,9 +1209,10 @@ void pa_source_attach_within_thread(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(PA_SOURCE_IS_LINKED(s->thread_info.state));
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->attach)
o->attach(o);
}
@@ -1184,6 +1224,7 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
@@ -1214,6 +1255,7 @@ pa_usec_t pa_source_get_requested_latency(pa_source *s) {
pa_usec_t usec = 0;
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->state == PA_SOURCE_SUSPENDED)
@@ -1230,21 +1272,22 @@ void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
if (max_rewind == s->thread_info.max_rewind)
return;
s->thread_info.max_rewind = max_rewind;
- if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
pa_source_output_update_max_rewind(o, s->thread_info.max_rewind);
- }
}
/* Called from main thread */
void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
if (PA_SOURCE_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_MAX_REWIND, NULL, max_rewind, NULL) == 0);
@@ -1258,6 +1301,7 @@ void pa_source_invalidate_requested_latency(pa_source *s) {
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
return;
@@ -1281,6 +1325,7 @@ void pa_source_invalidate_requested_latency(pa_source *s) {
/* Called from main thread */
void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
/* min_latency == 0: no limit
* min_latency anything else: specified limit
@@ -1315,6 +1360,7 @@ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t
/* Called from main thread */
void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(min_latency);
pa_assert(max_latency);
@@ -1336,6 +1382,7 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
void *state = NULL;
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
pa_assert(min_latency >= ABSOLUTE_MIN_LATENCY);
pa_assert(max_latency <= ABSOLUTE_MAX_LATENCY);
@@ -1364,6 +1411,7 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
/* Called from main thread, before the source is put */
void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
pa_assert(pa_source_get_state(s) == PA_SOURCE_INIT);
@@ -1379,6 +1427,7 @@ void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
/* Called from main thread */
size_t pa_source_get_max_rewind(pa_source *s) {
size_t r;
+ pa_assert_ctl_context();
pa_source_assert_ref(s);
if (!PA_SOURCE_IS_LINKED(s->state))
@@ -1394,9 +1443,10 @@ int pa_source_set_port(pa_source *s, const char *name, pa_bool_t save) {
pa_device_port *port;
pa_assert(s);
+ pa_assert_ctl_context();
if (!s->set_port) {
- pa_log_debug("set_port() operation not implemented for sink %u \"%s\"", s->index, s->name);
+ pa_log_debug("set_port() operation not implemented for source %u \"%s\"", s->index, s->name);
return -PA_ERR_NOTIMPLEMENTED;
}
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index d22e7ca..001122b 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -43,6 +43,7 @@ typedef struct pa_source pa_source;
#include <pulsecore/source-output.h>
#include <pulsecore/card.h>
#include <pulsecore/queue.h>
+#include <pulsecore/thread-mq.h>
#define PA_MAX_OUTPUTS_PER_SOURCE 32
@@ -295,4 +296,7 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
void pa_source_invalidate_requested_latency(pa_source *s);
pa_usec_t pa_source_get_latency_within_thread(pa_source *s);
+#define pa_source_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get() || !PA_SOURCE_IS_LINKED((s)->state))
+
#endif
diff --git a/src/pulsecore/thread-mq.h b/src/pulsecore/thread-mq.h
index 3b5e0e7..96839d2 100644
--- a/src/pulsecore/thread-mq.h
+++ b/src/pulsecore/thread-mq.h
@@ -45,4 +45,12 @@ void pa_thread_mq_install(pa_thread_mq *q);
/* Return the pa_thread_mq object that is set for the current thread */
pa_thread_mq *pa_thread_mq_get(void);
+/* Verify that we are in control context (aka 'main context'). */
+#define pa_assert_ctl_context(s) \
+ pa_assert(!pa_thread_mq_get())
+
+/* Verify that we are in IO context (aka 'thread context'). */
+#define pa_assert_io_context(s) \
+ pa_assert(pa_thread_mq_get())
+
#endif
commit 5ee4069e9e68f81a71d208bb720d0c6bc6112fdc
Author: Lennart Poettering <lennart at poettering.net>
Date: Thu Aug 13 02:17:24 2009 +0200
core: add functions to query max_rewind/max_request values from streams
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index c783729..1f67d0f 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -803,6 +803,25 @@ void pa_sink_input_process_rewind(pa_sink_input *i, size_t nbytes /* in sink sam
}
/* Called from thread context */
+size_t pa_sink_input_get_max_rewind(pa_sink_input *i) {
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+
+ return i->thread_info.resampler ? pa_resampler_request(i->thread_info.resampler, i->sink->thread_info.max_rewind) : i->sink->thread_info.max_rewind;
+}
+
+/* Called from thread context */
+size_t pa_sink_input_get_max_request(pa_sink_input *i) {
+ pa_sink_input_assert_ref(i);
+ pa_sink_input_assert_io_context(i);
+
+ /* We're not verifying the status here, to allow this to be called
+ * in the state change handler between _INIT and _RUNNING */
+
+ return i->thread_info.resampler ? pa_resampler_request(i->thread_info.resampler, i->sink->thread_info.max_request) : i->sink->thread_info.max_request;
+}
+
+/* Called from thread context */
void pa_sink_input_update_max_rewind(pa_sink_input *i, size_t nbytes /* in the sink's sample spec */) {
pa_sink_input_assert_ref(i);
pa_sink_input_assert_io_context(i);
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index 5ede1ca..cd424e8 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -303,6 +303,10 @@ void pa_sink_input_cork(pa_sink_input *i, pa_bool_t b);
int pa_sink_input_set_rate(pa_sink_input *i, uint32_t rate);
+/* This returns the sink's fields converted into out sample type */
+size_t pa_sink_input_get_max_rewind(pa_sink_input *i);
+size_t pa_sink_input_get_max_request(pa_sink_input *i);
+
/* Callable by everyone from main thread*/
/* External code may request disconnection with this function */
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index fdc00e1..5d79dbb 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -537,6 +537,14 @@ void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in so
}
/* Called from thread context */
+size_t pa_source_output_get_max_rewind(pa_source_output *o) {
+ pa_source_output_assert_ref(o);
+ pa_source_output_assert_io_context(o);
+
+ return o->thread_info.resampler ? pa_resampler_request(o->thread_info.resampler, o->source->thread_info.max_rewind) : o->source->thread_info.max_rewind;
+}
+
+/* Called from thread context */
void pa_source_output_update_max_rewind(pa_source_output *o, size_t nbytes /* in the source's sample spec */) {
pa_source_output_assert_ref(o);
pa_source_output_assert_io_context(o);
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 7b32c86..4bf88ca 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -238,6 +238,8 @@ void pa_source_output_cork(pa_source_output *o, pa_bool_t b);
int pa_source_output_set_rate(pa_source_output *o, uint32_t rate);
+size_t pa_source_output_get_max_rewind(pa_source_output *o);
+
/* Callable by everyone */
/* External code may request disconnection with this funcion */
commit aae7054b1c442e62cc1154d15a4b7a569d60d8f4
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 04:12:36 2009 +0200
pacmd: handle multi word commands in argv[] properly
diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c
index e4d054b..5ef57e3 100644
--- a/src/utils/pacmd.c
+++ b/src/utils/pacmd.c
@@ -116,7 +116,7 @@ int main(int argc, char*argv[]) {
size_t k;
k = PA_MIN(sizeof(ibuf) - ibuf_length, strlen(argv[i]));
- memcpy(ibuf + ibuf_length, argv[1], k);
+ memcpy(ibuf + ibuf_length, argv[i], k);
ibuf_length += k;
if (ibuf_length < sizeof(ibuf)) {
commit b0cabfe16b5e44ec44828ad342ae5a48dedcc6e6
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 04:14:35 2009 +0200
shm: bump shm size limit to 1GB
diff --git a/src/pulsecore/shm.c b/src/pulsecore/shm.c
index 6e42842..fbf777a 100644
--- a/src/pulsecore/shm.c
+++ b/src/pulsecore/shm.c
@@ -60,7 +60,8 @@
#define MADV_REMOVE 9
#endif
-#define MAX_SHM_SIZE (PA_ALIGN(1024*1024*64))
+/* 1 GiB at max */
+#define MAX_SHM_SIZE (PA_ALIGN(1024*1024*1024))
#ifdef __linux__
/* On Linux we know that the shared memory blocks are files in
commit a42c597f0aef863ee38065c52fbe60d382f9d5e8
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 04:16:28 2009 +0200
memblockq: add pa_memblockq_get_maxrewind() API
diff --git a/src/pulsecore/memblockq.c b/src/pulsecore/memblockq.c
index 77f9efc..32758be 100644
--- a/src/pulsecore/memblockq.c
+++ b/src/pulsecore/memblockq.c
@@ -692,6 +692,12 @@ size_t pa_memblockq_get_minreq(pa_memblockq *bq) {
return bq->minreq;
}
+size_t pa_memblockq_get_maxrewind(pa_memblockq *bq) {
+ pa_assert(bq);
+
+ return bq->maxrewind;
+}
+
int64_t pa_memblockq_get_read_index(pa_memblockq *bq) {
pa_assert(bq);
diff --git a/src/pulsecore/memblockq.h b/src/pulsecore/memblockq.h
index 146d261..587c364 100644
--- a/src/pulsecore/memblockq.h
+++ b/src/pulsecore/memblockq.h
@@ -141,6 +141,9 @@ size_t pa_memblockq_get_prebuf(pa_memblockq *bq);
/* Returns the minimal request value */
size_t pa_memblockq_get_minreq(pa_memblockq *bq);
+/* Returns the maximal rewind value */
+size_t pa_memblockq_get_maxrewind(pa_memblockq *bq);
+
/* Return the base unit in bytes */
size_t pa_memblockq_get_base(pa_memblockq *bq);
commit 446fb2c9fea4f9c3f268868547f5f11c287ecba0
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 04:17:48 2009 +0200
asyncmsgq: add pa_asyncmsgq_flush() call
diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c
index 083d9de..3672140 100644
--- a/src/pulsecore/asyncmsgq.c
+++ b/src/pulsecore/asyncmsgq.c
@@ -26,14 +26,16 @@
#include <unistd.h>
#include <errno.h>
+#include <pulse/xmalloc.h>
+
#include <pulsecore/atomic.h>
+#include <pulsecore/macro.h>
#include <pulsecore/log.h>
#include <pulsecore/thread.h>
#include <pulsecore/semaphore.h>
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
#include <pulsecore/flist.h>
-#include <pulse/xmalloc.h>
#include "asyncmsgq.h"
@@ -76,7 +78,7 @@ static void asyncmsgq_free(pa_asyncmsgq *a) {
struct asyncmsgq_item *i;
pa_assert(a);
- while ((i = pa_asyncq_pop(a->asyncq, 0))) {
+ while ((i = pa_asyncq_pop(a->asyncq, FALSE))) {
pa_assert(!i->semaphore);
@@ -246,7 +248,7 @@ int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code) {
pa_memchunk chunk;
int ret;
- if (pa_asyncmsgq_get(a, &o, &c, &data, &offset, &chunk, 1) < 0)
+ if (pa_asyncmsgq_get(a, &o, &c, &data, &offset, &chunk, TRUE) < 0)
return -1;
ret = pa_asyncmsgq_dispatch(o, c, data, offset, &chunk);
@@ -269,7 +271,7 @@ int pa_asyncmsgq_process_one(pa_asyncmsgq *a) {
pa_assert(PA_REFCNT_VALUE(a) > 0);
- if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, 0) < 0)
+ if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, FALSE) < 0)
return 0;
pa_asyncmsgq_ref(a);
@@ -323,3 +325,29 @@ int pa_asyncmsgq_dispatch(pa_msgobject *object, int code, void *userdata, int64_
return 0;
}
+
+void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run) {
+ pa_assert(PA_REFCNT_VALUE(a) > 0);
+
+ for (;;) {
+ pa_msgobject *object;
+ int code;
+ void *data;
+ int64_t offset;
+ pa_memchunk chunk;
+ int ret;
+
+ if (pa_asyncmsgq_get(a, &object, &code, &data, &offset, &chunk, FALSE) < 0)
+ return;
+
+ if (!run) {
+ pa_asyncmsgq_done(a, -1);
+ continue;
+ }
+
+ pa_asyncmsgq_ref(a);
+ ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk);
+ pa_asyncmsgq_done(a, ret);
+ pa_asyncmsgq_unref(a);
+ }
+}
diff --git a/src/pulsecore/asyncmsgq.h b/src/pulsecore/asyncmsgq.h
index 1f38207..26f528f 100644
--- a/src/pulsecore/asyncmsgq.h
+++ b/src/pulsecore/asyncmsgq.h
@@ -66,6 +66,8 @@ void pa_asyncmsgq_done(pa_asyncmsgq *q, int ret);
int pa_asyncmsgq_wait_for(pa_asyncmsgq *a, int code);
int pa_asyncmsgq_process_one(pa_asyncmsgq *a);
+void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run);
+
/* For the reading side */
int pa_asyncmsgq_read_fd(pa_asyncmsgq *q);
int pa_asyncmsgq_read_before_poll(pa_asyncmsgq *a);
commit 9e21182e018db8755dea6368eed93a1a2b93f6f7
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 04:18:23 2009 +0200
thread-mq: never drop queued messages for the main loop
Previously we might have dropped messages from IO trheads to the main
thread. This tuend out to be problematic since this cause SHM release
messages to be lost. More visibly however this could cause playback
freezing when moving streams between sinks and removing the old sink
right away.
diff --git a/src/pulsecore/thread-mq.c b/src/pulsecore/thread-mq.c
index 34f92a7..ec67ae8 100644
--- a/src/pulsecore/thread-mq.c
+++ b/src/pulsecore/thread-mq.c
@@ -104,6 +104,13 @@ void pa_thread_mq_init(pa_thread_mq *q, pa_mainloop_api *mainloop, pa_rtpoll *rt
void pa_thread_mq_done(pa_thread_mq *q) {
pa_assert(q);
+ /* Since we are called from main context we can be sure that the
+ * inq is empty. However, the outq might still contain messages
+ * for the main loop, which we need to dispatch (e.g. release
+ * msgs, other stuff). Hence do so. */
+
+ pa_asyncmsgq_flush(q->outq, TRUE);
+
q->mainloop->io_free(q->read_event);
q->mainloop->io_free(q->write_event);
q->read_event = q->write_event = NULL;
commit fecd0dc801b0f4c9a929fb7ef00f4bd7f0e3d06c
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 04:21:09 2009 +0200
resampler: round up when estimating input/output sizes
diff --git a/src/pulsecore/resampler.c b/src/pulsecore/resampler.c
index 17fb848..59e0a0c 100644
--- a/src/pulsecore/resampler.c
+++ b/src/pulsecore/resampler.c
@@ -347,13 +347,17 @@ void pa_resampler_set_output_rate(pa_resampler *r, uint32_t rate) {
size_t pa_resampler_request(pa_resampler *r, size_t out_length) {
pa_assert(r);
- return (((out_length / r->o_fz)*r->i_ss.rate)/r->o_ss.rate) * r->i_fz;
+ /* Let's round up here */
+
+ return (((((out_length + r->o_fz-1) / r->o_fz) * r->i_ss.rate) + r->o_ss.rate-1) / r->o_ss.rate) * r->i_fz;
}
size_t pa_resampler_result(pa_resampler *r, size_t in_length) {
pa_assert(r);
- return (((in_length / r->i_fz)*r->o_ss.rate)/r->i_ss.rate) * r->o_fz;
+ /* Let's round up here */
+
+ return (((((in_length + r->i_fz-1) / r->i_fz) * r->o_ss.rate) + r->i_ss.rate-1) / r->i_ss.rate) * r->o_fz;
}
size_t pa_resampler_max_block_size(pa_resampler *r) {
commit a1598c742e999cc96a9ccf743c2eb6af8c444c73
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 19:28:18 2009 +0200
daemon: reset gids too, not just uids
diff --git a/src/daemon/caps.c b/src/daemon/caps.c
index 69e58cc..76b62e0 100644
--- a/src/daemon/caps.c
+++ b/src/daemon/caps.c
@@ -57,21 +57,29 @@ void pa_drop_root(void) {
#ifdef HAVE_GETUID
uid_t uid;
+ gid_t gid;
pa_log_debug(_("Cleaning up privileges."));
uid = getuid();
+ gid = getgid();
#if defined(HAVE_SETRESUID)
pa_assert_se(setresuid(uid, uid, uid) >= 0);
+ pa_assert_se(setresgid(gid, gid, gid) >= 0);
#elif defined(HAVE_SETREUID)
pa_assert_se(setreuid(uid, uid) >= 0);
+ pa_assert_se(setregid(gid, gid) >= 0);
#else
pa_assert_se(setuid(uid) >= 0);
pa_assert_se(seteuid(uid) >= 0);
+ pa_assert_se(setgid(gid) >= 0);
+ pa_assert_se(setegid(gid) >= 0);
#endif
pa_assert_se(getuid() == uid);
pa_assert_se(geteuid() == uid);
+ pa_assert_se(getgid() == gid);
+ pa_assert_se(getegid() == gid);
#endif
#ifdef HAVE_SYS_PRCTL_H
commit 72d2540e8dc47e101ac9d5ae24eee1b95e8dbcfa
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 19:31:05 2009 +0200
protocol-native: log explicitly each time a client triggers a volume change
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 9a37c56..0337220 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -3323,6 +3323,7 @@ static void command_set_volume(
pa_source *source = NULL;
pa_sink_input *si = NULL;
const char *name = NULL;
+ const char *client_name;
pa_native_connection_assert_ref(c);
pa_assert(t);
@@ -3369,12 +3370,20 @@ static void command_set_volume(
CHECK_VALIDITY(c->pstream, si || sink || source, tag, PA_ERR_NOENTITY);
- if (sink)
+ client_name = pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY));
+
+ if (sink) {
+ pa_log("Client %s changes volume of sink %s.", client_name, sink->name);
pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE, TRUE);
- else if (source)
+ } else if (source) {
+ pa_log("Client %s changes volume of sink %s.", client_name, source->name);
pa_source_set_volume(source, &volume, TRUE);
- else if (si)
+ } else if (si) {
+ pa_log("Client %s changes volume of sink %s.",
+ client_name,
+ pa_strnull(pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME)));
pa_sink_input_set_volume(si, &volume, TRUE, TRUE);
+ }
pa_pstream_send_simple_ack(c->pstream, tag);
}
commit 0f2a4ed422530b56b3744efe8055540644c0e774
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 20:03:30 2009 +0200
volume: guarantee dB/linear conversion is reversible
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 42cde5b..c23f360 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -205,9 +205,12 @@ pa_volume_t pa_sw_volume_from_linear(double v) {
*
* http://www.robotplanet.dk/audio/audio_gui_design/
* http://lists.linuxaudio.org/pipermail/linux-audio-dev/2009-May/thread.html#23151
+ *
+ * We make sure that the conversion to linear and back yields the
+ * same volume value! That's why we need the lround() below!
*/
- return (pa_volume_t) (cbrt(v) * PA_VOLUME_NORM);
+ return (pa_volume_t) lround(cbrt(v) * PA_VOLUME_NORM);
}
double pa_sw_volume_to_linear(pa_volume_t v) {
diff --git a/src/tests/voltest.c b/src/tests/voltest.c
index 2dcfa53..64aec5c 100644
--- a/src/tests/voltest.c
+++ b/src/tests/voltest.c
@@ -1,8 +1,33 @@
+/***
+ This file is part of PulseAudio.
+
+ PulseAudio is free software; you can redistribute it 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 <stdio.h>
#include <pulse/volume.h>
#include <pulse/gccmacro.h>
+#include <pulsecore/macro.h>
+
int main(int argc, char *argv[]) {
pa_volume_t v;
pa_cvolume cv;
@@ -60,5 +85,16 @@ int main(int argc, char *argv[]) {
printf("After: volume: [%s]; balance: %2.1f (intended: %2.1f) %s\n", pa_cvolume_snprint(s, sizeof(s), &r), k, b, k < b-.05 || k > b+.5 ? "MISMATCH" : "");
}
+ for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 1) {
+
+ double l = pa_sw_volume_to_linear(v);
+ pa_volume_t k = pa_sw_volume_from_linear(l);
+ double db = pa_sw_volume_to_dB(v);
+ pa_volume_t r = pa_sw_volume_from_dB(db);
+
+ pa_assert(k == v);
+ pa_assert(r == v);
+ }
+
return 0;
}
commit 7891f964e4a1858ccae744ddff5d33b78f00b4d2
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Aug 14 23:55:32 2009 +0200
module-stream-restore: don't fiddle with sinks/sources/streams that are not fully set up yet
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index 8c0bb6b..727a527 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -102,15 +102,16 @@ struct userdata {
pa_idxset *subscribed;
};
-#define ENTRY_VERSION 2
+#define ENTRY_VERSION 3
struct entry {
uint8_t version;
- pa_bool_t muted_valid:1, volume_valid:1, device_valid:1;
+ pa_bool_t muted_valid:1, volume_valid:1, device_valid:1, card_valid:1;
pa_bool_t muted:1;
pa_channel_map channel_map;
pa_cvolume volume;
char device[PA_NAME_MAX];
+ char card[PA_NAME_MAX];
} PA_GCC_PACKED;
enum {
@@ -196,11 +197,21 @@ static struct entry* read_entry(struct userdata *u, const char *name) {
goto fail;
}
+ if (!memchr(e->card, 0, sizeof(e->card))) {
+ pa_log_warn("Database contains entry for stream %s with missing NUL byte in card name", name);
+ goto fail;
+ }
+
if (e->device_valid && !pa_namereg_is_valid_name(e->device)) {
pa_log_warn("Invalid device name stored in database for stream %s", name);
goto fail;
}
+ if (e->card_valid && !pa_namereg_is_valid_name(e->card)) {
+ pa_log_warn("Invalid card name stored in database for stream %s", name);
+ goto fail;
+ }
+
if (e->volume_valid && !pa_channel_map_valid(&e->channel_map)) {
pa_log_warn("Invalid channel map stored in database for stream %s", name);
goto fail;
@@ -252,6 +263,10 @@ static pa_bool_t entries_equal(const struct entry *a, const struct entry *b) {
(a->device_valid && strncmp(a->device, b->device, sizeof(a->device))))
return FALSE;
+ if (a->card_valid != b->card_valid ||
+ (a->card_valid && strncmp(a->card, b->card, sizeof(a->card))))
+ return FALSE;
+
if (a->muted_valid != b->muted_valid ||
(a->muted_valid && (a->muted != b->muted)))
return FALSE;
@@ -308,6 +323,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (sink_input->save_sink) {
pa_strlcpy(entry.device, sink_input->sink->name, sizeof(entry.device));
entry.device_valid = TRUE;
+
+ if (sink_input->sink->card) {
+ pa_strlcpy(entry.card, sink_input->sink->card->name, sizeof(entry.card));
+ entry.card_valid = TRUE;
+ }
}
} else {
@@ -327,6 +347,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (source_output->save_source) {
pa_strlcpy(entry.device, source_output->source->name, sizeof(entry.device));
entry.device_valid = source_output->save_source;
+
+ if (source_output->source->card) {
+ pa_strlcpy(entry.card, source_output->source->card->name, sizeof(entry.card));
+ entry.card_valid = TRUE;
+ }
}
}
@@ -368,19 +393,28 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
if (!(name = get_name(new_data->proplist, "sink-input")))
return PA_HOOK_OK;
- if ((e = read_entry(u, name))) {
+ if (new_data->sink)
+ pa_log_debug("Not restoring device for stream %s, because already set.", name);
+ else if ((e = read_entry(u, name))) {
+ pa_sink *s = NULL;
- if (e->device_valid) {
- pa_sink *s;
+ if (e->device_valid)
+ s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK);
- if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SINK))) {
- if (!new_data->sink) {
- pa_log_info("Restoring device for stream %s.", name);
- new_data->sink = s;
- new_data->save_sink = TRUE;
- } else
- pa_log_debug("Not restoring device for stream %s, because already set.", name);
- }
+ if (!s && e->card_valid) {
+ pa_card *card;
+
+ if ((card = pa_namereg_get(c, e->card, PA_NAMEREG_CARD)))
+ s = pa_idxset_first(card->sinks, NULL);
+ }
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (s && PA_SINK_IS_LINKED(pa_sink_get_state(s))) {
+ pa_log_info("Restoring device for stream %s.", name);
+ new_data->sink = s;
+ new_data->save_sink = TRUE;
}
pa_xfree(e);
@@ -455,18 +489,28 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
if (!(name = get_name(new_data->proplist, "source-output")))
return PA_HOOK_OK;
- if ((e = read_entry(u, name))) {
- pa_source *s;
+ if (new_data->source)
+ pa_log_debug("Not restoring device for stream %s, because already set", name);
+ else if ((e = read_entry(u, name))) {
+ pa_source *s = NULL;
- if (e->device_valid) {
- if ((s = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE))) {
- if (!new_data->source) {
- pa_log_info("Restoring device for stream %s.", name);
- new_data->source = s;
- new_data->save_source = TRUE;
- } else
- pa_log_debug("Not restoring device for stream %s, because already set", name);
- }
+ if (e->device_valid)
+ s = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE);
+
+ if (!s && e->card_valid) {
+ pa_card *card;
+
+ if ((card = pa_namereg_get(c, e->card, PA_NAMEREG_CARD)))
+ s = pa_idxset_first(card->sources, NULL);
+ }
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (s && PA_SOURCE_IS_LINKED(pa_source_get_state(s))) {
+ pa_log_info("Restoring device for stream %s.", name);
+ new_data->source = s;
+ new_data->save_source = TRUE;
}
pa_xfree(e);
@@ -496,6 +540,12 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct
if (si->save_sink)
continue;
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(si)))
+ continue;
+
if (!(name = get_name(si->proplist, "sink-input")))
continue;
@@ -534,6 +584,12 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
if (so->direct_on_input)
continue;
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SOURCE_OUTPUT_IS_LINKED(pa_source_output_get_state(so)))
+ continue;
+
if (!(name = get_name(so->proplist, "source-input")))
continue;
@@ -575,7 +631,9 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str
if (e->device_valid) {
pa_sink *d;
- if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) && d != sink)
+ if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SINK)) &&
+ d != sink &&
+ PA_SINK_IS_LINKED(pa_sink_get_state(d)))
pa_sink_input_move_to(si, d, TRUE);
}
@@ -613,7 +671,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
if (e->device_valid) {
pa_source *d;
- if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) && d != source)
+ if ((d = pa_namereg_get(c, e->device, PA_NAMEREG_SOURCE)) &&
+ d != source &&
+ PA_SOURCE_IS_LINKED(pa_source_get_state(d)))
pa_source_output_move_to(so, d, TRUE);
}
commit 0989be13f6b5f71872f381fe2b5a7379702f20bc
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:03:50 2009 +0200
core: introduce pa_{sink_input|source_output}_fail_move()
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 1f67d0f..3a9915f 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -1318,6 +1318,24 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
}
/* Called from main context */
+void pa_sink_input_fail_move(pa_sink_input *i) {
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+ pa_assert(!i->sink);
+
+ /* Check if someone wants this sink input? */
+ if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], i) == PA_HOOK_STOP)
+ return;
+
+ if (i->moving)
+ i->moving(i, NULL);
+
+ pa_sink_input_kill(i);
+}
+
+/* Called from main context */
int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
int r;
@@ -1341,6 +1359,7 @@ int pa_sink_input_move_to(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
}
if ((r = pa_sink_input_finish_move(i, dest, save)) < 0) {
+ pa_sink_input_fail_move(i);
pa_sink_input_unref(i);
return r;
}
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index cd424e8..9088d6a 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -159,7 +159,9 @@ struct pa_sink_input {
/* If non-NULL called whenever the sink input is moved to a new
* sink. Called from main context after the sink input has been
* detached from the old sink and before it has been attached to
- * the new sink. */
+ * the new sink. If dest is NULL the move was executed in two
+ * phases and the second one failed; the stream will be destroyed
+ * after this call. */
void (*moving) (pa_sink_input *i, pa_sink *dest); /* may be NULL */
/* Supposed to unlink and destroy this stream. Called from main
@@ -337,6 +339,7 @@ pa_bool_t pa_sink_input_may_move_to(pa_sink_input *i, pa_sink *dest); /* may thi
* new sink */
int pa_sink_input_start_move(pa_sink_input *i);
int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save);
+void pa_sink_input_fail_move(pa_sink_input *i);
pa_sink_input_state_t pa_sink_input_get_state(pa_sink_input *i);
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index edcf5bd..65c6374 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -649,7 +649,7 @@ void pa_sink_move_all_finish(pa_sink *s, pa_queue *q, pa_bool_t save) {
while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) {
if (pa_sink_input_finish_move(i, s, save) < 0)
- pa_sink_input_kill(i);
+ pa_sink_input_fail_move(i);
pa_sink_input_unref(i);
}
@@ -665,10 +665,8 @@ void pa_sink_move_all_fail(pa_queue *q) {
pa_assert(q);
while ((i = PA_SINK_INPUT(pa_queue_pop(q)))) {
- if (pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], i) == PA_HOOK_OK) {
- pa_sink_input_kill(i);
- pa_sink_input_unref(i);
- }
+ pa_sink_input_fail_move(i);
+ pa_sink_input_unref(i);
}
pa_queue_free(q, NULL, NULL);
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 5d79dbb..8cb361c 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -847,6 +847,24 @@ int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t
}
/* Called from main context */
+void pa_source_output_fail_move(pa_source_output *o) {
+
+ pa_source_output_assert_ref(o);
+ pa_assert_ctl_context();
+ pa_assert(PA_SOURCE_OUTPUT_IS_LINKED(o->state));
+ pa_assert(!o->source);
+
+ /* Check if someone wants this source output? */
+ if (pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], o) == PA_HOOK_STOP)
+ return;
+
+ if (o->moving)
+ o->moving(o, NULL);
+
+ pa_source_output_kill(o);
+}
+
+/* Called from main context */
int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t save) {
int r;
@@ -870,6 +888,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
}
if ((r = pa_source_output_finish_move(o, dest, save)) < 0) {
+ pa_source_output_fail_move(o);
pa_source_output_unref(o);
return r;
}
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 4bf88ca..6e3475a 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -127,7 +127,9 @@ struct pa_source_output {
/* If non-NULL called whenever the source output is moved to a new
* source. Called from main context after the stream was detached
* from the old source and before it is attached to the new
- * source. */
+ * source. If dest is NULL the move was executed in two
+ * phases and the second one failed; the stream will be destroyed
+ * after this call. */
void (*moving) (pa_source_output *o, pa_source *dest); /* may be NULL */
/* Supposed to unlink and destroy this stream. Called from main
@@ -262,6 +264,7 @@ int pa_source_output_move_to(pa_source_output *o, pa_source *dest, pa_bool_t sav
* new source */
int pa_source_output_start_move(pa_source_output *o);
int pa_source_output_finish_move(pa_source_output *o, pa_source *dest, pa_bool_t save);
+void pa_source_output_fail_move(pa_source_output *o);
#define pa_source_output_get_state(o) ((o)->state)
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 97a20b9..5731663 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -574,7 +574,7 @@ void pa_source_move_all_finish(pa_source *s, pa_queue *q, pa_bool_t save) {
while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) {
if (pa_source_output_finish_move(o, s, save) < 0)
- pa_source_output_kill(o);
+ pa_source_output_fail_move(o);
pa_source_output_unref(o);
}
@@ -590,10 +590,8 @@ void pa_source_move_all_fail(pa_queue *q) {
pa_assert(q);
while ((o = PA_SOURCE_OUTPUT(pa_queue_pop(q)))) {
- if (pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], o) == PA_HOOK_OK) {
- pa_source_output_kill(o);
- pa_source_output_unref(o);
- }
+ pa_source_output_fail_move(o);
+ pa_source_output_unref(o);
}
pa_queue_free(q, NULL, NULL);
commit e53d2fc6b57f90d937f2680fa56461d4042de87a
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:05:17 2009 +0200
native: handle moving() callback with NULL destination properly
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 0337220..a612478 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -762,6 +762,7 @@ static int playback_stream_process_msg(pa_msgobject *o, int code, void*userdata,
return -1;
switch (code) {
+
case PLAYBACK_STREAM_MESSAGE_REQUEST_DATA: {
pa_tagstruct *t;
int l = 0;
@@ -1143,7 +1144,6 @@ static void playback_stream_request_bytes(playback_stream *s) {
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_REQUEST_DATA, NULL, 0, NULL, NULL);
}
-
/* Called from main context */
static void playback_stream_send_killed(playback_stream *p) {
pa_tagstruct *t;
@@ -1617,6 +1617,9 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
s = PLAYBACK_STREAM(i->userdata);
playback_stream_assert_ref(s);
+ if (!dest)
+ return;
+
fix_playback_buffer_attr(s);
pa_memblockq_apply_attr(s->memblockq, &s->buffer_attr);
pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
@@ -1752,6 +1755,9 @@ static void source_output_moving_cb(pa_source_output *o, pa_source *dest) {
s = RECORD_STREAM(o->userdata);
record_stream_assert_ref(s);
+ if (!dest)
+ return;
+
fix_record_buffer_attr_pre(s);
pa_memblockq_set_maxlength(s->memblockq, s->buffer_attr.maxlength);
pa_memblockq_get_attr(s->memblockq, &s->buffer_attr);
commit e4db56bf0763abaaa34796f5b0234b3cd2cf4d3c
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:12:53 2009 +0200
core: split of FAIL_ON_SUSPEND into KILL_ON_SUSPEND and NO_CREATE_ON_SUSPEND
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index 9395513..ace5e71 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -482,7 +482,7 @@ char *pa_source_output_list_to_string(pa_core *c) {
s,
" index: %u\n"
"\tdriver: <%s>\n"
- "\tflags: %s%s%s%s%s%s%s%s%s%s\n"
+ "\tflags: %s%s%s%s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tsource: %u <%s>\n"
"\tcurrent latency: %0.2f ms\n"
@@ -501,7 +501,8 @@ char *pa_source_output_list_to_string(pa_core *c) {
o->flags & PA_SOURCE_OUTPUT_FIX_RATE ? "FIX_RATE " : "",
o->flags & PA_SOURCE_OUTPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "",
o->flags & PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "",
- o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
+ o->flags & PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_ON_SUSPEND " : "",
+ o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "",
state_table[pa_source_output_get_state(o)],
o->source->index, o->source->name,
(double) pa_source_output_get_latency(o, NULL) / PA_USEC_PER_MSEC,
@@ -564,7 +565,7 @@ char *pa_sink_input_list_to_string(pa_core *c) {
s,
" index: %u\n"
"\tdriver: <%s>\n"
- "\tflags: %s%s%s%s%s%s%s%s%s%s\n"
+ "\tflags: %s%s%s%s%s%s%s%s%s%s%s\n"
"\tstate: %s\n"
"\tsink: %u <%s>\n"
"\tvolume: %s\n"
@@ -587,7 +588,8 @@ char *pa_sink_input_list_to_string(pa_core *c) {
i->flags & PA_SINK_INPUT_FIX_RATE ? "FIX_RATE " : "",
i->flags & PA_SINK_INPUT_FIX_CHANNELS ? "FIX_CHANNELS " : "",
i->flags & PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND ? "DONT_INHIBIT_AUTO_SUSPEND " : "",
- i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND ? "FAIL_ON_SUSPEND " : "",
+ i->flags & PA_SINK_INPUT_NO_CREATE_ON_SUSPEND ? "NO_CREATE_SUSPEND " : "",
+ i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND ? "KILL_ON_SUSPEND " : "",
state_table[pa_sink_input_get_state(i)],
i->sink->index, i->sink->name,
pa_cvolume_snprint(cv, sizeof(cv), &v),
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index a612478..b6989ae 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -1957,7 +1957,7 @@ static void command_create_playback_stream(pa_pdispatch *pd, uint32_t command, u
(no_move ? PA_SINK_INPUT_DONT_MOVE : 0) |
(variable_rate ? PA_SINK_INPUT_VARIABLE_RATE : 0) |
(dont_inhibit_auto_suspend ? PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
- (fail_on_suspend ? PA_SINK_INPUT_FAIL_ON_SUSPEND : 0);
+ (fail_on_suspend ? PA_SINK_INPUT_NO_CREATE_ON_SUSPEND|PA_SINK_INPUT_KILL_ON_SUSPEND : 0);
/* Only since protocol version 15 there's a seperate muted_set
* flag. For older versions we synthesize it here */
@@ -2213,7 +2213,7 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin
(no_move ? PA_SOURCE_OUTPUT_DONT_MOVE : 0) |
(variable_rate ? PA_SOURCE_OUTPUT_VARIABLE_RATE : 0) |
(dont_inhibit_auto_suspend ? PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND : 0) |
- (fail_on_suspend ? PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND : 0);
+ (fail_on_suspend ? PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND|PA_SOURCE_OUTPUT_KILL_ON_SUSPEND : 0);
s = record_stream_new(c, source, &ss, &map, peak_detect, &attr, flags, p, adjust_latency, direct_on_input, early_requests, &ret);
pa_proplist_free(p);
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 3a9915f..1b3ea92 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -221,7 +221,7 @@ 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) &&
+ if ((flags & PA_SINK_INPUT_NO_CREATE_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;
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index 9088d6a..c1f8082 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -58,7 +58,8 @@ typedef enum pa_sink_input_flags {
PA_SINK_INPUT_FIX_RATE = 64,
PA_SINK_INPUT_FIX_CHANNELS = 128,
PA_SINK_INPUT_DONT_INHIBIT_AUTO_SUSPEND = 256,
- PA_SINK_INPUT_FAIL_ON_SUSPEND = 512
+ PA_SINK_INPUT_NO_CREATE_ON_SUSPEND = 512,
+ PA_SINK_INPUT_KILL_ON_SUSPEND = 1024
} pa_sink_input_flags_t;
struct pa_sink_input {
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 65c6374..90c9d85 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -398,9 +398,9 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
/* We're suspending or resuming, tell everyone about it */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx)))
+ PA_IDXSET_FOREACH(i, s->inputs, idx)
if (s->state == PA_SINK_SUSPENDED &&
- (i->flags & PA_SINK_INPUT_FAIL_ON_SUSPEND))
+ (i->flags & PA_SINK_INPUT_KILL_ON_SUSPEND))
pa_sink_input_kill(i);
else if (i->suspend)
i->suspend(i, state == PA_SINK_SUSPENDED);
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 8cb361c..2b3a0c5 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -167,7 +167,7 @@ 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) &&
+ if ((flags & PA_SOURCE_OUTPUT_NO_CREATE_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;
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index 6e3475a..b78a02b 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -55,7 +55,8 @@ typedef enum pa_source_output_flags {
PA_SOURCE_OUTPUT_FIX_RATE = 64,
PA_SOURCE_OUTPUT_FIX_CHANNELS = 128,
PA_SOURCE_OUTPUT_DONT_INHIBIT_AUTO_SUSPEND = 256,
- PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND = 512
+ PA_SOURCE_OUTPUT_NO_CREATE_ON_SUSPEND = 512,
+ PA_SOURCE_OUTPUT_KILL_ON_SUSPEND = 1024
} pa_source_output_flags_t;
struct pa_source_output {
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 5731663..a44275c 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -336,15 +336,14 @@ static int source_set_state(pa_source *s, pa_source_state_t state) {
/* We're suspending or resuming, tell everyone about it */
- for (o = PA_SOURCE_OUTPUT(pa_idxset_first(s->outputs, &idx)); o; o = PA_SOURCE_OUTPUT(pa_idxset_next(s->outputs, &idx)))
+ PA_IDXSET_FOREACH(o, s->outputs, idx)
if (s->state == PA_SOURCE_SUSPENDED &&
- (o->flags & PA_SOURCE_OUTPUT_FAIL_ON_SUSPEND))
+ (o->flags & PA_SOURCE_OUTPUT_KILL_ON_SUSPEND))
pa_source_output_kill(o);
else if (o->suspend)
o->suspend(o, state == PA_SOURCE_SUSPENDED);
}
-
return 0;
}
commit fd1266c666f62f1c19bff6c1ab3397300e25ffed
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:15:18 2009 +0200
rescure-stream: handle failed moves as well as dying sinks/sources
diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
index c23fece..82f693f 100644
--- a/src/modules/module-rescue-streams.c
+++ b/src/modules/module-rescue-streams.c
@@ -45,13 +45,43 @@ static const char* const valid_modargs[] = {
};
struct userdata {
- pa_hook_slot *sink_slot, *source_slot;
+ pa_hook_slot
+ *sink_unlink_slot,
+ *source_unlink_slot,
+ *sink_input_move_fail_slot,
+ *source_output_move_fail_slot;
};
-static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) {
+static pa_sink* find_evacuation_sink(pa_core *c, pa_sink_input *i, pa_sink *skip) {
+ pa_sink *target, *def;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(i);
+
+ def = pa_namereg_get_default_sink(c);
+
+ if (def && def != skip && pa_sink_input_may_move_to(i, def))
+ return def;
+
+ PA_IDXSET_FOREACH(target, c->sinks, idx) {
+ if (target == def)
+ continue;
+
+ if (target == skip)
+ continue;
+
+ if (pa_sink_input_may_move_to(i, target))
+ return target;
+ }
+
+ pa_log_debug("No evacuation sink found.");
+ return NULL;
+}
+
+static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, void* userdata) {
pa_sink_input *i;
uint32_t idx;
- pa_sink *target;
pa_assert(c);
pa_assert(sink);
@@ -65,21 +95,12 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
return PA_HOOK_OK;
}
- if (!(target = pa_namereg_get_default_sink(c)) || target == sink) {
-
- PA_IDXSET_FOREACH(target, c->sinks, idx)
- if (target != sink)
- break;
-
- if (!target) {
- pa_log_debug("No evacuation sink found.");
- return PA_HOOK_OK;
- }
- }
+ PA_IDXSET_FOREACH(i, sink->inputs, idx) {
+ pa_sink *target;
- pa_assert(target != sink);
+ if (!(target = find_evacuation_sink(c, i, sink)))
+ continue;
- PA_IDXSET_FOREACH(i, sink->inputs, idx) {
if (pa_sink_input_move_to(i, target, FALSE) < 0)
pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index,
pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
@@ -91,9 +112,63 @@ static pa_hook_result_t sink_hook_callback(pa_core *c, pa_sink *sink, void* user
return PA_HOOK_OK;
}
-static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void* userdata) {
+static pa_hook_result_t sink_input_move_fail_hook_callback(pa_core *c, pa_sink_input *i, void *userdata) {
+ pa_sink *target;
+
+ pa_assert(c);
+ pa_assert(i);
+
+ /* There's no point in doing anything if the core is shut down anyway */
+ if (c->state == PA_CORE_SHUTDOWN)
+ return PA_HOOK_OK;
+
+ if (!(target = find_evacuation_sink(c, i, NULL)))
+ return PA_HOOK_OK;
+
+ if (pa_sink_input_finish_move(i, target, FALSE) < 0) {
+ pa_log_info("Failed to move sink input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_OK;
+
+ } else {
+ pa_log_info("Sucessfully moved sink input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_STOP;
+ }
+}
+
+static pa_source* find_evacuation_source(pa_core *c, pa_source_output *o, pa_source *skip) {
+ pa_source *target, *def;
+ uint32_t idx;
+
+ pa_assert(c);
+ pa_assert(o);
+
+ def = pa_namereg_get_default_source(c);
+
+ if (def && def != skip && pa_source_output_may_move_to(o, def))
+ return def;
+
+ PA_IDXSET_FOREACH(target, c->sources, idx) {
+ if (target == def)
+ continue;
+
+ if (target == skip)
+ continue;
+
+ if (!target->monitor_of != !skip->monitor_of)
+ continue;
+
+ if (pa_source_output_may_move_to(o, target))
+ return target;
+ }
+
+ pa_log_debug("No evacuation source found.");
+ return NULL;
+}
+
+static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *source, void* userdata) {
pa_source_output *o;
- pa_source *target;
uint32_t idx;
pa_assert(c);
@@ -108,21 +183,12 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
return PA_HOOK_OK;
}
- if (!(target = pa_namereg_get_default_source(c)) || target == source) {
-
- PA_IDXSET_FOREACH(target, c->sources, idx)
- if (target != source && !target->monitor_of == !source->monitor_of)
- break;
-
- if (!target) {
- pa_log_info("No evacuation source found.");
- return PA_HOOK_OK;
- }
- }
+ PA_IDXSET_FOREACH(o, source->outputs, idx) {
+ pa_source *target;
- pa_assert(target != source);
+ if (!(target = find_evacuation_source(c, o, source)))
+ continue;
- PA_IDXSET_FOREACH(o, source->outputs, idx) {
if (pa_source_output_move_to(o, target, FALSE) < 0)
pa_log_info("Failed to move source output %u \"%s\" to %s.", o->index,
pa_strnull(pa_proplist_gets(o->proplist, PA_PROP_APPLICATION_NAME)), target->name);
@@ -134,6 +200,31 @@ static pa_hook_result_t source_hook_callback(pa_core *c, pa_source *source, void
return PA_HOOK_OK;
}
+static pa_hook_result_t source_output_move_fail_hook_callback(pa_core *c, pa_source_output *i, void *userdata) {
+ pa_source *target;
+
+ pa_assert(c);
+ pa_assert(i);
+
+ /* There's no point in doing anything if the core is shut down anyway */
+ if (c->state == PA_CORE_SHUTDOWN)
+ return PA_HOOK_OK;
+
+ if (!(target = find_evacuation_source(c, i, NULL)))
+ return PA_HOOK_OK;
+
+ if (pa_source_output_finish_move(i, target, FALSE) < 0) {
+ pa_log_info("Failed to move source input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_OK;
+
+ } else {
+ pa_log_info("Sucessfully moved source input %u \"%s\" to %s.", i->index,
+ pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_APPLICATION_NAME)), target->name);
+ return PA_HOOK_STOP;
+ }
+}
+
int pa__init(pa_module*m) {
pa_modargs *ma;
struct userdata *u;
@@ -148,8 +239,11 @@ int pa__init(pa_module*m) {
m->userdata = u = pa_xnew(struct userdata, 1);
/* A little bit later than module-stream-restore, module-intended-roles... */
- u->sink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_hook_callback, u);
- u->source_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) source_hook_callback, u);
+ u->sink_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_unlink_hook_callback, u);
+ u->source_unlink_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_UNLINK], PA_HOOK_LATE+20, (pa_hook_cb_t) source_unlink_hook_callback, u);
+
+ u->sink_input_move_fail_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL], PA_HOOK_LATE+20, (pa_hook_cb_t) sink_input_move_fail_hook_callback, u);
+ u->source_output_move_fail_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_MOVE_FAIL], PA_HOOK_LATE+20, (pa_hook_cb_t) source_output_move_fail_hook_callback, u);
pa_modargs_free(ma);
return 0;
@@ -163,10 +257,15 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
return;
- if (u->sink_slot)
- pa_hook_slot_free(u->sink_slot);
- if (u->source_slot)
- pa_hook_slot_free(u->source_slot);
+ if (u->sink_unlink_slot)
+ pa_hook_slot_free(u->sink_unlink_slot);
+ if (u->source_unlink_slot)
+ pa_hook_slot_free(u->source_unlink_slot);
+
+ if (u->sink_input_move_fail_slot)
+ pa_hook_slot_free(u->sink_input_move_fail_slot);
+ if (u->source_output_move_fail_slot)
+ pa_hook_slot_free(u->source_output_move_fail_slot);
pa_xfree(u);
}
commit 58d441f7ea7994d5a0e8bc5397e2986707eb466b
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:16:25 2009 +0200
log: place more rate limit invocations
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 1c38430..a91b4b8 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1292,7 +1292,8 @@ static void thread_func(void *userdata) {
* we have filled the buffer at least once
* completely.*/
- pa_log_debug("Cutting sleep time for the initial iterations by half.");
+ if (pa_log_ratelimit())
+ pa_log_debug("Cutting sleep time for the initial iterations by half.");
sleep_usec /= 2;
}
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index b6989ae..b578746 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -1345,7 +1345,9 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, int
/* pa_log("sink input post: %lu %lli", (unsigned long) chunk->length, (long long) windex); */
if (pa_memblockq_push_align(s->memblockq, chunk) < 0) {
- pa_log_warn("Failed to push data into queue");
+
+ if (pa_log_ratelimit())
+ pa_log_warn("Failed to push data into queue");
pa_asyncmsgq_post(pa_thread_mq_get()->outq, PA_MSGOBJECT(s), PLAYBACK_STREAM_MESSAGE_OVERFLOW, NULL, 0, NULL, NULL);
pa_memblockq_seek(s->memblockq, (int64_t) chunk->length, PA_SEEK_RELATIVE, TRUE);
}
commit 4eb59fb90e474a81f2d626bc4fc7db083fafed7a
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:26:00 2009 +0200
core: move rtpoll to thread_info sub structure
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 16de689..9271655 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -455,12 +455,12 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_assert(!o->inq_rtpoll_item_read && !o->outq_rtpoll_item_write);
o->inq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
- i->sink->rtpoll,
+ i->sink->thread_info.rtpoll,
PA_RTPOLL_LATE, /* This one is not that important, since we check for data in _peek() anyway. */
o->inq);
o->outq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
- i->sink->rtpoll,
+ i->sink->thread_info.rtpoll,
PA_RTPOLL_EARLY,
o->outq);
}
diff --git a/src/modules/rtp/module-rtp-recv.c b/src/modules/rtp/module-rtp-recv.c
index 5caf827..c195c04 100644
--- a/src/modules/rtp/module-rtp-recv.c
+++ b/src/modules/rtp/module-rtp-recv.c
@@ -361,7 +361,7 @@ static void sink_input_attach(pa_sink_input *i) {
pa_assert_se(s = i->userdata);
pa_assert(!s->rtpoll_item);
- s->rtpoll_item = pa_rtpoll_item_new(i->sink->rtpoll, PA_RTPOLL_LATE, 1);
+ s->rtpoll_item = pa_rtpoll_item_new(i->sink->thread_info.rtpoll, PA_RTPOLL_LATE, 1);
p = pa_rtpoll_item_get_pollfd(s->rtpoll_item, NULL);
p->fd = s->rtp_context.fd;
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 90c9d85..1f9a979 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -262,7 +262,6 @@ pa_sink* pa_sink_new(
s->userdata = NULL;
s->asyncmsgq = NULL;
- s->rtpoll = NULL;
/* As a minor optimization we just steal the list instead of
* copying it here */
@@ -295,6 +294,7 @@ pa_sink* pa_sink_new(
&s->sample_spec,
0);
+ s->thread_info.rtpoll = NULL;
s->thread_info.inputs = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
@@ -421,7 +421,6 @@ void pa_sink_put(pa_sink* s) {
/* The following fields must be initialized properly when calling _put() */
pa_assert(s->asyncmsgq);
- pa_assert(s->rtpoll);
pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency);
/* Generally, flags should be initialized via pa_sink_new(). As a
@@ -563,12 +562,12 @@ void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
pa_source_set_asyncmsgq(s->monitor_source, q);
}
-/* Called from main context */
+/* Called from IO context, or before _put() from main context */
void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
pa_sink_assert_ref(s);
- pa_assert_ctl_context();
+ pa_sink_assert_io_context(s);
- s->rtpoll = p;
+ s->thread_info.rtpoll = p;
if (s->monitor_source)
pa_source_set_rtpoll(s->monitor_source, p);
@@ -1184,7 +1183,7 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
o = PA_MSGOBJECT(s);
- /* We probably should make this a proper vtable callback instead of going through process_msg() */
+ /* FIXME: We probably should make this a proper vtable callback instead of going through process_msg() */
if (o->process_msg(o, PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
return -1;
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 1303396..33145df 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -102,7 +102,6 @@ struct pa_sink {
pa_bool_t save_muted:1;
pa_asyncmsgq *asyncmsgq;
- pa_rtpoll *rtpoll;
pa_memchunk silence;
@@ -156,6 +155,8 @@ struct pa_sink {
pa_sink_state_t state;
pa_hashmap *inputs;
+ pa_rtpoll *rtpoll;
+
pa_cvolume soft_volume;
pa_bool_t soft_muted:1;
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index a44275c..028d679 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -232,7 +232,6 @@ pa_source* pa_source_new(
s->userdata = NULL;
s->asyncmsgq = NULL;
- s->rtpoll = NULL;
/* As a minor optimization we just steal the list instead of
* copying it here */
@@ -265,6 +264,7 @@ pa_source* pa_source_new(
&s->sample_spec,
0);
+ s->thread_info.rtpoll = NULL;
s->thread_info.outputs = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
@@ -356,7 +356,6 @@ void pa_source_put(pa_source *s) {
/* The following fields must be initialized properly when calling _put() */
pa_assert(s->asyncmsgq);
- pa_assert(s->rtpoll);
pa_assert(s->thread_info.min_latency <= s->thread_info.max_latency);
/* Generally, flags should be initialized via pa_source_new(). As
@@ -465,18 +464,18 @@ static void source_free(pa_object *o) {
/* Called from main context */
void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) {
- pa_assert_ctl_context();
pa_source_assert_ref(s);
+ pa_assert_ctl_context();
s->asyncmsgq = q;
}
/* Called from main context */
void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p) {
- pa_assert_ctl_context();
pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
- s->rtpoll = p;
+ s->thread_info.rtpoll = p;
}
/* Called from main context */
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 001122b..6c0a290 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -90,7 +90,6 @@ struct pa_source {
pa_bool_t save_muted:1;
pa_asyncmsgq *asyncmsgq;
- pa_rtpoll *rtpoll;
pa_memchunk silence;
@@ -140,6 +139,8 @@ struct pa_source {
pa_source_state_t state;
pa_hashmap *outputs;
+ pa_rtpoll *rtpoll;
+
pa_cvolume soft_volume;
pa_bool_t soft_muted:1;
commit 350a2bc846559bb274ba70f928bb42a9472050bf
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:48:14 2009 +0200
core: make fixed latency dynamically changeable
This of course makes the name 'fixed' a bit of a misnomer. However the
definitions are now like this:
fixed latency: the latency may change during runtime, but is solely
controlled by the backend, the client has no influence.
dynamic latency: the latency may change during runtime, influenced by
the requests of the clients.
i.e. fixed vs. dynamic is from the perspective of the client.
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index e682997..93b14a1 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -881,7 +881,7 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
*((pa_usec_t*) data) = wi > ri ? wi - ri : 0;
}
- *((pa_usec_t*) data) += u->sink->fixed_latency;
+ *((pa_usec_t*) data) += u->sink->thread_info.fixed_latency;
return 0;
}
}
@@ -943,7 +943,7 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
wi = pa_smoother_get(u->read_smoother, pa_rtclock_now());
ri = pa_bytes_to_usec(u->read_index, &u->sample_spec);
- *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->fixed_latency;
+ *((pa_usec_t*) data) = (wi > ri ? wi - ri : 0) + u->source->thread_info.fixed_latency;
return 0;
}
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index ace5e71..a553099 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -296,7 +296,7 @@ char *pa_sink_list_to_string(pa_core *c) {
pa_strbuf_printf(
s,
"\tfixed latency: %0.2f ms\n",
- (double) pa_sink_get_requested_latency(sink) / PA_USEC_PER_MSEC);
+ (double) pa_sink_get_fixed_latency(sink) / PA_USEC_PER_MSEC);
if (sink->card)
pa_strbuf_printf(s, "\tcard: %u <%s>\n", sink->card->index, sink->card->name);
@@ -415,7 +415,7 @@ char *pa_source_list_to_string(pa_core *c) {
pa_strbuf_printf(
s,
"\tfixed latency: %0.2f ms\n",
- (double) pa_source_get_requested_latency(source) / PA_USEC_PER_MSEC);
+ (double) pa_source_get_fixed_latency(source) / PA_USEC_PER_MSEC);
if (source->monitor_of)
pa_strbuf_printf(s, "\tmonitor_of: %u\n", source->monitor_of->index);
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 1b3ea92..f6d9ac7 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -114,6 +114,7 @@ static void reset_callbacks(pa_sink_input *i) {
i->update_max_request = NULL;
i->update_sink_requested_latency = NULL;
i->update_sink_latency_range = NULL;
+ i->update_sink_fixed_latency = NULL;
i->attach = NULL;
i->detach = NULL;
i->suspend = NULL;
@@ -851,13 +852,13 @@ pa_usec_t pa_sink_input_set_requested_latency_within_thread(pa_sink_input *i, pa
pa_sink_input_assert_io_context(i);
if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
- usec = i->sink->fixed_latency;
+ usec = i->sink->thread_info.fixed_latency;
if (usec != (pa_usec_t) -1)
usec = PA_CLAMP(usec, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
i->thread_info.requested_sink_latency = usec;
- pa_sink_invalidate_requested_latency(i->sink);
+ pa_sink_invalidate_requested_latency(i->sink, TRUE);
return usec;
}
@@ -877,7 +878,7 @@ pa_usec_t pa_sink_input_set_requested_latency(pa_sink_input *i, pa_usec_t usec)
if (i->sink) {
if (!(i->sink->flags & PA_SINK_DYNAMIC_LATENCY))
- usec = i->sink->fixed_latency;
+ usec = pa_sink_get_fixed_latency(i->sink);
if (usec != (pa_usec_t) -1) {
pa_usec_t min_latency, max_latency;
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index c1f8082..c182083 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -138,6 +138,10 @@ struct pa_sink_input {
* from IO context. */
void (*update_sink_latency_range) (pa_sink_input *i); /* may be NULL */
+ /* Called whenver the fixed latency of the sink changes, if there
+ * is one. Called from IO context. */
+ void (*update_sink_fixed_latency) (pa_sink_input *i); /* may be NULL */
+
/* If non-NULL this function is called when the input is first
* connected to a sink or when the rtpoll/asyncmsgq fields
* change. You usually don't need to implement this function
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 1f9a979..fd95f75 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -256,8 +256,6 @@ pa_sink* pa_sink_new(
s->muted = data->muted;
s->refresh_volume = s->refresh_muted = FALSE;
- s->fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
-
reset_callbacks(s);
s->userdata = NULL;
@@ -307,6 +305,7 @@ pa_sink* pa_sink_new(
s->thread_info.requested_latency = 0;
s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY;
s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
+ s->thread_info.fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
pa_assert_se(pa_idxset_put(core->sinks, s, &s->index) >= 0);
@@ -349,6 +348,7 @@ pa_sink* pa_sink_new(
s->monitor_source->monitor_of = s;
pa_source_set_latency_range(s->monitor_source, s->thread_info.min_latency, s->thread_info.max_latency);
+ pa_source_set_fixed_latency(s->monitor_source, s->thread_info.fixed_latency);
pa_source_set_max_rewind(s->monitor_source, s->thread_info.max_rewind);
return s;
@@ -438,11 +438,11 @@ void pa_sink_put(pa_sink* s) {
pa_assert((s->flags & PA_SINK_HW_VOLUME_CTRL) || (s->base_volume == PA_VOLUME_NORM && s->flags & PA_SINK_DECIBEL_VOLUME));
pa_assert(!(s->flags & PA_SINK_DECIBEL_VOLUME) || s->n_volume_steps == PA_VOLUME_NORM+1);
- pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->fixed_latency != 0));
+ pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0));
pa_assert(!(s->flags & PA_SINK_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_LATENCY));
pa_assert(!(s->flags & PA_SINK_DYNAMIC_LATENCY) == !(s->monitor_source->flags & PA_SOURCE_DYNAMIC_LATENCY));
- pa_assert(s->monitor_source->fixed_latency == s->fixed_latency);
+ pa_assert(s->monitor_source->thread_info.fixed_latency == s->thread_info.fixed_latency);
pa_assert(s->monitor_source->thread_info.min_latency == s->thread_info.min_latency);
pa_assert(s->monitor_source->thread_info.max_latency == s->thread_info.max_latency);
@@ -1748,7 +1748,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index)))
pa_sink_input_unref(i);
- pa_sink_invalidate_requested_latency(s);
+ pa_sink_invalidate_requested_latency(s, TRUE);
pa_sink_request_rewind(s, (size_t) -1);
/* In flat volume mode we need to update the volume as
@@ -1794,7 +1794,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index)))
pa_sink_input_unref(i);
- pa_sink_invalidate_requested_latency(s);
+ pa_sink_invalidate_requested_latency(s, TRUE);
pa_log_debug("Requesting rewind due to started move");
pa_sink_request_rewind(s, (size_t) -1);
@@ -1946,6 +1946,16 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
return 0;
}
+ case PA_SINK_MESSAGE_GET_FIXED_LATENCY:
+
+ *((pa_usec_t*) userdata) = s->thread_info.fixed_latency;
+ return 0;
+
+ case PA_SINK_MESSAGE_SET_FIXED_LATENCY:
+
+ pa_sink_set_fixed_latency_within_thread(s, (pa_usec_t) offset);
+ return 0;
+
case PA_SINK_MESSAGE_GET_MAX_REWIND:
*((size_t*) userdata) = s->thread_info.max_rewind;
@@ -2082,13 +2092,12 @@ pa_usec_t pa_sink_get_requested_latency_within_thread(pa_sink *s) {
pa_sink_assert_io_context(s);
if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
- return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
+ return PA_CLAMP(s->thread_info.fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
if (s->thread_info.requested_latency_valid)
return s->thread_info.requested_latency;
- while ((i = pa_hashmap_iterate(s->thread_info.inputs, &state, NULL)))
-
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->thread_info.requested_sink_latency != (pa_usec_t) -1 &&
(result == (pa_usec_t) -1 || result > i->thread_info.requested_sink_latency))
result = i->thread_info.requested_sink_latency;
@@ -2190,18 +2199,18 @@ void pa_sink_set_max_request(pa_sink *s, size_t max_request) {
}
/* Called from IO thread */
-void pa_sink_invalidate_requested_latency(pa_sink *s) {
+void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic) {
pa_sink_input *i;
void *state = NULL;
pa_sink_assert_ref(s);
pa_sink_assert_io_context(s);
- if (!(s->flags & PA_SINK_DYNAMIC_LATENCY))
+ if ((s->flags & PA_SINK_DYNAMIC_LATENCY))
+ s->thread_info.requested_latency_valid = FALSE;
+ else if (dynamic)
return;
- s->thread_info.requested_latency_valid = FALSE;
-
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
if (s->update_requested_latency)
@@ -2295,16 +2304,20 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
i->update_sink_latency_range(i);
}
- pa_sink_invalidate_requested_latency(s);
+ pa_sink_invalidate_requested_latency(s, FALSE);
pa_source_set_latency_range_within_thread(s->monitor_source, min_latency, max_latency);
}
-/* Called from main thread, before the sink is put */
+/* Called from main thread */
void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
pa_sink_assert_ref(s);
pa_assert_ctl_context();
- pa_assert(pa_sink_get_state(s) == PA_SINK_INIT);
+
+ if (s->flags & PA_SINK_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
if (latency < ABSOLUTE_MIN_LATENCY)
latency = ABSOLUTE_MIN_LATENCY;
@@ -2312,10 +2325,64 @@ void pa_sink_set_fixed_latency(pa_sink *s, pa_usec_t latency) {
if (latency > ABSOLUTE_MAX_LATENCY)
latency = ABSOLUTE_MAX_LATENCY;
- s->fixed_latency = latency;
+ if (PA_SINK_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_FIXED_LATENCY, NULL, (int64_t) latency, NULL) == 0);
+ else
+ s->thread_info.fixed_latency = latency;
+
pa_source_set_fixed_latency(s->monitor_source, latency);
}
+/* Called from main thread */
+pa_usec_t pa_sink_get_fixed_latency(pa_sink *s) {
+ pa_usec_t latency;
+
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (s->flags & PA_SINK_DYNAMIC_LATENCY)
+ return 0;
+
+ if (PA_SINK_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_FIXED_LATENCY, &latency, 0, NULL) == 0);
+ else
+ latency = s->thread_info.fixed_latency;
+
+ return latency;
+}
+
+/* Called from IO thread */
+void pa_sink_set_fixed_latency_within_thread(pa_sink *s, pa_usec_t latency) {
+ pa_sink_assert_ref(s);
+ pa_sink_assert_io_context(s);
+
+ if (s->flags & PA_SINK_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
+
+ pa_assert(latency >= ABSOLUTE_MIN_LATENCY);
+ pa_assert(latency <= ABSOLUTE_MAX_LATENCY);
+
+ if (s->thread_info.fixed_latency == latency)
+ return;
+
+ s->thread_info.fixed_latency = latency;
+
+ if (PA_SINK_IS_LINKED(s->thread_info.state)) {
+ pa_sink_input *i;
+ void *state = NULL;
+
+ PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
+ if (i->update_sink_fixed_latency)
+ i->update_sink_fixed_latency(i);
+ }
+
+ pa_sink_invalidate_requested_latency(s, FALSE);
+
+ pa_source_set_fixed_latency_within_thread(s->monitor_source, latency);
+}
+
/* Called from main context */
size_t pa_sink_get_max_rewind(pa_sink *s) {
size_t r;
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 33145df..55bca7f 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -105,8 +105,6 @@ struct pa_sink {
pa_memchunk silence;
- pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */
-
pa_hashmap *ports;
pa_device_port *active_port;
@@ -160,6 +158,9 @@ struct pa_sink {
pa_cvolume soft_volume;
pa_bool_t soft_muted:1;
+ /* The requested latency is used for dynamic latency
+ * sinks. For fixed latency sinks it is always identical to
+ * the fixed_latency. See below. */
pa_bool_t requested_latency_valid:1;
pa_usec_t requested_latency;
@@ -175,8 +176,15 @@ struct pa_sink {
size_t rewind_nbytes;
pa_bool_t rewind_requested;
+ /* Both dynamic and fixed latencies will be clamped to this
+ * range. */
pa_usec_t min_latency; /* we won't go below this latency */
pa_usec_t max_latency; /* An upper limit for the latencies */
+
+ /* 'Fixed' simply means that the latency is exclusively
+ * decided on by the sink, and the clients have no influence
+ * in changing it */
+ pa_usec_t fixed_latency; /* for sinks with PA_SINK_DYNAMIC_LATENCY this is 0 */
} thread_info;
void *userdata;
@@ -202,6 +210,8 @@ typedef enum pa_sink_message {
PA_SINK_MESSAGE_DETACH,
PA_SINK_MESSAGE_SET_LATENCY_RANGE,
PA_SINK_MESSAGE_GET_LATENCY_RANGE,
+ PA_SINK_MESSAGE_SET_FIXED_LATENCY,
+ PA_SINK_MESSAGE_GET_FIXED_LATENCY,
PA_SINK_MESSAGE_GET_MAX_REWIND,
PA_SINK_MESSAGE_GET_MAX_REQUEST,
PA_SINK_MESSAGE_SET_MAX_REWIND,
@@ -282,6 +292,7 @@ pa_bool_t pa_device_init_intended_roles(pa_proplist *p);
pa_usec_t pa_sink_get_latency(pa_sink *s);
pa_usec_t pa_sink_get_requested_latency(pa_sink *s);
void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *max_latency);
+pa_usec_t pa_sink_get_fixed_latency(pa_sink *s);
size_t pa_sink_get_max_rewind(pa_sink *s);
size_t pa_sink_get_max_request(pa_sink *s);
@@ -333,12 +344,13 @@ void pa_sink_set_max_rewind_within_thread(pa_sink *s, size_t max_rewind);
void pa_sink_set_max_request_within_thread(pa_sink *s, size_t max_request);
void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_sink_set_fixed_latency_within_thread(pa_sink *s, pa_usec_t latency);
/*** To be called exclusively by sink input drivers, from IO context */
void pa_sink_request_rewind(pa_sink*s, size_t nbytes);
-void pa_sink_invalidate_requested_latency(pa_sink *s);
+void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic);
pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s);
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 2b3a0c5..3803a6c 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -84,6 +84,7 @@ static void reset_callbacks(pa_source_output *o) {
o->update_max_rewind = NULL;
o->update_source_requested_latency = NULL;
o->update_source_latency_range = NULL;
+ o->update_source_fixed_latency = NULL;
o->attach = NULL;
o->detach = NULL;
o->suspend = NULL;
@@ -561,13 +562,13 @@ pa_usec_t pa_source_output_set_requested_latency_within_thread(pa_source_output
pa_source_output_assert_io_context(o);
if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
- usec = o->source->fixed_latency;
+ usec = o->source->thread_info.fixed_latency;
if (usec != (pa_usec_t) -1)
usec = PA_CLAMP(usec, o->source->thread_info.min_latency, o->source->thread_info.max_latency);
o->thread_info.requested_source_latency = usec;
- pa_source_invalidate_requested_latency(o->source);
+ pa_source_invalidate_requested_latency(o->source, TRUE);
return usec;
}
@@ -587,7 +588,7 @@ pa_usec_t pa_source_output_set_requested_latency(pa_source_output *o, pa_usec_t
if (o->source) {
if (!(o->source->flags & PA_SOURCE_DYNAMIC_LATENCY))
- usec = o->source->fixed_latency;
+ usec = pa_source_get_fixed_latency(o->source);
if (usec != (pa_usec_t) -1) {
pa_usec_t min_latency, max_latency;
diff --git a/src/pulsecore/source-output.h b/src/pulsecore/source-output.h
index b78a02b..a70a3fd 100644
--- a/src/pulsecore/source-output.h
+++ b/src/pulsecore/source-output.h
@@ -109,6 +109,10 @@ struct pa_source_output {
* from IO context. */
void (*update_source_latency_range) (pa_source_output *o); /* may be NULL */
+ /* Called whenver the fixed latency of the source changes, if there
+ * is one. Called from IO context. */
+ void (*update_source_fixed_latency) (pa_source_output *i); /* may be NULL */
+
/* If non-NULL this function is called when the output is first
* connected to a source. Called from IO thread context */
void (*attach) (pa_source_output *o); /* may be NULL */
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 028d679..8970d8e 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -226,8 +226,6 @@ pa_source* pa_source_new(
s->muted = data->muted;
s->refresh_volume = s->refresh_muted = FALSE;
- s->fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
-
reset_callbacks(s);
s->userdata = NULL;
@@ -274,6 +272,7 @@ pa_source* pa_source_new(
s->thread_info.requested_latency = 0;
s->thread_info.min_latency = ABSOLUTE_MIN_LATENCY;
s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
+ s->thread_info.fixed_latency = flags & PA_SOURCE_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
pa_assert_se(pa_idxset_put(core->sources, s, &s->index) >= 0);
@@ -370,7 +369,7 @@ void pa_source_put(pa_source *s) {
pa_assert((s->flags & PA_SOURCE_HW_VOLUME_CTRL) || (s->base_volume == PA_VOLUME_NORM && s->flags & PA_SOURCE_DECIBEL_VOLUME));
pa_assert(!(s->flags & PA_SOURCE_DECIBEL_VOLUME) || s->n_volume_steps == PA_VOLUME_NORM+1);
- pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->fixed_latency != 0));
+ pa_assert(!(s->flags & PA_SOURCE_DYNAMIC_LATENCY) == (s->thread_info.fixed_latency != 0));
pa_assert_se(source_set_state(s, PA_SOURCE_IDLE) == 0);
@@ -1037,7 +1036,7 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
if (pa_hashmap_remove(s->thread_info.outputs, PA_UINT32_TO_PTR(o->index)))
pa_source_output_unref(o);
- pa_source_invalidate_requested_latency(s);
+ pa_source_invalidate_requested_latency(s, TRUE);
return 0;
}
@@ -1117,6 +1116,16 @@ int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, int64_
return 0;
}
+ case PA_SOURCE_MESSAGE_GET_FIXED_LATENCY:
+
+ *((pa_usec_t*) userdata) = s->thread_info.fixed_latency;
+ return 0;
+
+ case PA_SOURCE_MESSAGE_SET_FIXED_LATENCY:
+
+ pa_source_set_fixed_latency_within_thread(s, (pa_usec_t) offset);
+ return 0;
+
case PA_SOURCE_MESSAGE_GET_MAX_REWIND:
*((size_t*) userdata) = s->thread_info.max_rewind;
@@ -1223,13 +1232,12 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s) {
pa_source_assert_io_context(s);
if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
- return PA_CLAMP(s->fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
+ return PA_CLAMP(s->thread_info.fixed_latency, s->thread_info.min_latency, s->thread_info.max_latency);
if (s->thread_info.requested_latency_valid)
return s->thread_info.requested_latency;
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
-
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->thread_info.requested_source_latency != (pa_usec_t) -1 &&
(result == (pa_usec_t) -1 || result > o->thread_info.requested_source_latency))
result = o->thread_info.requested_source_latency;
@@ -1292,18 +1300,18 @@ void pa_source_set_max_rewind(pa_source *s, size_t max_rewind) {
}
/* Called from IO thread */
-void pa_source_invalidate_requested_latency(pa_source *s) {
+void pa_source_invalidate_requested_latency(pa_source *s, pa_bool_t dynamic) {
pa_source_output *o;
void *state = NULL;
pa_source_assert_ref(s);
pa_source_assert_io_context(s);
- if (!(s->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ if ((s->flags & PA_SOURCE_DYNAMIC_LATENCY))
+ s->thread_info.requested_latency_valid = FALSE;
+ else if (dynamic)
return;
- s->thread_info.requested_latency_valid = FALSE;
-
if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
if (s->update_requested_latency)
@@ -1315,7 +1323,7 @@ void pa_source_invalidate_requested_latency(pa_source *s) {
}
if (s->monitor_of)
- pa_sink_invalidate_requested_latency(s->monitor_of);
+ pa_sink_invalidate_requested_latency(s->monitor_of, dynamic);
}
/* Called from main thread */
@@ -1375,8 +1383,6 @@ void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t
/* Called from IO thread, and from main thread before pa_source_put() is called */
void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency) {
- void *state = NULL;
-
pa_source_assert_ref(s);
pa_source_assert_io_context(s);
@@ -1390,18 +1396,23 @@ void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_laten
(s->flags & PA_SOURCE_DYNAMIC_LATENCY) ||
s->monitor_of);
+ if (s->thread_info.min_latency == min_latency &&
+ s->thread_info.max_latency == max_latency)
+ return;
+
s->thread_info.min_latency = min_latency;
s->thread_info.max_latency = max_latency;
if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
pa_source_output *o;
+ void *state = NULL;
- while ((o = pa_hashmap_iterate(s->thread_info.outputs, &state, NULL)))
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
if (o->update_source_latency_range)
o->update_source_latency_range(o);
}
- pa_source_invalidate_requested_latency(s);
+ pa_source_invalidate_requested_latency(s, FALSE);
}
/* Called from main thread, before the source is put */
@@ -1409,7 +1420,10 @@ void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
pa_source_assert_ref(s);
pa_assert_ctl_context();
- pa_assert(pa_source_get_state(s) == PA_SOURCE_INIT);
+ if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
if (latency < ABSOLUTE_MIN_LATENCY)
latency = ABSOLUTE_MIN_LATENCY;
@@ -1417,7 +1431,58 @@ void pa_source_set_fixed_latency(pa_source *s, pa_usec_t latency) {
if (latency > ABSOLUTE_MAX_LATENCY)
latency = ABSOLUTE_MAX_LATENCY;
- s->fixed_latency = latency;
+ if (PA_SOURCE_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_FIXED_LATENCY, NULL, (int64_t) latency, NULL) == 0);
+ else
+ s->thread_info.fixed_latency = latency;
+}
+
+/* Called from main thread */
+pa_usec_t pa_source_get_fixed_latency(pa_source *s) {
+ pa_usec_t latency;
+
+ pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (s->flags & PA_SOURCE_DYNAMIC_LATENCY)
+ return 0;
+
+ if (PA_SOURCE_IS_LINKED(s->state))
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_FIXED_LATENCY, &latency, 0, NULL) == 0);
+ else
+ latency = s->thread_info.fixed_latency;
+
+ return latency;
+}
+
+/* Called from IO thread */
+void pa_source_set_fixed_latency_within_thread(pa_source *s, pa_usec_t latency) {
+ pa_source_assert_ref(s);
+ pa_source_assert_io_context(s);
+
+ if (s->flags & PA_SOURCE_DYNAMIC_LATENCY) {
+ pa_assert(latency == 0);
+ return;
+ }
+
+ pa_assert(latency >= ABSOLUTE_MIN_LATENCY);
+ pa_assert(latency <= ABSOLUTE_MAX_LATENCY);
+
+ if (s->thread_info.fixed_latency == latency)
+ return;
+
+ s->thread_info.fixed_latency = latency;
+
+ if (PA_SOURCE_IS_LINKED(s->thread_info.state)) {
+ pa_source_output *o;
+ void *state = NULL;
+
+ PA_HASHMAP_FOREACH(o, s->thread_info.outputs, state)
+ if (o->update_source_fixed_latency)
+ o->update_source_fixed_latency(o);
+ }
+
+ pa_source_invalidate_requested_latency(s, FALSE);
}
/* Called from main thread */
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 6c0a290..bb085a0 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -93,8 +93,6 @@ struct pa_source {
pa_memchunk silence;
- pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */
-
pa_hashmap *ports;
pa_device_port *active_port;
@@ -153,7 +151,9 @@ struct pa_source {
pa_usec_t min_latency; /* we won't go below this latency */
pa_usec_t max_latency; /* An upper limit for the latencies */
- } thread_info;
+
+ pa_usec_t fixed_latency; /* for sources with PA_SOURCE_DYNAMIC_LATENCY this is 0 */
+ } thread_info;
void *userdata;
};
@@ -175,6 +175,8 @@ typedef enum pa_source_message {
PA_SOURCE_MESSAGE_DETACH,
PA_SOURCE_MESSAGE_SET_LATENCY_RANGE,
PA_SOURCE_MESSAGE_GET_LATENCY_RANGE,
+ PA_SOURCE_MESSAGE_SET_FIXED_LATENCY,
+ PA_SOURCE_MESSAGE_GET_FIXED_LATENCY,
PA_SOURCE_MESSAGE_GET_MAX_REWIND,
PA_SOURCE_MESSAGE_SET_MAX_REWIND,
PA_SOURCE_MESSAGE_MAX
@@ -250,6 +252,7 @@ int pa_source_sync_suspend(pa_source *s);
pa_usec_t pa_source_get_latency(pa_source *s);
pa_usec_t pa_source_get_requested_latency(pa_source *s);
void pa_source_get_latency_range(pa_source *s, pa_usec_t *min_latency, pa_usec_t *max_latency);
+pa_usec_t pa_source_get_fixed_latency(pa_source *s);
size_t pa_source_get_max_rewind(pa_source *s);
@@ -259,6 +262,7 @@ int pa_source_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t caus
void pa_source_set_volume(pa_source *source, const pa_cvolume *volume, pa_bool_t save);
const pa_cvolume *pa_source_get_volume(pa_source *source, pa_bool_t force_refresh);
+
void pa_source_set_mute(pa_source *source, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_source_get_mute(pa_source *source, pa_bool_t force_refresh);
@@ -290,11 +294,13 @@ void pa_source_detach_within_thread(pa_source *s);
pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s);
void pa_source_set_max_rewind_within_thread(pa_source *s, size_t max_rewind);
+
void pa_source_set_latency_range_within_thread(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
+void pa_source_set_fixed_latency_within_thread(pa_source *s, pa_usec_t latency);
/*** To be called exclusively by source output drivers, from IO context */
-void pa_source_invalidate_requested_latency(pa_source *s);
+void pa_source_invalidate_requested_latency(pa_source *s, pa_bool_t dynamic);
pa_usec_t pa_source_get_latency_within_thread(pa_source *s);
#define pa_source_assert_io_context(s) \
commit 3f9c67a7fb959acd35228f1e7455baf2aacc793b
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:52:50 2009 +0200
core: call pa_sink_get_latency_within_thread() instead of going directly via process_msg()
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index fd95f75..e826889 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1770,10 +1770,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
size_t sink_nbytes, total_nbytes;
/* Get the latency of the sink */
- if (!(s->flags & PA_SINK_LATENCY) ||
- PA_MSGOBJECT(s)->process_msg(PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
-
+ usec = pa_sink_get_latency_within_thread(s);
sink_nbytes = pa_usec_to_bytes(usec, &s->sample_spec);
total_nbytes = sink_nbytes + pa_memblockq_get_length(i->thread_info.render_memblockq);
@@ -1832,10 +1829,7 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
size_t nbytes;
/* Get the latency of the sink */
- if (!(s->flags & PA_SINK_LATENCY) ||
- PA_MSGOBJECT(s)->process_msg(PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
-
+ usec = pa_sink_get_latency_within_thread(s);
nbytes = pa_usec_to_bytes(usec, &s->sample_spec);
if (nbytes > 0)
commit c6080d8c61df4991b96f4f144e58848f6c440440
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:54:02 2009 +0200
core: don't update latency range if not changed
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index e826889..77908c9 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -2273,8 +2273,6 @@ void pa_sink_get_latency_range(pa_sink *s, pa_usec_t *min_latency, pa_usec_t *ma
/* Called from IO thread */
void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency) {
- void *state = NULL;
-
pa_sink_assert_ref(s);
pa_sink_assert_io_context(s);
@@ -2287,11 +2285,16 @@ void pa_sink_set_latency_range_within_thread(pa_sink *s, pa_usec_t min_latency,
max_latency == ABSOLUTE_MAX_LATENCY) ||
(s->flags & PA_SINK_DYNAMIC_LATENCY));
+ if (s->thread_info.min_latency == min_latency &&
+ s->thread_info.max_latency == max_latency)
+ return;
+
s->thread_info.min_latency = min_latency;
s->thread_info.max_latency = max_latency;
if (PA_SINK_IS_LINKED(s->thread_info.state)) {
pa_sink_input *i;
+ void *state = NULL;
PA_HASHMAP_FOREACH(i, s->thread_info.inputs, state)
if (i->update_sink_latency_range)
commit 3c271ae0605fcf1b6ca9ddfb21bda54a783e9926
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:54:25 2009 +0200
core: document difference between IO and main thread view on requested latency
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 77908c9..c1589f2 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -1917,6 +1917,9 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse
pa_usec_t *usec = userdata;
*usec = pa_sink_get_requested_latency_within_thread(s);
+ /* Yes, that's right, the IO thread will see -1 when no
+ * explicit requested latency is configured, the main
+ * thread will see max_latency */
if (*usec == (pa_usec_t) -1)
*usec = s->thread_info.max_latency;
commit d7d86e32ddea61e93e39f55a9f7e91b8d696dfab
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:54:51 2009 +0200
native-protocol: downgrade volume change log messages
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index b578746..280707e 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -1131,6 +1131,12 @@ static void playback_stream_request_bytes(playback_stream *s) {
m = pa_memblockq_pop_missing(s->memblockq);
+ /* pa_log("request_bytes(%lu) (tlength=%lu minreq=%lu length=%lu)", */
+ /* (unsigned long) m, */
+ /* pa_memblockq_get_tlength(s->memblockq), */
+ /* pa_memblockq_get_minreq(s->memblockq), */
+ /* pa_memblockq_get_length(s->memblockq)); */
+
if (m <= 0)
return;
@@ -3381,13 +3387,13 @@ static void command_set_volume(
client_name = pa_strnull(pa_proplist_gets(c->client->proplist, PA_PROP_APPLICATION_PROCESS_BINARY));
if (sink) {
- pa_log("Client %s changes volume of sink %s.", client_name, sink->name);
+ pa_log_debug("Client %s changes volume of sink %s.", client_name, sink->name);
pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE, TRUE);
} else if (source) {
- pa_log("Client %s changes volume of sink %s.", client_name, source->name);
+ pa_log_debug("Client %s changes volume of sink %s.", client_name, source->name);
pa_source_set_volume(source, &volume, TRUE);
} else if (si) {
- pa_log("Client %s changes volume of sink %s.",
+ pa_log_debug("Client %s changes volume of sink %s.",
client_name,
pa_strnull(pa_proplist_gets(si->proplist, PA_PROP_MEDIA_NAME)));
pa_sink_input_set_volume(si, &volume, TRUE, TRUE);
commit d9e4605e09e01cc64e3d37452ea0b5c2783a0085
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:55:31 2009 +0200
hook-list: make use of PA_LLIST_FOREACH
diff --git a/src/pulsecore/hook-list.c b/src/pulsecore/hook-list.c
index a00116d..d9b9917 100644
--- a/src/pulsecore/hook-list.c
+++ b/src/pulsecore/hook-list.c
@@ -97,7 +97,7 @@ pa_hook_result_t pa_hook_fire(pa_hook *hook, void *data) {
hook->n_firing ++;
- for (slot = hook->slots; slot; slot = slot->next) {
+ PA_LLIST_FOREACH(slot, hook->slots) {
if (slot->dead)
continue;
commit fb5205daac937e98736db1448fe7c8d84f3e78c4
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:57:36 2009 +0200
remap: unify argument order with other modules
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 0b7b9b8..45f4e2a 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -1,7 +1,7 @@
/***
This file is part of PulseAudio.
- Copyright 2004-2008 Lennart Poettering
+ Copyright 2004-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
@@ -48,8 +48,8 @@ PA_MODULE_USAGE(
"master=<name of sink to remap> "
"master_channel_map=<channel map> "
"format=<sample format> "
- "channels=<number of channels> "
"rate=<sample rate> "
+ "channels=<number of channels> "
"channel_map=<channel map> "
"remix=<remix channels?>");
commit c44f518eb9d36fd73ada6d49d51bbb6de389e7b7
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:58:19 2009 +0200
ladspa: move LADSPA_Data size check to compile time
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index b26330c..2433499 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -395,7 +395,7 @@ int pa__init(pa_module*m) {
pa_assert(m);
- pa_assert(sizeof(LADSPA_Data) == sizeof(float));
+ pa_assert_cc(sizeof(LADSPA_Data) == sizeof(float));
if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
pa_log("Failed to parse module arguments.");
commit 1b3848ebd768632f8ca8baedeb53feaf381847c4
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 00:59:26 2009 +0200
module-remap: allow moving of sink, forward fixed latency
This is a bigger change reworking a number of things:
- We now allow moving of the remap sink betwween backend sinks like any
other stream.
- We forward the fixed latency parameter of the underlying sinks the
same way as the dynamic latency.
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 45f4e2a..7b4c9bb 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -54,10 +54,9 @@ PA_MODULE_USAGE(
"remix=<remix channels?>");
struct userdata {
- pa_core *core;
pa_module *module;
- pa_sink *sink, *master;
+ pa_sink *sink;
pa_sink_input *sink_input;
};
@@ -80,19 +79,24 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
switch (code) {
- case PA_SINK_MESSAGE_GET_LATENCY: {
- pa_usec_t usec = 0;
+ case PA_SINK_MESSAGE_GET_LATENCY:
- /* Get the latency of the master sink */
- if (PA_MSGOBJECT(u->master)->process_msg(PA_MSGOBJECT(u->master), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
+ /* The sink is _put() before the sink input is, so let's
+ * make sure we don't access it yet */
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) {
+ *((pa_usec_t*) data) = 0;
+ return 0;
+ }
- /* Add the latency internal to our sink input on top */
- usec += pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->master->sample_spec);
+ *((pa_usec_t*) data) =
+ /* Get the latency of the master sink */
+ pa_sink_get_latency_within_thread(u->sink_input->sink) +
+
+ /* Add the latency internal to our sink input on top */
+ pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec);
- *((pa_usec_t*) data) = usec;
return 0;
- }
}
return pa_sink_process_msg(o, code, data, offset, chunk);
@@ -105,12 +109,11 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
- if (PA_SINK_IS_LINKED(state) &&
- u->sink_input &&
- PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
-
- pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
+ if (!PA_SINK_IS_LINKED(state) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return 0;
+ pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
return 0;
}
@@ -121,6 +124,10 @@ static void sink_request_rewind(pa_sink *s) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes, TRUE, FALSE, FALSE);
}
@@ -131,6 +138,10 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
/* Just hand this one over to the master sink */
pa_sink_input_set_requested_latency_within_thread(
u->sink_input,
@@ -145,9 +156,6 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
pa_assert(chunk);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return -1;
-
/* Hmm, process any rewind request that might be queued up */
pa_sink_process_rewind(u->sink, 0);
@@ -163,9 +171,6 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return;
-
if (u->sink->thread_info.rewind_nbytes > 0) {
amount = PA_MIN(u->sink->thread_info.rewind_nbytes, nbytes);
u->sink->thread_info.rewind_nbytes = 0;
@@ -181,9 +186,6 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
}
@@ -194,9 +196,6 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_max_request_within_thread(u->sink, nbytes);
}
@@ -207,24 +206,28 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
}
/* Called from I/O thread context */
-static void sink_input_detach_cb(pa_sink_input *i) {
+static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) {
struct userdata *u;
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+}
+
+/* Called from I/O thread context */
+static void sink_input_detach_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
pa_sink_detach_within_thread(u->sink);
- pa_sink_set_asyncmsgq(u->sink, NULL);
+
pa_sink_set_rtpoll(u->sink, NULL);
}
@@ -235,14 +238,13 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll);
+ pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+ pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i));
+ pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i));
- pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, i->sink->rtpoll);
pa_sink_attach_within_thread(u->sink);
-
- pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
}
/* Called from main context */
@@ -252,14 +254,18 @@ static void sink_input_kill_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- pa_sink_unlink(u->sink);
+ /* The order here matters! We first kill the sink input, followed
+ * by the sink. That means the sink callbacks must be protected
+ * against an unconnected sink input! */
pa_sink_input_unlink(u->sink_input);
+ pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- u->sink = NULL;
pa_sink_input_unref(u->sink_input);
u->sink_input = NULL;
+ pa_sink_unref(u->sink);
+ u->sink = NULL;
+
pa_module_unload_request(u->module, TRUE);
}
@@ -289,6 +295,16 @@ static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) {
return u->sink != dest;
}
+/* Called from main context */
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+}
+
int pa__init(pa_module*m) {
struct userdata *u;
pa_sample_spec ss;
@@ -339,12 +355,8 @@ int pa__init(pa_module*m) {
}
u = pa_xnew0(struct userdata, 1);
- u->core = m->core;
u->module = m;
m->userdata = u;
- u->master = master;
- u->sink = NULL;
- u->sink_input = NULL;
/* Create sink */
pa_sink_new_data_init(&sink_data);
@@ -365,7 +377,7 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
+ u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
@@ -380,19 +392,18 @@ int pa__init(pa_module*m) {
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, master->rtpoll);
/* Create sink input */
pa_sink_input_new_data_init(&sink_input_data);
sink_input_data.driver = __FILE__;
sink_input_data.module = m;
- sink_input_data.sink = u->master;
+ sink_input_data.sink = master;
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "Remapped Stream");
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
pa_sink_input_new_data_set_channel_map(&sink_input_data, &stream_map);
- pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, PA_SINK_INPUT_DONT_MOVE | (remix ? 0 : PA_SINK_INPUT_NO_REMIX));
+ pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, (remix ? 0 : PA_SINK_INPUT_NO_REMIX));
pa_sink_input_new_data_done(&sink_input_data);
if (!u->sink_input)
@@ -403,11 +414,13 @@ int pa__init(pa_module*m) {
u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
u->sink_input->update_max_request = sink_input_update_max_request_cb;
u->sink_input->update_sink_latency_range = sink_input_update_sink_latency_range_cb;
+ u->sink_input->update_sink_fixed_latency = sink_input_update_sink_fixed_latency_cb;
u->sink_input->attach = sink_input_attach_cb;
u->sink_input->detach = sink_input_detach_cb;
u->sink_input->kill = sink_input_kill_cb;
u->sink_input->state_change = sink_input_state_change_cb;
u->sink_input->may_move_to = sink_input_may_move_to_cb;
+ u->sink_input->moving = sink_input_moving_cb;
u->sink_input->userdata = u;
pa_sink_put(u->sink);
@@ -443,15 +456,20 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
return;
- if (u->sink) {
- pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- }
+ /* See comments in sink_input_kill_cb() above regarding
+ * destruction order! */
- if (u->sink_input) {
+ if (u->sink_input)
pa_sink_input_unlink(u->sink_input);
+
+ if (u->sink)
+ pa_sink_unlink(u->sink);
+
+ if (u->sink_input)
pa_sink_input_unref(u->sink_input);
- }
+
+ if (u->sink)
+ pa_sink_unref(u->sink);
pa_xfree(u);
}
commit 763866280adf3bd50463b0e316af7a7c4fa5aaf9
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 01:01:52 2009 +0200
module-ladspa: allow moving of sink, forward fixed latency
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 2433499..e838be3 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -64,10 +64,9 @@ PA_MODULE_USAGE(
#define MEMBLOCKQ_MAXLENGTH (16*1024*1024)
struct userdata {
- pa_core *core;
pa_module *module;
- pa_sink *sink, *master;
+ pa_sink *sink;
pa_sink_input *sink_input;
const LADSPA_Descriptor *descriptor;
@@ -105,19 +104,26 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
switch (code) {
- case PA_SINK_MESSAGE_GET_LATENCY: {
- pa_usec_t usec = 0;
+ case PA_SINK_MESSAGE_GET_LATENCY:
- /* Get the latency of the master sink */
- if (PA_MSGOBJECT(u->master)->process_msg(PA_MSGOBJECT(u->master), PA_SINK_MESSAGE_GET_LATENCY, &usec, 0, NULL) < 0)
- usec = 0;
+ /* The sink is _put() before the sink input is, so let's
+ * make sure we don't access it in that time. Also, the
+ * sink input is first shut down, the sink second. */
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state)) {
+ *((pa_usec_t*) data) = 0;
+ return 0;
+ }
+
+ *((pa_usec_t*) data) =
- /* Add the latency internal to our sink input on top */
- usec += pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->master->sample_spec);
+ /* Get the latency of the master sink */
+ pa_sink_get_latency_within_thread(u->sink_input->sink) +
+
+ /* Add the latency internal to our sink input on top */
+ pa_bytes_to_usec(pa_memblockq_get_length(u->sink_input->thread_info.render_memblockq), &u->sink_input->sink->sample_spec);
- *((pa_usec_t*) data) = usec;
return 0;
- }
}
return pa_sink_process_msg(o, code, data, offset, chunk);
@@ -130,12 +136,11 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
- if (PA_SINK_IS_LINKED(state) &&
- u->sink_input &&
- PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
-
- pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
+ if (!PA_SINK_IS_LINKED(state) ||
+ !PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(u->sink_input)))
+ return 0;
+ pa_sink_input_cork(u->sink_input, state == PA_SINK_SUSPENDED);
return 0;
}
@@ -146,6 +151,10 @@ static void sink_request_rewind(pa_sink *s) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
/* Just hand this one over to the master sink */
pa_sink_input_request_rewind(u->sink_input, s->thread_info.rewind_nbytes + pa_memblockq_get_length(u->memblockq), TRUE, FALSE, FALSE);
}
@@ -157,6 +166,10 @@ static void sink_update_requested_latency(pa_sink *s) {
pa_sink_assert_ref(s);
pa_assert_se(u = s->userdata);
+ if (!PA_SINK_IS_LINKED(u->sink->thread_info.state) ||
+ !PA_SINK_INPUT_IS_LINKED(u->sink_input->thread_info.state))
+ return;
+
/* Just hand this one over to the master sink */
pa_sink_input_set_requested_latency_within_thread(
u->sink_input,
@@ -175,9 +188,6 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
pa_assert(chunk);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return -1;
-
/* Hmm, process any rewind request that might be queued up */
pa_sink_process_rewind(u->sink, 0);
@@ -228,9 +238,6 @@ static void sink_input_process_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
- return;
-
if (u->sink->thread_info.rewind_nbytes > 0) {
size_t max_rewrite;
@@ -266,9 +273,6 @@ static void sink_input_update_max_rewind_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_memblockq_set_maxrewind(u->memblockq, nbytes);
pa_sink_set_max_rewind_within_thread(u->sink, nbytes);
}
@@ -280,9 +284,6 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_max_request_within_thread(u->sink, nbytes);
}
@@ -293,24 +294,28 @@ static void sink_input_update_sink_latency_range_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
-
pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
}
/* Called from I/O thread context */
-static void sink_input_detach_cb(pa_sink_input *i) {
+static void sink_input_update_sink_fixed_latency_cb(pa_sink_input *i) {
struct userdata *u;
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+}
+
+/* Called from I/O thread context */
+static void sink_input_detach_cb(pa_sink_input *i) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
pa_sink_detach_within_thread(u->sink);
- pa_sink_set_asyncmsgq(u->sink, NULL);
+
pa_sink_set_rtpoll(u->sink, NULL);
}
@@ -321,14 +326,13 @@ static void sink_input_attach_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- if (!u->sink || !PA_SINK_IS_LINKED(u->sink->thread_info.state))
- return;
+ pa_sink_set_rtpoll(u->sink, i->sink->thread_info.rtpoll);
+ pa_sink_set_latency_range_within_thread(u->sink, i->sink->thread_info.min_latency, i->sink->thread_info.max_latency);
+ pa_sink_set_fixed_latency_within_thread(u->sink, i->sink->thread_info.fixed_latency);
+ pa_sink_set_max_request_within_thread(u->sink, pa_sink_input_get_max_request(i));
+ pa_sink_set_max_rewind_within_thread(u->sink, pa_sink_input_get_max_rewind(i));
- pa_sink_set_asyncmsgq(u->sink, i->sink->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, i->sink->rtpoll);
pa_sink_attach_within_thread(u->sink);
-
- pa_sink_set_latency_range_within_thread(u->sink, u->master->thread_info.min_latency, u->master->thread_info.max_latency);
}
/* Called from main context */
@@ -338,14 +342,18 @@ static void sink_input_kill_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(u = i->userdata);
- pa_sink_unlink(u->sink);
+ /* The order here matters! We first kill the sink input, followed
+ * by the sink. That means the sink callbacks must be protected
+ * against an unconnected sink input! */
pa_sink_input_unlink(u->sink_input);
+ pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- u->sink = NULL;
pa_sink_input_unref(u->sink_input);
u->sink_input = NULL;
+ pa_sink_unref(u->sink);
+ u->sink = NULL;
+
pa_module_unload_request(u->module, TRUE);
}
@@ -375,6 +383,16 @@ static pa_bool_t sink_input_may_move_to_cb(pa_sink_input *i, pa_sink *dest) {
return u->sink != dest;
}
+/* Called from main context */
+static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
+ struct userdata *u;
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(u = i->userdata);
+
+ pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+}
+
int pa__init(pa_module*m) {
struct userdata *u;
pa_sample_spec ss;
@@ -428,12 +446,8 @@ int pa__init(pa_module*m) {
cdata = pa_modargs_get_value(ma, "control", NULL);
u = pa_xnew0(struct userdata, 1);
- u->core = m->core;
u->module = m;
m->userdata = u;
- u->master = master;
- u->sink = NULL;
- u->sink_input = NULL;
u->memblockq = pa_memblockq_new(0, MEMBLOCKQ_MAXLENGTH, 0, pa_frame_size(&ss), 1, 1, 0, NULL);
if (!(e = getenv("LADSPA_PATH")))
@@ -717,7 +731,7 @@ int pa__init(pa_module*m) {
goto fail;
}
- u->sink = pa_sink_new(m->core, &sink_data, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY);
+ u->sink = pa_sink_new(m->core, &sink_data, master->flags & (PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY));
pa_sink_new_data_done(&sink_data);
if (!u->sink) {
@@ -732,19 +746,18 @@ int pa__init(pa_module*m) {
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, master->asyncmsgq);
- pa_sink_set_rtpoll(u->sink, master->rtpoll);
/* Create sink input */
pa_sink_input_new_data_init(&sink_input_data);
sink_input_data.driver = __FILE__;
sink_input_data.module = m;
- sink_input_data.sink = u->master;
+ sink_input_data.sink = master;
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_NAME, "LADSPA Stream");
pa_proplist_sets(sink_input_data.proplist, PA_PROP_MEDIA_ROLE, "filter");
pa_sink_input_new_data_set_sample_spec(&sink_input_data, &ss);
pa_sink_input_new_data_set_channel_map(&sink_input_data, &map);
- pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, PA_SINK_INPUT_DONT_MOVE);
+ pa_sink_input_new(&u->sink_input, m->core, &sink_input_data, 0);
pa_sink_input_new_data_done(&sink_input_data);
if (!u->sink_input)
@@ -755,11 +768,13 @@ int pa__init(pa_module*m) {
u->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
u->sink_input->update_max_request = sink_input_update_max_request_cb;
u->sink_input->update_sink_latency_range = sink_input_update_sink_latency_range_cb;
+ u->sink_input->update_sink_fixed_latency = sink_input_update_sink_fixed_latency_cb;
u->sink_input->kill = sink_input_kill_cb;
u->sink_input->attach = sink_input_attach_cb;
u->sink_input->detach = sink_input_detach_cb;
u->sink_input->state_change = sink_input_state_change_cb;
u->sink_input->may_move_to = sink_input_may_move_to_cb;
+ u->sink_input->moving = sink_input_moving_cb;
u->sink_input->userdata = u;
pa_sink_put(u->sink);
@@ -800,15 +815,20 @@ void pa__done(pa_module*m) {
if (!(u = m->userdata))
return;
- if (u->sink) {
- pa_sink_unlink(u->sink);
- pa_sink_unref(u->sink);
- }
+ /* See comments in sink_input_kill_cb() above regarding
+ * destruction order! */
- if (u->sink_input) {
+ if (u->sink_input)
pa_sink_input_unlink(u->sink_input);
+
+ if (u->sink)
+ pa_sink_unlink(u->sink);
+
+ if (u->sink_input)
pa_sink_input_unref(u->sink_input);
- }
+
+ if (u->sink)
+ pa_sink_unref(u->sink);
for (c = 0; c < u->channels; c++)
if (u->handle[c]) {
commit a5b2dee03c08b72f4b7d27d9c7ac304d98e0513c
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 01:02:16 2009 +0200
ladspa: name sink after human readable plugin name, not the id string
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index e838be3..3c6e349 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -711,11 +711,10 @@ int pa__init(pa_module*m) {
sink_data.module = m;
if (!(sink_data.name = pa_xstrdup(pa_modargs_get_value(ma, "sink_name", NULL))))
sink_data.name = pa_sprintf_malloc("%s.ladspa", master->name);
- sink_data.namereg_fail = FALSE;
pa_sink_new_data_set_sample_spec(&sink_data, &ss);
pa_sink_new_data_set_channel_map(&sink_data, &map);
z = pa_proplist_gets(master->proplist, PA_PROP_DEVICE_DESCRIPTION);
- pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", label, z ? z : master->name);
+ pa_proplist_setf(sink_data.proplist, PA_PROP_DEVICE_DESCRIPTION, "LADSPA Plugin %s on %s", d->Name, z ? z : master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_MASTER_DEVICE, master->name);
pa_proplist_sets(sink_data.proplist, PA_PROP_DEVICE_CLASS, "filter");
pa_proplist_sets(sink_data.proplist, "device.ladspa.module", plugin);
commit 8947d6551586d239be206f90adca2f6dace667a2
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 01:04:21 2009 +0200
combine: drop adjust_timestamp variable because it is unused
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 9271655..325b898 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -125,8 +125,6 @@ struct userdata {
pa_resample_method_t resample_method;
- struct timeval adjust_timestamp;
-
pa_usec_t block_usec;
pa_idxset* outputs; /* managed in main context */
@@ -833,14 +831,11 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) {
pa_assert(sink);
pa_assert(u->sink);
- o = pa_xnew(struct output, 1);
+ o = pa_xnew0(struct output, 1);
o->userdata = u;
o->inq = pa_asyncmsgq_new(0);
o->outq = pa_asyncmsgq_new(0);
- o->inq_rtpoll_item_write = o->inq_rtpoll_item_read = NULL;
- o->outq_rtpoll_item_write = o->outq_rtpoll_item_read = NULL;
o->sink = sink;
- o->sink_input = NULL;
o->memblockq = pa_memblockq_new(
0,
MEMBLOCKQ_MAXLENGTH,
@@ -1029,18 +1024,14 @@ int pa__init(pa_module*m) {
}
}
- m->userdata = u = pa_xnew(struct userdata, 1);
+ m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->module = m;
- u->sink = NULL;
- u->time_event = NULL;
u->adjust_time = DEFAULT_ADJUST_TIME;
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, m->core->mainloop, u->rtpoll);
- u->thread = NULL;
u->resample_method = resample_method;
u->outputs = pa_idxset_new(NULL, NULL);
- memset(&u->adjust_timestamp, 0, sizeof(u->adjust_timestamp));
u->sink_put_slot = u->sink_unlink_slot = u->sink_state_changed_slot = NULL;
PA_LLIST_HEAD_INIT(struct output, u->thread_info.active_outputs);
pa_atomic_store(&u->thread_info.running, FALSE);
@@ -1095,7 +1086,6 @@ int pa__init(pa_module*m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Simultaneous Output");
}
-
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY);
pa_sink_new_data_done(&data);
commit e1f3f5e0bf3d788ff69d24cd40c465eaaf6e9385
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 01:07:37 2009 +0200
combine: big rework
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 325b898..04c0d4d 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -92,6 +92,8 @@ struct output {
pa_sink *sink;
pa_sink_input *sink_input;
+ pa_bool_t ignore_state_change;
+
pa_asyncmsgq *inq, /* Message queue from the sink thread to this sink input */
*outq; /* Message queue from this sink input to the sink thread */
pa_rtpoll_item *inq_rtpoll_item_read, *inq_rtpoll_item_write;
@@ -99,9 +101,12 @@ struct output {
pa_memblockq *memblockq;
+ /* For communication of the stream latencies to the main thread */
pa_usec_t total_latency;
+ /* For coomunication of the stream parameters to the sink thread */
pa_atomic_t max_request;
+ pa_atomic_t requested_latency;
PA_LLIST_FIELDS(struct output);
};
@@ -144,13 +149,16 @@ enum {
SINK_MESSAGE_REMOVE_OUTPUT,
SINK_MESSAGE_NEED,
SINK_MESSAGE_UPDATE_LATENCY,
- SINK_MESSAGE_UPDATE_MAX_REQUEST
+ SINK_MESSAGE_UPDATE_MAX_REQUEST,
+ SINK_MESSAGE_UPDATE_REQUESTED_LATENCY
};
enum {
SINK_INPUT_MESSAGE_POST = PA_SINK_INPUT_MESSAGE_MAX,
};
+static void output_disable(struct output *o);
+static void output_enable(struct output *o);
static void output_free(struct output *o);
static int output_create_sink_input(struct output *o);
@@ -170,7 +178,7 @@ static void adjust_rates(struct userdata *u) {
if (!PA_SINK_IS_OPENED(pa_sink_get_state(u->sink)))
return;
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
+ PA_IDXSET_FOREACH(o, u->outputs, idx) {
pa_usec_t sink_latency;
if (!o->sink_input || !PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
@@ -187,6 +195,8 @@ static void adjust_rates(struct userdata *u) {
avg_total_latency += o->total_latency;
n++;
+
+ pa_log_debug("[%s] total=%0.2fms sink=%0.2fms ", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC, (double) sink_latency / PA_USEC_PER_MSEC);
}
if (min_total_latency == (pa_usec_t) -1)
@@ -201,7 +211,7 @@ static void adjust_rates(struct userdata *u) {
base_rate = u->sink->sample_spec.rate;
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
+ PA_IDXSET_FOREACH(o, u->outputs, idx) {
uint32_t r = base_rate;
if (!o->sink_input || !PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
@@ -213,10 +223,10 @@ static void adjust_rates(struct userdata *u) {
r += (uint32_t) ((((double) (o->total_latency - target_latency))/(double)u->adjust_time)*(double)r/PA_USEC_PER_SEC);
if (r < (uint32_t) (base_rate*0.9) || r > (uint32_t) (base_rate*1.1)) {
- pa_log_warn("[%s] sample rates too different, not adjusting (%u vs. %u).", pa_proplist_gets(o->sink_input->proplist, PA_PROP_MEDIA_NAME), base_rate, r);
+ pa_log_warn("[%s] sample rates too different, not adjusting (%u vs. %u).", o->sink_input->sink->name, base_rate, r);
pa_sink_input_set_rate(o->sink_input, base_rate);
} else {
- pa_log_info("[%s] new rate is %u Hz; ratio is %0.3f; latency is %0.0f usec.", pa_proplist_gets(o->sink_input->proplist, PA_PROP_MEDIA_NAME), r, (double) r / base_rate, (float) o->total_latency);
+ pa_log_info("[%s] new rate is %u Hz; ratio is %0.3f; latency is %0.0f usec.", o->sink_input->sink->name, r, (double) r / base_rate, (float) o->total_latency);
pa_sink_input_set_rate(o->sink_input, r);
}
}
@@ -353,18 +363,15 @@ static void render_memblock(struct userdata *u, struct output *o, size_t length)
u->thread_info.counter += chunk.length;
/* OK, let's send this data to the other threads */
- for (j = u->thread_info.active_outputs; j; j = j->next)
-
- /* Send to other outputs, which are not the requesting
- * one */
+ PA_LLIST_FOREACH(j, u->thread_info.active_outputs) {
+ if (j == o)
+ continue;
- if (j != o)
- pa_asyncmsgq_post(j->inq, PA_MSGOBJECT(j->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, &chunk, NULL);
+ pa_asyncmsgq_post(j->inq, PA_MSGOBJECT(j->sink_input), SINK_INPUT_MESSAGE_POST, NULL, 0, &chunk, NULL);
+ }
/* And place it directly into the requesting output's queue */
- if (o)
- pa_memblockq_push_align(o->memblockq, &chunk);
-
+ pa_memblockq_push_align(o->memblockq, &chunk);
pa_memblock_unref(chunk.memblock);
}
}
@@ -400,10 +407,18 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
/* If necessary, get some new data */
request_memblock(o, nbytes);
+ /* pa_log("%s q size is %u + %u (%u/%u)", */
+ /* i->sink->name, */
+ /* pa_memblockq_get_nblocks(o->memblockq), */
+ /* pa_memblockq_get_nblocks(i->thread_info.render_memblockq), */
+ /* pa_memblockq_get_maxrewind(o->memblockq), */
+ /* pa_memblockq_get_maxrewind(i->thread_info.render_memblockq)); */
+
if (pa_memblockq_peek(o->memblockq, chunk) < 0)
return -1;
pa_memblockq_drop(o->memblockq, chunk->length);
+
return 0;
}
@@ -438,13 +453,35 @@ static void sink_input_update_max_request_cb(pa_sink_input *i, size_t nbytes) {
return;
pa_atomic_store(&o->max_request, (int) nbytes);
-
pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_MAX_REQUEST, NULL, 0, NULL, NULL);
}
+/* Called from thread context */
+static void sink_input_update_sink_requested_latency_cb(pa_sink_input *i) {
+ struct output *o;
+ pa_usec_t c;
+
+ pa_assert(i);
+
+ pa_sink_input_assert_ref(i);
+ pa_assert_se(o = i->userdata);
+
+ c = pa_sink_get_requested_latency_within_thread(i->sink);
+
+ if (c == (pa_usec_t) -1)
+ c = i->sink->thread_info.max_latency;
+
+ if (pa_atomic_load(&o->requested_latency) == (int) c)
+ return;
+
+ pa_atomic_store(&o->requested_latency, (int) c);
+ pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_REQUESTED_LATENCY, NULL, 0, NULL, NULL);
+}
+
/* Called from I/O thread context */
static void sink_input_attach_cb(pa_sink_input *i) {
struct output *o;
+ pa_usec_t c;
pa_sink_input_assert_ref(i);
pa_assert_se(o = i->userdata);
@@ -461,6 +498,16 @@ static void sink_input_attach_cb(pa_sink_input *i) {
i->sink->thread_info.rtpoll,
PA_RTPOLL_EARLY,
o->outq);
+
+ pa_sink_input_request_rewind(i, 0, FALSE, TRUE, TRUE);
+
+ pa_atomic_store(&o->max_request, (int) pa_sink_input_get_max_request(i));
+
+ c = pa_sink_get_requested_latency_within_thread(i->sink);
+ pa_atomic_store(&o->requested_latency, (int) (c == (pa_usec_t) -1 ? 0 : c));
+
+ pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_MAX_REQUEST, NULL, 0, NULL, NULL);
+ pa_asyncmsgq_post(o->outq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_UPDATE_REQUESTED_LATENCY, NULL, 0, NULL, NULL);
}
/* Called from I/O thread context */
@@ -470,14 +517,15 @@ static void sink_input_detach_cb(pa_sink_input *i) {
pa_sink_input_assert_ref(i);
pa_assert_se(o = i->userdata);
- /* Shut down the queue from the sink thread to us */
- pa_assert(o->inq_rtpoll_item_read && o->outq_rtpoll_item_write);
-
- pa_rtpoll_item_free(o->inq_rtpoll_item_read);
- o->inq_rtpoll_item_read = NULL;
+ if (o->inq_rtpoll_item_read) {
+ pa_rtpoll_item_free(o->inq_rtpoll_item_read);
+ o->inq_rtpoll_item_read = NULL;
+ }
- pa_rtpoll_item_free(o->outq_rtpoll_item_write);
- o->outq_rtpoll_item_write = NULL;
+ if (o->outq_rtpoll_item_write) {
+ pa_rtpoll_item_free(o->outq_rtpoll_item_write);
+ o->outq_rtpoll_item_write = NULL;
+ }
}
/* Called from main context */
@@ -491,20 +539,6 @@ static void sink_input_kill_cb(pa_sink_input *i) {
output_free(o);
}
-/* Called from IO thread context */
-static void sink_input_state_change_cb(pa_sink_input *i, pa_sink_input_state_t state) {
- struct userdata *u;
-
- pa_sink_input_assert_ref(i);
- pa_assert_se(u = i->userdata);
-
- /* If we are added for the first time, ask for a rewinding so that
- * we are heard right-away. */
- if (PA_SINK_INPUT_IS_LINKED(state) &&
- i->thread_info.state == PA_SINK_INPUT_INIT)
- pa_sink_input_request_rewind(i, 0, FALSE, TRUE, TRUE);
-}
-
/* Called from thread context */
static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct output *o = PA_SINK_INPUT(obj)->userdata;
@@ -535,37 +569,6 @@ static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64
}
/* Called from main context */
-static void disable_output(struct output *o) {
- pa_assert(o);
-
- if (!o->sink_input)
- return;
-
- pa_sink_input_unlink(o->sink_input);
- pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_REMOVE_OUTPUT, o, 0, NULL);
- pa_sink_input_unref(o->sink_input);
- o->sink_input = NULL;
-}
-
-/* Called from main context */
-static void enable_output(struct output *o) {
- pa_assert(o);
-
- if (o->sink_input)
- return;
-
- if (output_create_sink_input(o) >= 0) {
-
- pa_memblockq_flush_write(o->memblockq);
-
- pa_sink_input_put(o->sink_input);
-
- if (o->userdata->sink && PA_SINK_IS_LINKED(pa_sink_get_state(o->userdata->sink)))
- pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL);
- }
-}
-
-/* Called from main context */
static void suspend(struct userdata *u) {
struct output *o;
uint32_t idx;
@@ -573,8 +576,8 @@ static void suspend(struct userdata *u) {
pa_assert(u);
/* Let's suspend by unlinking all streams */
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx))
- disable_output(o);
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
+ output_disable(o);
pa_log_info("Device suspended...");
}
@@ -587,13 +590,8 @@ static void unsuspend(struct userdata *u) {
pa_assert(u);
/* Let's resume */
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
-
- pa_sink_suspend(o->sink, FALSE, PA_SUSPEND_IDLE);
-
- if (PA_SINK_IS_OPENED(pa_sink_get_state(o->sink)))
- enable_output(o);
- }
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
+ output_enable(o);
pa_log_info("Resumed successfully...");
}
@@ -637,7 +635,13 @@ static void update_max_request(struct userdata *u) {
size_t max_request = 0;
struct output *o;
- for (o = u->thread_info.active_outputs; o; o = o->next) {
+ pa_assert(u);
+ pa_sink_assert_io_context(u->sink);
+
+ /* Collects the max_request values of all streams and sets the
+ * largest one locally */
+
+ PA_LLIST_FOREACH(o, u->thread_info.active_outputs) {
size_t mr = (size_t) pa_atomic_load(&o->max_request);
if (mr > max_request)
@@ -650,6 +654,67 @@ static void update_max_request(struct userdata *u) {
pa_sink_set_max_request_within_thread(u->sink, max_request);
}
+/* Called from IO context */
+static void update_fixed_latency(struct userdata *u) {
+ pa_usec_t fixed_latency = 0;
+ struct output *o;
+
+ pa_assert(u);
+ pa_sink_assert_io_context(u->sink);
+
+ /* Collects the requested_latency values of all streams and sets
+ * the largest one as fixed_latency locally */
+
+ PA_LLIST_FOREACH(o, u->thread_info.active_outputs) {
+ pa_usec_t rl = (size_t) pa_atomic_load(&o->requested_latency);
+
+ if (rl > fixed_latency)
+ fixed_latency = rl;
+ }
+
+ if (fixed_latency <= 0)
+ fixed_latency = u->block_usec;
+
+ pa_sink_set_fixed_latency_within_thread(u->sink, fixed_latency);
+}
+
+/* Called from thread context of the io thread */
+static void output_add_within_thread(struct output *o) {
+ pa_assert(o);
+ pa_sink_assert_io_context(o->sink);
+
+ PA_LLIST_PREPEND(struct output, o->userdata->thread_info.active_outputs, o);
+
+ pa_assert(!o->outq_rtpoll_item_read && !o->inq_rtpoll_item_write);
+
+ o->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
+ o->userdata->rtpoll,
+ PA_RTPOLL_EARLY-1, /* This item is very important */
+ o->outq);
+ o->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
+ o->userdata->rtpoll,
+ PA_RTPOLL_EARLY,
+ o->inq);
+}
+
+/* Called from thread context of the io thread */
+static void output_remove_within_thread(struct output *o) {
+ pa_assert(o);
+ pa_sink_assert_io_context(o->sink);
+
+ PA_LLIST_REMOVE(struct output, o->userdata->thread_info.active_outputs, o);
+
+ if (o->outq_rtpoll_item_read) {
+ pa_rtpoll_item_free(o->outq_rtpoll_item_read);
+ o->outq_rtpoll_item_read = NULL;
+ }
+
+ if (o->inq_rtpoll_item_write) {
+ pa_rtpoll_item_free(o->inq_rtpoll_item_write);
+ o->inq_rtpoll_item_write = NULL;
+ }
+}
+
/* Called from thread context of the io thread */
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;
@@ -682,42 +747,17 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
return 0;
}
- case SINK_MESSAGE_ADD_OUTPUT: {
- struct output *op = data;
-
- PA_LLIST_PREPEND(struct output, u->thread_info.active_outputs, op);
-
- pa_assert(!op->outq_rtpoll_item_read && !op->inq_rtpoll_item_write);
-
- op->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
- u->rtpoll,
- PA_RTPOLL_EARLY-1, /* This item is very important */
- op->outq);
- op->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
- u->rtpoll,
- PA_RTPOLL_EARLY,
- op->inq);
-
+ case SINK_MESSAGE_ADD_OUTPUT:
+ output_add_within_thread(data);
update_max_request(u);
+ update_fixed_latency(u);
return 0;
- }
-
- case SINK_MESSAGE_REMOVE_OUTPUT: {
- struct output *op = data;
-
- PA_LLIST_REMOVE(struct output, u->thread_info.active_outputs, op);
-
- pa_assert(op->outq_rtpoll_item_read && op->inq_rtpoll_item_write);
-
- pa_rtpoll_item_free(op->outq_rtpoll_item_read);
- op->outq_rtpoll_item_read = NULL;
-
- pa_rtpoll_item_free(op->inq_rtpoll_item_write);
- op->inq_rtpoll_item_write = NULL;
+ case SINK_MESSAGE_REMOVE_OUTPUT:
+ output_remove_within_thread(data);
update_max_request(u);
+ update_fixed_latency(u);
return 0;
- }
case SINK_MESSAGE_NEED:
render_memblock(u, (struct output*) data, (size_t) offset);
@@ -739,10 +779,13 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
}
case SINK_MESSAGE_UPDATE_MAX_REQUEST:
-
update_max_request(u);
break;
- }
+
+ case SINK_MESSAGE_UPDATE_REQUESTED_LATENCY:
+ update_fixed_latency(u);
+ break;
+}
return pa_sink_process_msg(o, code, data, offset, chunk);
}
@@ -765,7 +808,7 @@ static void update_description(struct userdata *u) {
t = pa_xstrdup("Simultaneous output to");
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx)) {
+ PA_IDXSET_FOREACH(o, u->outputs, idx) {
char *e;
if (first) {
@@ -800,7 +843,7 @@ static int output_create_sink_input(struct output *o) {
data.module = o->userdata->module;
data.resample_method = o->userdata->resample_method;
- pa_sink_input_new(&o->sink_input, o->userdata->core, &data, PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE);
+ pa_sink_input_new(&o->sink_input, o->userdata->core, &data, PA_SINK_INPUT_VARIABLE_RATE|PA_SINK_INPUT_DONT_MOVE|PA_SINK_INPUT_NO_CREATE_ON_SUSPEND);
pa_sink_input_new_data_done(&data);
@@ -810,9 +853,9 @@ static int output_create_sink_input(struct output *o) {
o->sink_input->parent.process_msg = sink_input_process_msg;
o->sink_input->pop = sink_input_pop_cb;
o->sink_input->process_rewind = sink_input_process_rewind_cb;
- o->sink_input->state_change = sink_input_state_change_cb;
o->sink_input->update_max_rewind = sink_input_update_max_rewind_cb;
o->sink_input->update_max_request = sink_input_update_max_request_cb;
+ o->sink_input->update_sink_requested_latency = sink_input_update_sink_requested_latency_cb;
o->sink_input->attach = sink_input_attach_cb;
o->sink_input->detach = sink_input_detach_cb;
o->sink_input->kill = sink_input_kill_cb;
@@ -823,9 +866,9 @@ static int output_create_sink_input(struct output *o) {
return 0;
}
+/* Called from main context */
static struct output *output_new(struct userdata *u, pa_sink *sink) {
struct output *o;
- pa_sink_state_t state;
pa_assert(u);
pa_assert(sink);
@@ -845,84 +888,135 @@ static struct output *output_new(struct userdata *u, pa_sink *sink) {
0,
0,
NULL);
- pa_atomic_store(&o->max_request, 0);
- PA_LLIST_INIT(struct output, o);
pa_assert_se(pa_idxset_put(u->outputs, o, NULL) == 0);
+ update_description(u);
- state = pa_sink_get_state(u->sink);
-
- if (state != PA_SINK_INIT)
- pa_asyncmsgq_send(u->sink->asyncmsgq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL);
- else {
- /* If the sink is not yet started, we need to do the activation ourselves */
- PA_LLIST_PREPEND(struct output, u->thread_info.active_outputs, o);
-
- o->outq_rtpoll_item_read = pa_rtpoll_item_new_asyncmsgq_read(
- u->rtpoll,
- PA_RTPOLL_EARLY-1, /* This item is very important */
- o->outq);
- o->inq_rtpoll_item_write = pa_rtpoll_item_new_asyncmsgq_write(
- u->rtpoll,
- PA_RTPOLL_EARLY,
- o->inq);
- }
+ return o;
+}
- if (PA_SINK_IS_OPENED(state) || state == PA_SINK_INIT) {
- pa_sink_suspend(sink, FALSE, PA_SUSPEND_IDLE);
+/* Called from main context */
+static void output_free(struct output *o) {
+ pa_assert(o);
- if (PA_SINK_IS_OPENED(pa_sink_get_state(sink)))
- if (output_create_sink_input(o) < 0)
- goto fail;
- }
+ output_disable(o);
- update_description(u);
+ pa_assert_se(pa_idxset_remove_by_data(o->userdata->outputs, o, NULL));
+ update_description(o->userdata);
- return o;
+ if (o->inq_rtpoll_item_read)
+ pa_rtpoll_item_free(o->inq_rtpoll_item_read);
+ if (o->inq_rtpoll_item_write)
+ pa_rtpoll_item_free(o->inq_rtpoll_item_write);
-fail:
+ if (o->outq_rtpoll_item_read)
+ pa_rtpoll_item_free(o->outq_rtpoll_item_read);
+ if (o->outq_rtpoll_item_write)
+ pa_rtpoll_item_free(o->outq_rtpoll_item_write);
- if (o) {
- pa_idxset_remove_by_data(u->outputs, o, NULL);
+ if (o->inq)
+ pa_asyncmsgq_unref(o->inq);
- if (o->sink_input) {
- pa_sink_input_unlink(o->sink_input);
- pa_sink_input_unref(o->sink_input);
- }
+ if (o->outq)
+ pa_asyncmsgq_unref(o->outq);
+
+ if (o->memblockq)
+ pa_memblockq_free(o->memblockq);
- if (o->memblockq)
- pa_memblockq_free(o->memblockq);
+ pa_xfree(o);
+}
- if (o->inq)
- pa_asyncmsgq_unref(o->inq);
+/* Called from main context */
+static void output_enable(struct output *o) {
+ pa_assert(o);
+
+ if (o->sink_input)
+ return;
+
+ /* This might cause the sink to be resumed. The state change hook
+ * of the sink might hence be called from here, which might then
+ * cause us to be called in a loop. Make sure that state changes
+ * for this output don't cause this loop by setting a flag here */
+ o->ignore_state_change = TRUE;
+
+ if (output_create_sink_input(o) >= 0) {
- if (o->outq)
- pa_asyncmsgq_unref(o->outq);
+ if (pa_sink_get_state(o->sink) != PA_SINK_INIT) {
- pa_xfree(o);
+ /* First we register the output. That means that the sink
+ * will start to pass data to this output. */
+ pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_ADD_OUTPUT, o, 0, NULL);
+
+ /* Then we enable the sink input. That means that the sink
+ * is now asked for new data. */
+ pa_sink_input_put(o->sink_input);
+
+ } else
+ /* Hmm the sink is not yet started, do things right here */
+ output_add_within_thread(o);
}
- return NULL;
+ o->ignore_state_change = FALSE;
}
+/* Called from main context */
+static void output_disable(struct output *o) {
+ pa_assert(o);
+
+ if (!o->sink_input)
+ return;
+
+ /* First we disable the sink input. That means that the sink is
+ * not asked for new data anymore */
+ pa_sink_input_unlink(o->sink_input);
+
+ /* Then we unregister the output. That means that the sink doesn't
+ * pass any further data to this output */
+ pa_asyncmsgq_send(o->userdata->sink->asyncmsgq, PA_MSGOBJECT(o->userdata->sink), SINK_MESSAGE_REMOVE_OUTPUT, o, 0, NULL);
+
+ /* Now dellocate the stream */
+ pa_sink_input_unref(o->sink_input);
+ o->sink_input = NULL;
+
+ /* Finally, drop all queued data */
+ pa_memblockq_flush_write(o->memblockq);
+ pa_asyncmsgq_flush(o->inq, FALSE);
+ pa_asyncmsgq_flush(o->outq, FALSE);
+}
+
+/* Called from main context */
+static void output_verify(struct output *o) {
+ pa_assert(o);
+
+ if (PA_SINK_IS_OPENED(pa_sink_get_state(o->userdata->sink)))
+ output_enable(o);
+ else
+ output_disable(o);
+}
+
+/* Called from main context */
static pa_bool_t is_suitable_sink(struct userdata *u, pa_sink *s) {
const char *t;
pa_sink_assert_ref(s);
+ if (s == u->sink)
+ return FALSE;
+
if (!(s->flags & PA_SINK_HARDWARE))
return FALSE;
- if (s == u->sink)
+ if (!(s->flags & PA_SINK_LATENCY))
return FALSE;
if ((t = pa_proplist_gets(s->proplist, PA_PROP_DEVICE_CLASS)))
- if (strcmp(t, "sound"))
+ if (!pa_streq(t, "sound"))
return FALSE;
return TRUE;
}
+/* Called from main context */
static pa_hook_result_t sink_put_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) {
struct output *o;
@@ -935,18 +1029,17 @@ static pa_hook_result_t sink_put_hook_cb(pa_core *c, pa_sink *s, struct userdata
return PA_HOOK_OK;
pa_log_info("Configuring new sink: %s", s->name);
-
if (!(o = output_new(u, s))) {
pa_log("Failed to create sink input on sink '%s'.", s->name);
return PA_HOOK_OK;
}
- if (o->sink_input)
- pa_sink_input_put(o->sink_input);
+ output_verify(o);
return PA_HOOK_OK;
}
+/* Called from main context */
static struct output* find_output(struct userdata *u, pa_sink *s) {
struct output *o;
uint32_t idx;
@@ -957,13 +1050,14 @@ static struct output* find_output(struct userdata *u, pa_sink *s) {
if (u->sink == s)
return NULL;
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx))
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
if (o->sink == s)
return o;
return NULL;
}
+/* Called from main context */
static pa_hook_result_t sink_unlink_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) {
struct output *o;
@@ -975,26 +1069,25 @@ static pa_hook_result_t sink_unlink_hook_cb(pa_core *c, pa_sink *s, struct userd
return PA_HOOK_OK;
pa_log_info("Unconfiguring sink: %s", s->name);
-
output_free(o);
return PA_HOOK_OK;
}
+/* Called from main context */
static pa_hook_result_t sink_state_changed_hook_cb(pa_core *c, pa_sink *s, struct userdata* u) {
struct output *o;
- pa_sink_state_t state;
if (!(o = find_output(u, s)))
return PA_HOOK_OK;
- state = pa_sink_get_state(s);
-
- if (PA_SINK_IS_OPENED(state) && PA_SINK_IS_OPENED(pa_sink_get_state(u->sink)) && !o->sink_input)
- enable_output(o);
+ /* This state change might be triggered because we are creating a
+ * stream here, in that case we don't want to create it a second
+ * time here and enter a loop */
+ if (o->ignore_state_change)
+ return PA_HOOK_OK;
- if (state == PA_SINK_SUSPENDED && o->sink_input)
- disable_output(o);
+ output_verify(o);
return PA_HOOK_OK;
}
@@ -1139,7 +1232,7 @@ int pa__init(pa_module*m) {
/* We're in automatic mode, we add every sink that matches our needs */
- for (s = pa_idxset_first(m->core->sinks, &idx); s; s = pa_idxset_next(m->core->sinks, &idx)) {
+ PA_IDXSET_FOREACH(s, m->core->sinks, idx) {
if (!is_suitable_sink(u, s))
continue;
@@ -1164,9 +1257,8 @@ int pa__init(pa_module*m) {
/* Activate the sink and the sink inputs */
pa_sink_put(u->sink);
- for (o = pa_idxset_first(u->outputs, &idx); o; o = pa_idxset_next(u->outputs, &idx))
- if (o->sink_input)
- pa_sink_input_put(o->sink_input);
+ PA_IDXSET_FOREACH(o, u->outputs, idx)
+ output_verify(o);
if (u->adjust_time > 0)
u->time_event = pa_core_rttime_new(m->core, pa_rtclock_now() + u->adjust_time * PA_USEC_PER_SEC, time_callback, u);
@@ -1185,37 +1277,6 @@ fail:
return -1;
}
-static void output_free(struct output *o) {
- pa_assert(o);
-
- disable_output(o);
-
- pa_assert_se(pa_idxset_remove_by_data(o->userdata->outputs, o, NULL));
-
- update_description(o->userdata);
-
- if (o->inq_rtpoll_item_read)
- pa_rtpoll_item_free(o->inq_rtpoll_item_read);
- if (o->inq_rtpoll_item_write)
- pa_rtpoll_item_free(o->inq_rtpoll_item_write);
-
- if (o->outq_rtpoll_item_read)
- pa_rtpoll_item_free(o->outq_rtpoll_item_read);
- if (o->outq_rtpoll_item_write)
- pa_rtpoll_item_free(o->outq_rtpoll_item_write);
-
- if (o->inq)
- pa_asyncmsgq_unref(o->inq);
-
- if (o->outq)
- pa_asyncmsgq_unref(o->outq);
-
- if (o->memblockq)
- pa_memblockq_free(o->memblockq);
-
- pa_xfree(o);
-}
-
void pa__done(pa_module*m) {
struct userdata *u;
struct output *o;
commit 1eeddd84d2ff2482dd4a6d2dd43dc8a315ba72a4
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 01:16:57 2009 +0200
combine: warn when the latency of a stream gets too high
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 04c0d4d..155b928 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -197,6 +197,9 @@ static void adjust_rates(struct userdata *u) {
n++;
pa_log_debug("[%s] total=%0.2fms sink=%0.2fms ", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC, (double) sink_latency / PA_USEC_PER_MSEC);
+
+ if (o->total_latency > 10*PA_USEC_PER_SEC)
+ pa_log_warn("[%s] Total latency of output is very high (%0.2fms), most likely the audio timing in one of your drivers is broken.", o->sink->name, (double) o->total_latency / PA_USEC_PER_MSEC);
}
if (min_total_latency == (pa_usec_t) -1)
commit 61105df13b423b100394639cf7850856efbad767
Author: Maarten Bosmans <mkbosmans at gmail.com>
Date: Sat Aug 15 01:35:53 2009 +0200
combine: determine sample parameters of combined sink from underlying sinks
http://pulseaudio.org/ticket/521
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 155b928..582cbce 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -1152,6 +1152,55 @@ int pa__init(pa_module*m) {
ss = m->core->default_sample_spec;
map = m->core->default_channel_map;
+
+ /* Check the specified slave sinks for sample_spec and channel_map to use for the combined sink */
+ if (!u->automatic) {
+ const char*split_state = NULL;
+ char *n = NULL;
+ pa_sample_spec slaves_spec;
+ pa_channel_map slaves_map;
+ pa_bool_t is_first_slave = TRUE;
+
+ while ((n = pa_split(slaves, ",", &split_state))) {
+ pa_sink *slave_sink;
+
+ if (!(slave_sink = pa_namereg_get(m->core, n, PA_NAMEREG_SINK))) {
+ pa_log("Invalid slave sink '%s'", n);
+ pa_xfree(n);
+ goto fail;
+ }
+
+ pa_xfree(n);
+
+ if (is_first_slave) {
+ slaves_spec = slave_sink->sample_spec;
+ slaves_map = slave_sink->channel_map;
+ is_first_slave = FALSE;
+ } else {
+ if (slaves_spec.format != slave_sink->sample_spec.format)
+ slaves_spec.format = PA_SAMPLE_INVALID;
+
+ if (slaves_spec.rate < slave_sink->sample_spec.rate)
+ slaves_spec.rate = slave_sink->sample_spec.rate;
+
+ if (!pa_channel_map_equal(&slaves_map, &slave_sink->channel_map))
+ slaves_spec.channels = 0;
+ }
+ }
+
+ if (!is_first_slave) {
+ if (slaves_spec.format != PA_SAMPLE_INVALID)
+ ss.format = slaves_spec.format;
+
+ ss.rate = slaves_spec.rate;
+
+ if (slaves_spec.channels > 0) {
+ map = slaves_map;
+ ss.channels = slaves_map.channels;
+ }
+ }
+ }
+
if ((pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0)) {
pa_log("Invalid sample specification.");
goto fail;
commit ea5cdcbe52e3e1ac6189fb6472fafe61fbfdd73c
Author: Juho Hämäläinen <juho.hamalainen at digia.com>
Date: Wed Aug 12 18:30:14 2009 +0300
database: simple hashmap based database implementation
diff --git a/configure.ac b/configure.ac
index a38d8a1..05312d3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -626,10 +626,11 @@ AM_CONDITIONAL([HAVE_LIBSAMPLERATE], [test "x$HAVE_LIBSAMPLERATE" = x1])
HAVE_TDB=0
HAVE_GDBM=0
+HAVE_SIMPLEDB=0
AC_ARG_WITH(
[database],
- AS_HELP_STRING([--with-database=auto|tdb|gdbm],[Choose database backend.]),[],[with_database=auto])
+ AS_HELP_STRING([--with-database=auto|tdb|gdbm|simple],[Choose database backend.]),[],[with_database=auto])
if test "x${with_database}" = "xauto" -o "x${with_database}" = "xtdb" ; then
PKG_CHECK_MODULES(TDB, [ tdb ],
@@ -659,7 +660,12 @@ if test "x${with_database}" = "xauto" -o "x${with_database}" = "xgdbm" ; then
fi
fi
-if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1; then
+if test "x${with_database}" = "xauto" -o "x${with_database}" = "xsimple" ; then
+ HAVE_SIMPLEDB=1
+ with_database=simple
+fi
+
+if test "x${HAVE_TDB}" != x1 -a "x${HAVE_GDBM}" != x1 -a "x${HAVE_SIMPLEDB}" != x1; then
AC_MSG_ERROR([*** missing database backend])
fi
@@ -671,6 +677,10 @@ if test "x${HAVE_GDBM}" = x1 ; then
AC_DEFINE([HAVE_GDBM], 1, [Have gdbm?])
fi
+if test "x${HAVE_SIMPLEDB}" = x1 ; then
+ AC_DEFINE([HAVE_SIMPLEDB], 1, [Have simple?])
+fi
+
AC_SUBST(TDB_CFLAGS)
AC_SUBST(TDB_LIBS)
AC_SUBST(HAVE_TDB)
@@ -681,6 +691,9 @@ AC_SUBST(GDBM_LIBS)
AC_SUBST(HAVE_GDBM)
AM_CONDITIONAL([HAVE_GDBM], [test "x$HAVE_GDBM" = x1])
+AC_SUBST(HAVE_SIMPLEDB)
+AM_CONDITIONAL([HAVE_SIMPLEDB], [test "x$HAVE_SIMPLEDB" = x1])
+
#### OSS support (optional) ####
AC_ARG_ENABLE([oss-output],
@@ -1491,6 +1504,11 @@ if test "x${HAVE_TDB}" = "x1" ; then
ENABLE_TDB=yes
fi
+ENABLE_SIMPLEDB=no
+if test "x${HAVE_SIMPLEDB}" = "x1" ; then
+ ENABLE_SIMPLEDB=yes
+fi
+
ENABLE_OPENSSL=no
if test "x${HAVE_OPENSSL}" = "x1" ; then
ENABLE_OPENSSL=yes
@@ -1540,6 +1558,7 @@ echo "
Enable OpenSSL (for Airtunes): ${ENABLE_OPENSSL}
Enable tdb: ${ENABLE_TDB}
Enable gdbm: ${ENABLE_GDBM}
+ Enable simple database: ${ENABLE_SIMPLEDB}
System User: ${PA_SYSTEM_USER}
System Group: ${PA_SYSTEM_GROUP}
diff --git a/src/Makefile.am b/src/Makefile.am
index aa82d79..17011cd 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -870,6 +870,9 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(TDB_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD += $(TDB_LIBS)
endif
+if HAVE_SIMPLEDB
+libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/database-simple.c
+endif
# We split the foreign code off to not be annoyed by warnings we don't care about
noinst_LTLIBRARIES = libpulsecore-foreign.la
diff --git a/src/pulsecore/database-simple.c b/src/pulsecore/database-simple.c
new file mode 100644
index 0000000..1f4caf7
--- /dev/null
+++ b/src/pulsecore/database-simple.c
@@ -0,0 +1,510 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Nokia Corporation
+ Contact: Maemo Multimedia <multimedia at maemo.org>
+
+ PulseAudio is free software; you can redistribute it 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
+ Lesser 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 <errno.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include <pulse/xmalloc.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/log.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/hashmap.h>
+
+#include "database.h"
+
+
+typedef struct simple_data {
+ char *filename;
+ char *tmp_filename;
+ pa_hashmap *map;
+ pa_bool_t read_only;
+} simple_data;
+
+typedef struct entry {
+ pa_datum key;
+ pa_datum data;
+} entry;
+
+void pa_datum_free(pa_datum *d) {
+ pa_assert(d);
+
+ pa_xfree(d->data);
+ d->data = NULL;
+ d->size = 0;
+}
+
+static int compare_func(const void *a, const void *b) {
+ const pa_datum *aa, *bb;
+
+ aa = (const pa_datum*)a;
+ bb = (const pa_datum*)b;
+
+ if (aa->size != bb->size)
+ return aa->size > bb->size ? 1 : -1;
+
+ return memcmp(aa->data, bb->data, aa->size);
+}
+
+/* pa_idxset_string_hash_func modified for our use */
+static unsigned hash_func(const void *p) {
+ const pa_datum *d;
+ unsigned hash = 0;
+ const char *c;
+ unsigned i;
+
+ d = (const pa_datum*)p;
+ c = d->data;
+
+ for (i = 0; i < d->size; i++) {
+ hash = 31 * hash + (unsigned) *c;
+ c++;
+ }
+
+ return hash;
+}
+
+static entry* new_entry(const pa_datum *key, const pa_datum *data) {
+ entry *e;
+
+ pa_assert(key);
+ pa_assert(data);
+
+ e = pa_xnew0(entry, 1);
+ e->key.data = key->size > 0 ? pa_xmemdup(key->data, key->size) : NULL;
+ e->key.size = key->size;
+ e->data.data = data->size > 0 ? pa_xmemdup(data->data, data->size) : NULL;
+ e->data.size = data->size;
+ return e;
+}
+
+static void free_entry(entry *e) {
+ if (e) {
+ if (e->key.data)
+ pa_xfree(e->key.data);
+ if (e->data.data)
+ pa_xfree(e->data.data);
+ pa_xfree(e);
+ }
+}
+
+static int read_uint(FILE *f, uint32_t *res) {
+ size_t items = 0;
+ uint8_t values[4];
+ uint32_t tmp;
+ int i;
+
+ items = fread(&values, sizeof(values), sizeof(uint8_t), f);
+
+ if (feof(f)) /* EOF */
+ return 0;
+
+ if (ferror(f))
+ return -1;
+
+ for (i = 0; i < 4; ++i) {
+ tmp = values[i];
+ *res += (tmp << (i*8));
+ }
+
+ return items;
+}
+
+static int read_data(FILE *f, void **data, ssize_t *length) {
+ size_t items = 0;
+ uint32_t data_len = 0;
+
+ pa_assert(f);
+
+ *data = NULL;
+ *length = 0;
+
+ if ((items = read_uint(f, &data_len)) <= 0)
+ return -1;
+
+ if (data_len > 0) {
+ *data = pa_xmalloc0(data_len);
+ items = fread(*data, data_len, 1, f);
+
+ if (feof(f)) /* EOF */
+ goto reset;
+
+ if (ferror(f))
+ goto reset;
+
+ *length = data_len;
+
+ } else { /* no data? */
+ return -1;
+ }
+
+ return 0;
+
+reset:
+ pa_xfree(*data);
+ *data = NULL;
+ *length = 0;
+ return -1;
+}
+
+static int fill_data(simple_data *db, FILE *f) {
+ pa_datum key;
+ pa_datum data;
+ void *d = NULL;
+ ssize_t l = 0;
+ pa_bool_t append = FALSE;
+ enum { FIELD_KEY = 0, FIELD_DATA } field = FIELD_KEY;
+
+ pa_assert(db);
+ pa_assert(db->map);
+
+ errno = 0;
+
+ key.size = 0;
+ key.data = NULL;
+
+ while (!read_data(f, &d, &l)) {
+
+ switch (field) {
+ case FIELD_KEY:
+ key.data = d;
+ key.size = l;
+ field = FIELD_DATA;
+ break;
+ case FIELD_DATA:
+ data.data = d;
+ data.size = l;
+ append = TRUE;
+ break;
+ }
+
+ if (append) {
+ entry *e = pa_xnew0(entry, 1);
+ e->key.data = key.data;
+ e->key.size = key.size;
+ e->data.data = data.data;
+ e->data.size = data.size;
+ pa_hashmap_put(db->map, &e->key, e);
+ append = FALSE;
+ field = FIELD_KEY;
+ }
+ }
+
+ if (ferror(f)) {
+ pa_log_warn("read error. %s", pa_cstrerror(errno));
+ pa_database_clear((pa_database*)db);
+ }
+
+ if (field == FIELD_DATA && d)
+ pa_xfree(d);
+
+ return pa_hashmap_size(db->map);
+}
+
+pa_database* pa_database_open(const char *fn, pa_bool_t for_write) {
+ FILE *f;
+ char *path;
+ simple_data *db;
+
+ pa_assert(fn);
+
+ path = pa_sprintf_malloc("%s."CANONICAL_HOST".simple", fn);
+ errno = 0;
+
+ f = fopen(path, "r");
+
+ if (f || errno == ENOENT) { /* file not found is ok */
+ db = pa_xnew0(simple_data, 1);
+ db->map = pa_hashmap_new(hash_func, compare_func);
+ db->filename = pa_xstrdup(path);
+ db->tmp_filename = pa_sprintf_malloc(".%s.tmp", db->filename);
+ db->read_only = !for_write;
+
+ if (f) {
+ fill_data(db, f);
+ fclose(f);
+ }
+ } else {
+ if (errno == 0)
+ errno = EIO;
+ db = NULL;
+ }
+
+ pa_xfree(path);
+
+ return (pa_database*) db;
+}
+
+void pa_database_close(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ pa_assert(db);
+
+ pa_database_sync(database);
+ pa_database_clear(database);
+ pa_xfree(db->filename);
+ pa_xfree(db->tmp_filename);
+ pa_hashmap_free(db->map, NULL, NULL);
+ pa_xfree(db);
+}
+
+pa_datum* pa_database_get(pa_database *database, const pa_datum *key, pa_datum* data) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ e = pa_hashmap_get(db->map, key);
+
+ if (!e)
+ return NULL;
+
+ data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL;
+ data->size = e->data.size;
+
+ return data;
+}
+
+int pa_database_set(pa_database *database, const pa_datum *key, const pa_datum* data, pa_bool_t overwrite) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+ int ret = 0;
+
+ pa_assert(db);
+ pa_assert(key);
+ pa_assert(data);
+
+ if (db->read_only)
+ return -1;
+
+ e = new_entry(key, data);
+
+ if (pa_hashmap_put(db->map, &e->key, e) < 0) {
+ /* entry with same key exists in hashmap */
+ entry *r;
+ if (overwrite) {
+ r = pa_hashmap_remove(db->map, key);
+ pa_hashmap_put(db->map, &e->key, e);
+ } else {
+ /* wont't overwrite, so clean new entry */
+ r = e;
+ ret = -1;
+ }
+
+ free_entry(r);
+ }
+
+ return ret;
+}
+
+int pa_database_unset(pa_database *database, const pa_datum *key) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ e = pa_hashmap_remove(db->map, key);
+ if (!e)
+ return -1;
+
+ free_entry(e);
+
+ return 0;
+}
+
+int pa_database_clear(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+
+ while ((e = pa_hashmap_steal_first(db->map)))
+ free_entry(e);
+
+ return 0;
+}
+
+signed pa_database_size(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ pa_assert(db);
+
+ return (signed) pa_hashmap_size(db->map);
+}
+
+pa_datum* pa_database_first(pa_database *database, pa_datum *key, pa_datum *data) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+
+ pa_assert(db);
+ pa_assert(key);
+
+ e = pa_hashmap_first(db->map);
+
+ if (!e)
+ return NULL;
+
+ key->data = e->key.size > 0 ? pa_xmemdup(e->key.data, e->key.size) : NULL;
+ key->size = e->key.size;
+
+ if (data) {
+ data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL;
+ data->size = e->data.size;
+ }
+
+ return key;
+}
+
+pa_datum* pa_database_next(pa_database *database, const pa_datum *key, pa_datum *next, pa_datum *data) {
+ simple_data *db = (simple_data*)database;
+ entry *e;
+ entry *search;
+ void *state;
+ pa_bool_t pick_now;
+
+ pa_assert(db);
+ pa_assert(next);
+
+ if (!key)
+ return pa_database_first(database, next, data);
+
+ search = pa_hashmap_get(db->map, key);
+
+ state = NULL;
+ pick_now = FALSE;
+
+ while ((e = pa_hashmap_iterate(db->map, &state, NULL))) {
+ if (pick_now)
+ break;
+
+ if (search == e)
+ pick_now = TRUE;
+ }
+
+ if (!pick_now || !e)
+ return NULL;
+
+ next->data = e->key.size > 0 ? pa_xmemdup(e->key.data, e->key.size) : NULL;
+ next->size = e->key.size;
+
+ if (data) {
+ data->data = e->data.size > 0 ? pa_xmemdup(e->data.data, e->data.size) : NULL;
+ data->size = e->data.size;
+ }
+
+ return next;
+}
+
+static int write_uint(FILE *f, const uint32_t num) {
+ size_t items;
+ uint8_t values[4];
+ int i;
+ errno = 0;
+
+ for (i = 0; i < 4; i++)
+ values[i] = (num >> (i*8)) & 0xFF;
+
+ items = fwrite(&values, sizeof(values), sizeof(uint8_t), f);
+
+ if (ferror(f))
+ return -1;
+
+ return items;
+}
+
+static int write_data(FILE *f, void *data, const size_t length) {
+ size_t items;
+ uint32_t len;
+
+ len = length;
+ if ((items = write_uint(f, len)) <= 0)
+ return -1;
+
+ items = fwrite(data, length, 1, f);
+
+ if (ferror(f) || items != 1)
+ return -1;
+
+ return 0;
+}
+
+static int write_entry(FILE *f, const entry *e) {
+ pa_assert(f);
+ pa_assert(e);
+
+ if (write_data(f, e->key.data, e->key.size) < 0)
+ return -1;
+ if (write_data(f, e->data.data, e->data.size) < 0)
+ return -1;
+
+ return 0;
+}
+
+int pa_database_sync(pa_database *database) {
+ simple_data *db = (simple_data*)database;
+ FILE *f;
+ void *state;
+ entry *e;
+
+ pa_assert(db);
+
+ if (db->read_only)
+ return 0;
+
+ errno = 0;
+
+ f = fopen(db->tmp_filename, "w");
+
+ if (!f)
+ goto fail;
+
+ state = NULL;
+ while((e = pa_hashmap_iterate(db->map, &state, NULL))) {
+ if (write_entry(f, e) < 0) {
+ pa_log_warn("error while writing to file. %s", pa_cstrerror(errno));
+ goto fail;
+ }
+ }
+
+ fclose(f);
+ f = NULL;
+
+ if (rename(db->tmp_filename, db->filename) < 0) {
+ pa_log_warn("error while renaming file. %s", pa_cstrerror(errno));
+ goto fail;
+ }
+
+ return 0;
+
+fail:
+ if (f)
+ fclose(f);
+ return -1;
+}
commit fd32fee4488b1e06d0a64079485aa77f0c87164b
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Mon Jul 6 17:50:51 2009 +0300
bluetooth: don't call pa_sink_render with 0 bytes request
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 93b14a1..d983185 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1319,18 +1319,21 @@ static void thread_func(void *userdata) {
if (u->write_index > 0 && audio_to_send > MAX_PLAYBACK_CATCH_UP_USEC) {
pa_usec_t skip_usec;
uint64_t skip_bytes;
- pa_memchunk tmp;
skip_usec = audio_to_send - MAX_PLAYBACK_CATCH_UP_USEC;
skip_bytes = pa_usec_to_bytes(skip_usec, &u->sample_spec);
- pa_log_warn("Skipping %llu us (= %llu bytes) in audio stream",
- (unsigned long long) skip_usec,
- (unsigned long long) skip_bytes);
+ if (skip_bytes > 0) {
+ pa_memchunk tmp;
- pa_sink_render_full(u->sink, skip_bytes, &tmp);
- pa_memblock_unref(tmp.memblock);
- u->write_index += skip_bytes;
+ pa_log_warn("Skipping %llu us (= %llu bytes) in audio stream",
+ (unsigned long long) skip_usec,
+ (unsigned long long) skip_bytes);
+
+ pa_sink_render_full(u->sink, skip_bytes, &tmp);
+ pa_memblock_unref(tmp.memblock);
+ u->write_index += skip_bytes;
+ }
}
do_write = 1;
commit 3ecb80e19ab9aa678b7db6a5068553d956d707fa
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Mon Jul 20 13:44:27 2009 +0300
bluetooth: fix typo with service_{read,write}_type
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index d983185..5f119c7 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1739,7 +1739,8 @@ static void shutdown_bt(struct userdata *u) {
if (u->service_fd >= 0) {
pa_close(u->service_fd);
u->service_fd = -1;
- u->service_write_type = u->service_write_type = 0;
+ u->service_write_type = 0;
+ u->service_read_type = 0;
}
if (u->write_memchunk.memblock) {
@@ -1755,7 +1756,8 @@ static int init_bt(struct userdata *u) {
shutdown_bt(u);
u->stream_write_type = 0;
- u->service_write_type = u->service_write_type = 0;
+ u->service_write_type = 0;
+ u->service_read_type = 0;
if ((u->service_fd = bt_audio_service_open()) < 0) {
pa_log_error("Couldn't connect to bluetooth audio service");
commit d8a90a390041b5603a7caacaaea8296fa76363bc
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Mon Jul 20 13:53:17 2009 +0300
pulse: even in case of record stream, let's initialize req_bytes to 0
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 72d49e1..2bc2b1e 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -867,7 +867,7 @@ static void automatic_buffer_attr(pa_stream *s, pa_buffer_attr *attr, const pa_s
void pa_create_stream_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) {
pa_stream *s = userdata;
- uint32_t requested_bytes;
+ uint32_t requested_bytes = 0;
pa_assert(pd);
pa_assert(s);
commit 0c08dbd9b926ec94084dd47069627ed6eda1c1d1
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 03:41:13 2009 +0200
core: introduce pa_{sink|source}_update_flags()
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index c1589f2..c79aa79 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -551,7 +551,7 @@ static void sink_free(pa_object *o) {
pa_xfree(s);
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
pa_sink_assert_ref(s);
pa_assert_ctl_context();
@@ -562,6 +562,26 @@ void pa_sink_set_asyncmsgq(pa_sink *s, pa_asyncmsgq *q) {
pa_source_set_asyncmsgq(s->monitor_source, q);
}
+/* Called from main context, and not while the IO thread is active, please */
+void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value) {
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (mask == 0)
+ return;
+
+ /* For now, allow only a minimal set of flags to be changed. */
+ pa_assert((mask & ~(PA_SINK_DYNAMIC_LATENCY|PA_SINK_LATENCY)) == 0);
+
+ s->flags = (s->flags & ~mask) | (value & mask);
+
+ pa_source_update_flags(s->monitor_source,
+ ((mask & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) |
+ ((mask & PA_SINK_DYNAMIC_LATENCY) ? PA_SOURCE_DYNAMIC_LATENCY : 0),
+ ((value & PA_SINK_LATENCY) ? PA_SOURCE_LATENCY : 0) |
+ ((value & PA_SINK_DYNAMIC_LATENCY) ? PA_SINK_DYNAMIC_LATENCY : 0));
+}
+
/* Called from IO context, or before _put() from main context */
void pa_sink_set_rtpoll(pa_sink *s, pa_rtpoll *p) {
pa_sink_assert_ref(s);
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 55bca7f..3cd7e59 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -282,6 +282,8 @@ void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume);
void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume);
void pa_sink_mute_changed(pa_sink *s, pa_bool_t new_muted);
+void pa_sink_update_flags(pa_sink *s, pa_sink_flags_t mask, pa_sink_flags_t value);
+
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);
pa_bool_t pa_device_init_intended_roles(pa_proplist *p);
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 8970d8e..46f049e 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -461,7 +461,7 @@ static void source_free(pa_object *o) {
pa_xfree(s);
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) {
pa_source_assert_ref(s);
pa_assert_ctl_context();
@@ -469,7 +469,21 @@ void pa_source_set_asyncmsgq(pa_source *s, pa_asyncmsgq *q) {
s->asyncmsgq = q;
}
-/* Called from main context */
+/* Called from main context, and not while the IO thread is active, please */
+void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flags_t value) {
+ pa_source_assert_ref(s);
+ pa_assert_ctl_context();
+
+ if (mask == 0)
+ return;
+
+ /* For now, allow only a minimal set of flags to be changed. */
+ pa_assert((mask & ~(PA_SOURCE_DYNAMIC_LATENCY|PA_SOURCE_LATENCY)) == 0);
+
+ s->flags = (s->flags & ~mask) | (value & mask);
+}
+
+/* Called from IO context, or before _put() from main context */
void pa_source_set_rtpoll(pa_source *s, pa_rtpoll *p) {
pa_source_assert_ref(s);
pa_source_assert_io_context(s);
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index bb085a0..6f33de0 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -246,6 +246,8 @@ void pa_source_mute_changed(pa_source *s, pa_bool_t new_muted);
int pa_source_sync_suspend(pa_source *s);
+void pa_source_update_flags(pa_source *s, pa_source_flags_t mask, pa_source_flags_t value);
+
/*** May be called by everyone, from main context */
/* The returned value is supposed to be in the time domain of the sound card! */
commit e5b08a81d23d94c668fdfabc4c6c196e14640869
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 03:42:16 2009 +0200
ladspa/remap: sync latency flags from master sink when moving between sinks
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 3c6e349..f2d53d0 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -391,6 +391,7 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
pa_assert_se(u = i->userdata);
pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+ pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
}
int pa__init(pa_module*m) {
diff --git a/src/modules/module-remap-sink.c b/src/modules/module-remap-sink.c
index 7b4c9bb..0b4fdc9 100644
--- a/src/modules/module-remap-sink.c
+++ b/src/modules/module-remap-sink.c
@@ -303,6 +303,7 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) {
pa_assert_se(u = i->userdata);
pa_sink_set_asyncmsgq(u->sink, dest->asyncmsgq);
+ pa_sink_update_flags(u->sink, PA_SINK_LATENCY|PA_SINK_DYNAMIC_LATENCY, dest->flags);
}
int pa__init(pa_module*m) {
commit 0c20e740f64bac462463552c0b7e056848b78836
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 22:22:57 2009 +0200
asyncmsgq: introduce pa_asyncmsgq_dispatching()
diff --git a/src/pulsecore/asyncmsgq.c b/src/pulsecore/asyncmsgq.c
index 3672140..b0804f7 100644
--- a/src/pulsecore/asyncmsgq.c
+++ b/src/pulsecore/asyncmsgq.c
@@ -351,3 +351,9 @@ void pa_asyncmsgq_flush(pa_asyncmsgq *a, pa_bool_t run) {
pa_asyncmsgq_unref(a);
}
}
+
+pa_bool_t pa_asyncmsgq_dispatching(pa_asyncmsgq *a) {
+ pa_assert(PA_REFCNT_VALUE(a) > 0);
+
+ return !!a->current;
+}
diff --git a/src/pulsecore/asyncmsgq.h b/src/pulsecore/asyncmsgq.h
index 26f528f..1085c2f 100644
--- a/src/pulsecore/asyncmsgq.h
+++ b/src/pulsecore/asyncmsgq.h
@@ -78,4 +78,6 @@ int pa_asyncmsgq_write_fd(pa_asyncmsgq *q);
void pa_asyncmsgq_write_before_poll(pa_asyncmsgq *a);
void pa_asyncmsgq_write_after_poll(pa_asyncmsgq *a);
+pa_bool_t pa_asyncmsgq_dispatching(pa_asyncmsgq *a);
+
#endif
commit 011add1c838f65e87a7abaec2792f510d3b0bb20
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 22:23:42 2009 +0200
thread-mq: do final q flush only when we aren't dispatching anyway
diff --git a/src/pulsecore/thread-mq.c b/src/pulsecore/thread-mq.c
index ec67ae8..73997a7 100644
--- a/src/pulsecore/thread-mq.c
+++ b/src/pulsecore/thread-mq.c
@@ -59,7 +59,7 @@ static void asyncmsgq_read_cb(pa_mainloop_api*api, pa_io_event* e, int fd, pa_io
pa_memchunk chunk;
/* Check whether there is a message for us to process */
- while (pa_asyncmsgq_get(aq, &object, &code, &data, &offset, &chunk, 0) == 0) {
+ while (pa_asyncmsgq_get(aq, &object, &code, &data, &offset, &chunk, 0) >= 0) {
int ret;
ret = pa_asyncmsgq_dispatch(object, code, data, offset, &chunk);
@@ -107,9 +107,11 @@ void pa_thread_mq_done(pa_thread_mq *q) {
/* Since we are called from main context we can be sure that the
* inq is empty. However, the outq might still contain messages
* for the main loop, which we need to dispatch (e.g. release
- * msgs, other stuff). Hence do so. */
+ * msgs, other stuff). Hence do so if we aren't currently
+ * dispatching anyway. */
- pa_asyncmsgq_flush(q->outq, TRUE);
+ if (!pa_asyncmsgq_dispatching(q->outq))
+ pa_asyncmsgq_flush(q->outq, TRUE);
q->mainloop->io_free(q->read_event);
q->mainloop->io_free(q->write_event);
commit 5c90cf2d6a148d5450b4d05edfc98d32ae83a854
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 22:24:13 2009 +0200
bluetooth: drop PA_BT_AUDIO_STATE_LAST since it is unused and we normally call that _MAX anyway
diff --git a/src/modules/bluetooth/bluetooth-util.h b/src/modules/bluetooth/bluetooth-util.h
index 265caf4..f15f217 100644
--- a/src/modules/bluetooth/bluetooth-util.h
+++ b/src/modules/bluetooth/bluetooth-util.h
@@ -59,8 +59,7 @@ typedef enum pa_bt_audio_state {
PA_BT_AUDIO_STATE_DISCONNECTED,
PA_BT_AUDIO_STATE_CONNECTING,
PA_BT_AUDIO_STATE_CONNECTED,
- PA_BT_AUDIO_STATE_PLAYING,
- PA_BT_AUDIO_STATE_LAST
+ PA_BT_AUDIO_STATE_PLAYING
} pa_bt_audio_state_t;
struct pa_bluetooth_device {
commit fa52a91b1a1d89e0a99faeea821d3e1a3597eb9a
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 22:25:21 2009 +0200
bluetooth: recognize only those BT devices that implement both the Audio and either AudioSink or Headset interfaces
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 66e1c31..d5806b9 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -122,9 +122,9 @@ static pa_bool_t device_is_audio(pa_bluetooth_device *d) {
return
d->device_info_valid &&
- (d->audio_state != PA_BT_AUDIO_STATE_INVALID ||
- d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID ||
- d->headset_state != PA_BT_AUDIO_STATE_INVALID);
+ (d->audio_state != PA_BT_AUDIO_STATE_INVALID &&
+ (d->audio_sink_state != PA_BT_AUDIO_STATE_INVALID ||
+ d->headset_state != PA_BT_AUDIO_STATE_INVALID));
}
static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device *d, DBusMessageIter *i) {
commit de4968cdded8d78fe2e59b4487a21937b843c570
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Aug 15 22:25:53 2009 +0200
bluetooth: ask first for Headset and AudioSink properties, followed by Audio
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index d5806b9..16c2924 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -226,10 +226,6 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
node = uuid_new(value);
PA_LLIST_PREPEND(pa_bluetooth_uuid, d->uuids, node);
- /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */
- pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties"));
- send_and_add_to_pending(y, d, m, get_properties_reply);
-
/* Vudentz said the interfaces are here when the UUIDs are announced */
if (strcasecmp(HSP_HS_UUID, value) == 0 || strcasecmp(HFP_HS_UUID, value) == 0) {
pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Headset", "GetProperties"));
@@ -239,6 +235,10 @@ static int parse_device_property(pa_bluetooth_discovery *y, pa_bluetooth_device
send_and_add_to_pending(y, d, m, get_properties_reply);
}
+ /* this might eventually be racy if .Audio is not there yet, but the State change will come anyway later, so this call is for cold-detection mostly */
+ pa_assert_se(m = dbus_message_new_method_call("org.bluez", d->path, "org.bluez.Audio", "GetProperties"));
+ send_and_add_to_pending(y, d, m, get_properties_reply);
+
if (!dbus_message_iter_next(&ai))
break;
}
commit 2a39663ab61614982c52e244bde596dcc1a08f37
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Aug 16 00:43:22 2009 +0200
bluetooth: move installation of mq's earlier to avoid context asserts to be triggered
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 5f119c7..d6321fc 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1262,11 +1262,11 @@ static void thread_func(void *userdata) {
if (u->core->realtime_scheduling)
pa_make_realtime(u->core->realtime_priority);
+ pa_thread_mq_install(&u->thread_mq);
+
if (start_stream_fd(u) < 0)
goto fail;
- pa_thread_mq_install(&u->thread_mq);
-
for (;;) {
struct pollfd *pollfd;
int ret;
commit 4c29ba9c332dd682ced5ed668aede16aa5861128
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Aug 16 00:45:23 2009 +0200
modules: add various checks to avoid selecting objects that are not linked or in another unclear state
diff --git a/src/modules/module-intended-roles.c b/src/modules/module-intended-roles.c
index c697209..b9924df 100644
--- a/src/modules/module-intended-roles.c
+++ b/src/modules/module-intended-roles.c
@@ -127,6 +127,9 @@ static pa_hook_result_t sink_input_new_hook_callback(pa_core *c, pa_sink_input_n
if (s == def)
continue;
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(s)))
+ continue;
+
if (role_match(s->proplist, role)) {
new_data->sink = s;
new_data->save_sink = FALSE;
@@ -173,6 +176,9 @@ static pa_hook_result_t source_output_new_hook_callback(pa_core *c, pa_source_ou
if (s == def)
continue;
+ if (!PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ continue;
+
if (role_match(s->proplist, role)) {
new_data->source = s;
new_data->save_source = FALSE;
@@ -201,6 +207,17 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct
if (si->save_sink)
continue;
+ /* Skip this if it is already in the process of being moved
+ * anyway */
+ if (!si->sink)
+ continue;
+
+ /* It might happen that a stream and a sink are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SINK_INPUT_IS_LINKED(pa_sink_input_get_state(si)))
+ continue;
+
if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE)))
continue;
@@ -237,6 +254,17 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
if (so->direct_on_input)
continue;
+ /* Skip this if it is already in the process of being moved
+ * anyway */
+ if (!so->source)
+ continue;
+
+ /* It might happen that a stream and a source are set up at the
+ same time, in which case we want to make sure we don't
+ interfere with that */
+ if (!PA_SOURCE_OUTPUT_IS_LINKED(pa_source_output_get_state(so)))
+ continue;
+
if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE)))
continue;
@@ -275,24 +303,28 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str
uint32_t jdx;
pa_sink *d;
+ if (!si->sink)
+ continue;
+
if (!(role = pa_proplist_gets(si->proplist, PA_PROP_MEDIA_ROLE)))
continue;
/* Would the default sink fit? If so, let's use it */
- if (def != sink && role_match(def->proplist, role)) {
- pa_sink_input_move_to(si, def, FALSE);
- continue;
- }
+ if (def != sink && role_match(def->proplist, role))
+ if (pa_sink_input_move_to(si, def, FALSE) >= 0)
+ continue;
/* Try to find some other fitting sink */
PA_IDXSET_FOREACH(d, c->sinks, jdx) {
if (d == def || d == sink)
continue;
- if (role_match(d->proplist, role)) {
- pa_sink_input_move_to(si, d, FALSE);
- break;
- }
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(d)))
+ continue;
+
+ if (role_match(d->proplist, role))
+ if (pa_sink_input_move_to(si, d, FALSE) >= 0)
+ break;
}
}
@@ -325,6 +357,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
if (so->direct_on_input)
continue;
+ if (!so->source)
+ continue;
+
if (!(role = pa_proplist_gets(so->proplist, PA_PROP_MEDIA_ROLE)))
continue;
@@ -339,6 +374,9 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
if (d == def || d == source)
continue;
+ if (!PA_SOURCE_IS_LINKED(pa_source_get_state(d)))
+ continue;
+
if (role_match(d->proplist, role) && !source->monitor_of == !d->monitor_of) {
pa_source_output_move_to(so, d, FALSE);
break;
diff --git a/src/modules/module-rescue-streams.c b/src/modules/module-rescue-streams.c
index 82f693f..722d84b 100644
--- a/src/modules/module-rescue-streams.c
+++ b/src/modules/module-rescue-streams.c
@@ -71,6 +71,9 @@ static pa_sink* find_evacuation_sink(pa_core *c, pa_sink_input *i, pa_sink *skip
if (target == skip)
continue;
+ if (!PA_SINK_IS_LINKED(pa_sink_get_state(target)))
+ continue;
+
if (pa_sink_input_may_move_to(i, target))
return target;
}
@@ -159,6 +162,9 @@ static pa_source* find_evacuation_source(pa_core *c, pa_source_output *o, pa_sou
if (!target->monitor_of != !skip->monitor_of)
continue;
+ if (!PA_SOURCE_IS_LINKED(pa_source_get_state(target)))
+ continue;
+
if (pa_source_output_may_move_to(o, target))
return target;
}
diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c
index 727a527..e560bd2 100644
--- a/src/modules/module-stream-restore.c
+++ b/src/modules/module-stream-restore.c
@@ -540,6 +540,11 @@ static pa_hook_result_t sink_put_hook_callback(pa_core *c, pa_sink *sink, struct
if (si->save_sink)
continue;
+ /* Skip this if it is already in the process of being moved
+ * anyway */
+ if (!si->sink)
+ continue;
+
/* It might happen that a stream and a sink are set up at the
same time, in which case we want to make sure we don't
interfere with that */
@@ -584,6 +589,10 @@ static pa_hook_result_t source_put_hook_callback(pa_core *c, pa_source *source,
if (so->direct_on_input)
continue;
+ /* Skip this if it is already in the process of being moved anyway */
+ if (!so->source)
+ continue;
+
/* It might happen that a stream and a sink are set up at the
same time, in which case we want to make sure we don't
interfere with that */
@@ -623,6 +632,9 @@ static pa_hook_result_t sink_unlink_hook_callback(pa_core *c, pa_sink *sink, str
char *name;
struct entry *e;
+ if (!si->sink)
+ continue;
+
if (!(name = get_name(si->proplist, "sink-input")))
continue;
@@ -663,6 +675,12 @@ static pa_hook_result_t source_unlink_hook_callback(pa_core *c, pa_source *sourc
char *name;
struct entry *e;
+ if (so->direct_on_input)
+ continue;
+
+ if (!so->source)
+ continue;
+
if (!(name = get_name(so->proplist, "source-output")))
continue;
diff --git a/src/pulsecore/namereg.c b/src/pulsecore/namereg.c
index 9df2f58..e26923d 100644
--- a/src/pulsecore/namereg.c
+++ b/src/pulsecore/namereg.c
@@ -223,6 +223,9 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type) {
pa_sink* pa_namereg_set_default_sink(pa_core*c, pa_sink *s) {
pa_assert(c);
+ if (s && !PA_SINK_IS_LINKED(pa_sink_get_state(s)))
+ return NULL;
+
if (c->default_sink != s) {
c->default_sink = s;
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX);
@@ -234,6 +237,9 @@ pa_sink* pa_namereg_set_default_sink(pa_core*c, pa_sink *s) {
pa_source* pa_namereg_set_default_source(pa_core*c, pa_source *s) {
pa_assert(c);
+ if (s && !PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ return NULL;
+
if (c->default_source != s) {
c->default_source = s;
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SERVER|PA_SUBSCRIPTION_EVENT_CHANGE, PA_INVALID_INDEX);
@@ -244,14 +250,19 @@ pa_source* pa_namereg_set_default_source(pa_core*c, pa_source *s) {
pa_sink *pa_namereg_get_default_sink(pa_core *c) {
pa_sink *s;
+ uint32_t idx;
pa_assert(c);
- if (c->default_sink)
+ if (c->default_sink && PA_SINK_IS_LINKED(pa_sink_get_state(c->default_sink)))
return c->default_sink;
- if ((s = pa_idxset_first(c->sinks, NULL)))
- return pa_namereg_set_default_sink(c, s);
+ /* FIXME: the selection here should be based priority values on
+ * the sinks */
+
+ PA_IDXSET_FOREACH(s, c->sinks, idx)
+ if (PA_SINK_IS_LINKED(pa_sink_get_state(s)))
+ return pa_namereg_set_default_sink(c, s);
return NULL;
}
@@ -262,15 +273,18 @@ pa_source *pa_namereg_get_default_source(pa_core *c) {
pa_assert(c);
- if (c->default_source)
+ if (c->default_source && PA_SOURCE_IS_LINKED(pa_source_get_state(c->default_source)))
return c->default_source;
- for (s = PA_SOURCE(pa_idxset_first(c->sources, &idx)); s; s = PA_SOURCE(pa_idxset_next(c->sources, &idx)))
- if (!s->monitor_of)
+ /* First, try to find one that isn't a monitor */
+ PA_IDXSET_FOREACH(s, c->sources, idx)
+ if (!s->monitor_of && PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
return pa_namereg_set_default_source(c, s);
- if ((s = pa_idxset_first(c->sources, NULL)))
- return pa_namereg_set_default_source(c, s);
+ /* Then, fallback to a monitor */
+ PA_IDXSET_FOREACH(s, c->sources, idx)
+ if (PA_SOURCE_IS_LINKED(pa_source_get_state(s)))
+ return pa_namereg_set_default_source(c, s);
return NULL;
}
commit 8dd0d871a7dd2d97c63ec8e38e1b408637d1b639
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Aug 16 00:45:56 2009 +0200
core: add to FIXMEs
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index c182083..b5502c4 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -42,6 +42,7 @@ typedef enum pa_sink_input_state {
PA_SINK_INPUT_RUNNING, /*< The stream is alive and kicking */
PA_SINK_INPUT_CORKED, /*< The stream was corked on user request */
PA_SINK_INPUT_UNLINKED /*< The stream is dead */
+ /* FIXME: we need a state for MOVING here */
} pa_sink_input_state_t;
static inline pa_bool_t PA_SINK_INPUT_IS_LINKED(pa_sink_input_state_t x) {
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index c79aa79..717584f 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -307,6 +307,7 @@ pa_sink* pa_sink_new(
s->thread_info.max_latency = ABSOLUTE_MAX_LATENCY;
s->thread_info.fixed_latency = flags & PA_SINK_DYNAMIC_LATENCY ? 0 : DEFAULT_FIXED_LATENCY;
+ /* FIXME: This should probably be moved to pa_sink_put() */
pa_assert_se(pa_idxset_put(core->sinks, s, &s->index) >= 0);
if (s->card)
commit 01e4b61a910afdd21f860fadbe98075735c2bf51
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Aug 16 02:02:51 2009 +0200
aupdate: implicitly call _write_swap() if it wasn't called explicitly
diff --git a/src/pulsecore/aupdate.c b/src/pulsecore/aupdate.c
index 56ebb8e..85b6e00 100644
--- a/src/pulsecore/aupdate.c
+++ b/src/pulsecore/aupdate.c
@@ -39,6 +39,7 @@ struct pa_aupdate {
pa_atomic_t read_lock;
pa_mutex *write_lock;
pa_semaphore *semaphore;
+ pa_bool_t swapped;
};
pa_aupdate *pa_aupdate_new(void) {
@@ -101,6 +102,8 @@ unsigned pa_aupdate_write_begin(pa_aupdate *a) {
n = (unsigned) pa_atomic_load(&a->read_lock);
+ a->swapped = FALSE;
+
return !WHICH(n);
}
@@ -119,11 +122,16 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a) {
break;
}
+ a->swapped = TRUE;
+
return WHICH(n);
}
void pa_aupdate_write_end(pa_aupdate *a) {
pa_assert(a);
+ if (!a->swapped)
+ pa_aupdate_write_swap(a);
+
pa_mutex_unlock(a->write_lock);
}
diff --git a/src/pulsecore/aupdate.h b/src/pulsecore/aupdate.h
index 072e382..fb38ffa 100644
--- a/src/pulsecore/aupdate.h
+++ b/src/pulsecore/aupdate.h
@@ -93,6 +93,10 @@ unsigned pa_aupdate_write_swap(pa_aupdate *a);
* pa_update_write_end(a)
* }
*
+ * In some cases keeping both structures up-to-date might not be
+ * necessary, since they are fully rebuilt on each iteration
+ * anyway. In that case you may leave the _write_swap() call out, it
+ * will then be done implicitly in the _write_end() invocation.
*/
#endif
commit 82082148821d5ebe05fea12fd57d68b31740e04b
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:40:36 2009 +0200
volume: add pa_cvolume_merge() call
diff --git a/src/map-file b/src/map-file
index c6c8acc..4f20c48 100644
--- a/src/map-file
+++ b/src/map-file
@@ -130,6 +130,7 @@ pa_cvolume_get_position;
pa_cvolume_init;
pa_cvolume_max;
pa_cvolume_max_mask;
+pa_cvolume_merge;
pa_cvolume_remap;
pa_cvolume_scale;
pa_cvolume_scale_mask;
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index c23f360..e816d67 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -815,3 +815,21 @@ pa_volume_t pa_cvolume_get_position(
return v;
}
+
+pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
+ unsigned i;
+
+ pa_assert(dest);
+ pa_assert(a);
+ pa_assert(b);
+
+ pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
+ pa_return_val_if_fail(pa_cvolume_valid(b), NULL);
+
+ for (i = 0; i < a->channels && i < b->channels; i++)
+ dest->values[i] = PA_MAX(a->values[i], b->values[i]);
+
+ dest->channels = (uint8_t) i;
+
+ return dest;
+}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 05b7ebb..14692b8 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -326,6 +326,11 @@ pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, p
* position by calling pa_channel_map_has_position(). \since 0.9.16 */
pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) PA_GCC_PURE;
+/** This goes through all channels in a and b and sets the
+ * corresponding channel in dest to the greater volume of both. a, b
+ * and dest may point to the same structure. \since 0.9.16 */
+pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+
PA_C_DECL_END
#endif
commit c579cb56e941e759b71b393eae1bc98d5deb8a1b
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:41:14 2009 +0200
reserver: update from upstream git
diff --git a/src/modules/reserve-monitor.c b/src/modules/reserve-monitor.c
index 13ecde2..97cb9b9 100644
--- a/src/modules/reserve-monitor.c
+++ b/src/modules/reserve-monitor.c
@@ -38,6 +38,7 @@ struct rm_monitor {
char *device_name;
char *service_name;
+ char *match;
DBusConnection *connection;
@@ -51,6 +52,13 @@ struct rm_monitor {
#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
+#define SERVICE_FILTER \
+ "type='signal'," \
+ "sender='" DBUS_SERVICE_DBUS "'," \
+ "interface='" DBUS_INTERFACE_DBUS "'," \
+ "member='NameOwnerChanged'," \
+ "arg0='%s'"
+
static DBusHandlerResult filter_handler(
DBusConnection *c,
DBusMessage *s,
@@ -175,11 +183,13 @@ int rm_watch(
m->filtering = 1;
- dbus_bus_add_match(m->connection,
- "type='signal',"
- "sender='" DBUS_SERVICE_DBUS "',"
- "interface='" DBUS_INTERFACE_DBUS "',"
- "member='NameOwnerChanged'", error);
+ if (!(m->match = malloc(sizeof(SERVICE_FILTER) - 2 + strlen(m->service_name)))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ sprintf(m->match, SERVICE_FILTER, m->service_name);
+ dbus_bus_add_match(m->connection, m->match, error);
if (dbus_error_is_set(error)) {
r = -EIO;
@@ -220,10 +230,8 @@ void rm_release(rm_monitor *m) {
if (m->matching)
dbus_bus_remove_match(
m->connection,
- "type='signal',"
- "sender='" DBUS_SERVICE_DBUS "',"
- "interface='" DBUS_INTERFACE_DBUS "',"
- "member='NameOwnerChanged'", NULL);
+ m->match,
+ NULL);
if (m->filtering)
dbus_connection_remove_filter(
@@ -233,6 +241,7 @@ void rm_release(rm_monitor *m) {
free(m->device_name);
free(m->service_name);
+ free(m->match);
if (m->connection)
dbus_connection_unref(m->connection);
commit 32a1ef311effac8cf792fc7d536f6e1e85dec805
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:42:34 2009 +0200
channelmap: adjust RFC3551 channel maps to follow spec more closely
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index 8882301..18053ec 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -219,11 +219,11 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
case 6:
m->map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;
- m->map[1] = PA_CHANNEL_POSITION_REAR_LEFT;
+ m->map[1] = PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
m->map[2] = PA_CHANNEL_POSITION_FRONT_CENTER;
m->map[3] = PA_CHANNEL_POSITION_FRONT_RIGHT;
- m->map[4] = PA_CHANNEL_POSITION_REAR_RIGHT;
- m->map[5] = PA_CHANNEL_POSITION_LFE;
+ m->map[4] = PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
+ m->map[5] = PA_CHANNEL_POSITION_REAR_CENTER;
return m;
case 5:
@@ -247,7 +247,7 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
m->map[0] = PA_CHANNEL_POSITION_LEFT;
m->map[1] = PA_CHANNEL_POSITION_CENTER;
m->map[2] = PA_CHANNEL_POSITION_RIGHT;
- m->map[3] = PA_CHANNEL_POSITION_LFE;
+ m->map[3] = PA_CHANNEL_POSITION_REAR_CENTER;
return m;
default:
commit 6dd580d465cd91c2d32bc897c0eb20fc638e446e
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:43:05 2009 +0200
channelmap: document where the WAVEX channelmap is documented
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index 18053ec..98f79b4 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -299,6 +299,8 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
case PA_CHANNEL_MAP_WAVEEX:
+ /* Following http://www.microsoft.com/whdc/device/audio/multichaud.mspx#EKLAC */
+
switch (channels) {
case 1:
m->map[0] = PA_CHANNEL_POSITION_MONO;
commit 50de2d85f955d06cf2c4b88270674c72a974bf71
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:48:51 2009 +0200
channelmap: minor doxygen fix
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index d7901ac..469effc 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -216,17 +216,27 @@ typedef enum pa_channel_map_def {
PA_CHANNEL_MAP_AIFF,
/**< The mapping from RFC3551, which is based on AIFF-C */
+/** \cond fulldocs */
PA_CHANNEL_MAP_ALSA,
- /**< The default mapping used by ALSA */
+ /**< The default mapping used by ALSA. This mapping is probably
+ * not too useful since ALSA's default channel mapping depends on
+ * the device string used. */
+/** \endcond */
PA_CHANNEL_MAP_AUX,
/**< Only aux channels */
PA_CHANNEL_MAP_WAVEEX,
- /**< Microsoft's WAVEFORMATEXTENSIBLE mapping */
+ /**< Microsoft's WAVEFORMATEXTENSIBLE mapping. This mapping works
+ * as if all LSBs of dwChannelMask are set. */
+/** \cond fulldocs */
PA_CHANNEL_MAP_OSS,
- /**< The default channel mapping used by OSS as defined in the OSS 4.0 API specs */
+ /**< The default channel mapping used by OSS as defined in the OSS
+ * 4.0 API specs. This mapping is probably not too useful since
+ * the OSS API has changed in this respect and no longer knows a
+ * default channel mapping based on the number of channels. */
+/** \endcond */
/**< Upper limit of valid channel mapping definitions */
PA_CHANNEL_MAP_DEF_MAX,
@@ -282,7 +292,7 @@ pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels,
/** Return a text label for the specified channel position */
const char* pa_channel_position_to_string(pa_channel_position_t pos) PA_GCC_PURE;
-/* The inverse of pa_channel_position_to_string(). \since 0.9.16 */
+/** The inverse of pa_channel_position_to_string(). \since 0.9.16 */
pa_channel_position_t pa_channel_position_from_string(const char *s) PA_GCC_PURE;
/** Return a human readable text label for the specified channel position. \since 0.9.7 */
commit caa792897296f0b03b364ec64ce9065b010e1305
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:50:04 2009 +0200
libpulse: some minor optimizations when checking equality
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index 98f79b4..9b51626 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -453,6 +453,10 @@ int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) {
pa_assert(b);
pa_return_val_if_fail(pa_channel_map_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_channel_map_valid(b), 0);
if (a->channels != b->channels)
@@ -641,6 +645,10 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
pa_assert(b);
pa_return_val_if_fail(pa_channel_map_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_channel_map_valid(b), 0);
am = pa_channel_map_mask(a);
diff --git a/src/pulse/sample.c b/src/pulse/sample.c
index 0f19f8e..d5d38ed 100644
--- a/src/pulse/sample.c
+++ b/src/pulse/sample.c
@@ -125,6 +125,10 @@ int pa_sample_spec_equal(const pa_sample_spec*a, const pa_sample_spec*b) {
pa_assert(b);
pa_return_val_if_fail(pa_sample_spec_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_sample_spec_valid(b), 0);
return
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index e816d67..d7fb247 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -40,6 +40,10 @@ int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) {
pa_assert(b);
pa_return_val_if_fail(pa_cvolume_valid(a), 0);
+
+ if (PA_UNLIKELY(a == b))
+ return 1;
+
pa_return_val_if_fail(pa_cvolume_valid(b), 0);
if (a->channels != b->channels)
commit ffeb1b81ba2ce01ba3ed73fcd9ce0977861ee7ba
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:50:43 2009 +0200
volume: document when arguments of certain functions may overlap
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 14692b8..3881da2 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -213,11 +213,13 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) PA_GCC_PURE
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
/** Multiply two per-channel volumes and return the result in
- * *dest. This is only valid for software volumes! */
+ * *dest. This is only valid for software volumes! a, b and dest may
+ * point to the same structure. */
pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
/** Multiply a per-channel volume with a scalar volume and return the
- * result in *dest. This is only valid for software volumes! \since
+ * result in *dest. This is only valid for software volumes! a
+ * and dest may point to the same structure. \since
* 0.9.16 */
pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
@@ -228,11 +230,13 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a,
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) PA_GCC_CONST;
/** Divide two per-channel volumes and return the result in
- * *dest. This is only valid for software volumes! \since 0.9.13 */
+ * *dest. This is only valid for software volumes! a, b
+ * and dest may point to the same structure. \since 0.9.13 */
pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
/** Divide a per-channel volume by a scalar volume and return the
- * result in *dest. This is only valid for software volumes! \since
+ * result in *dest. This is only valid for software volumes! a
+ * and dest may point to the same structure. \since
* 0.9.16 */
pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
commit 90a07435d3a1c5660ebb4bac571267a62187ea2e
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 03:51:17 2009 +0200
bluetooth: make NameOwnerChanged filter matches more focussed
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index 16c2924..b8eb5c9 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -758,7 +758,7 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
if (pa_dbus_add_matches(
pa_dbus_connection_get(y->connection), &err,
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged'",
+ "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg='org.bluez'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'",
@@ -809,7 +809,7 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
if (y->connection) {
pa_dbus_remove_matches(pa_dbus_connection_get(y->connection),
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged'",
+ "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg='org.bluez'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
commit 319d187972f792568e37af92726b3f25e708cbbc
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 19:14:35 2009 +0200
bluetooth: fix match syntax
diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c
index b8eb5c9..f576823 100644
--- a/src/modules/bluetooth/bluetooth-util.c
+++ b/src/modules/bluetooth/bluetooth-util.c
@@ -758,7 +758,7 @@ pa_bluetooth_discovery* pa_bluetooth_discovery_get(pa_core *c) {
if (pa_dbus_add_matches(
pa_dbus_connection_get(y->connection), &err,
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg='org.bluez'",
+ "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.bluez'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceCreated'",
@@ -809,7 +809,7 @@ void pa_bluetooth_discovery_unref(pa_bluetooth_discovery *y) {
if (y->connection) {
pa_dbus_remove_matches(pa_dbus_connection_get(y->connection),
- "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg='org.bluez'",
+ "type='signal',sender='org.freedesktop.DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',arg0='org.bluez'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterAdded'",
"type='signal',sender='org.bluez',interface='org.bluez.Manager',member='AdapterRemoved'",
"type='signal',sender='org.bluez',interface='org.bluez.Adapter',member='DeviceRemoved'",
commit fe3a21f6a5958a6e54d5bcf7c162767cfdf5f9db
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 19:15:33 2009 +0200
macro: add PA_ROUND_UP/PA_ROUND_DOWN macros
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index cf66251..aa06359 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -91,7 +91,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_MAX(a,b) \
- __extension__ ({ typeof(a) _a = (a); \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
typeof(b) _b = (b); \
_a > _b ? _a : _b; \
})
@@ -101,7 +102,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_MIN(a,b) \
- __extension__ ({ typeof(a) _a = (a); \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
typeof(b) _b = (b); \
_a < _b ? _a : _b; \
})
@@ -111,7 +113,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_CLAMP(x, low, high) \
- __extension__ ({ typeof(x) _x = (x); \
+ __extension__ ({ \
+ typeof(x) _x = (x); \
typeof(low) _low = (low); \
typeof(high) _high = (high); \
((_x > _high) ? _high : ((_x < _low) ? _low : _x)); \
@@ -122,7 +125,8 @@ static inline size_t pa_page_align(size_t l) {
#ifdef __GNUC__
#define PA_CLAMP_UNLIKELY(x, low, high) \
- __extension__ ({ typeof(x) _x = (x); \
+ __extension__ ({ \
+ typeof(x) _x = (x); \
typeof(low) _low = (low); \
typeof(high) _high = (high); \
(PA_UNLIKELY(_x > _high) ? _high : (PA_UNLIKELY(_x < _low) ? _low : _x)); \
@@ -135,6 +139,28 @@ static inline size_t pa_page_align(size_t l) {
* make sense: we cannot know if it is more likely that the values is
* lower or greater than the boundaries.*/
+#ifdef __GNUC__
+#define PA_ROUND_UP(a, b) \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ ((_a + _b - 1) / _b) * _b; \
+ })
+#else
+#define PA_ROUND_UP(a, b) ((((a) + (b) - 1) / (b)) * (b))
+#endif
+
+#ifdef __GNUC__
+#define PA_ROUND_DOWN(a, b) \
+ __extension__ ({ \
+ typeof(a) _a = (a); \
+ typeof(b) _b = (b); \
+ (_a / _b) * _b; \
+ })
+#else
+#define PA_ROUND_DOWN(a, b) (((a) / (b)) * (b))
+#endif
+
/* This type is not intended to be used in exported APIs! Use classic "int" there! */
#ifdef HAVE_STD_BOOL
typedef _Bool pa_bool_t;
commit 8f928b2e572cd7bf26517afddd62ceecb78edfdc
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Aug 17 19:17:10 2009 +0200
macro: simplify page/word alignment macros a bit
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index aa06359..3c560bc 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -59,28 +59,24 @@
#endif
/* Rounds down */
-static inline void* pa_align_ptr(const void *p) {
- return (void*) (((size_t) p) & ~(sizeof(void*)-1));
+static inline void* PA_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(sizeof(void*) - 1));
}
-#define PA_ALIGN_PTR(x) (pa_align_ptr(x))
/* Rounds up */
-static inline size_t pa_align(size_t l) {
- return (((l + sizeof(void*) - 1) / sizeof(void*)) * sizeof(void*));
+static inline size_t PA_ALIGN(size_t l) {
+ return ((l + sizeof(void*) - 1) & ~(sizeof(void*) - 1));
}
-#define PA_ALIGN(x) (pa_align(x))
/* Rounds down */
-static inline void* pa_page_align_ptr(const void *p) {
- return (void*) (((size_t) p) & ~(PA_PAGE_SIZE-1));
+static inline void* PA_PAGE_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(PA_PAGE_SIZE - 1));
}
-#define PA_PAGE_ALIGN_PTR(x) (pa_page_align_ptr(x))
/* Rounds up */
-static inline size_t pa_page_align(size_t l) {
- return ((l + PA_PAGE_SIZE - 1) / PA_PAGE_SIZE) * PA_PAGE_SIZE;
+static inline size_t PA_PAGE_ALIGN(size_t l) {
+ return (l + PA_PAGE_SIZE - 1) & ~(PA_PAGE_SIZE - 1);
}
-#define PA_PAGE_ALIGN(x) (pa_page_align(x))
#define PA_ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0]))
commit d634555a3e3e2e35d95da6bca9464c02627d02fd
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 00:56:16 2009 +0200
volume: introduce pa_cvolume_min() and pa_cvolume_min_mask()
diff --git a/src/map-file b/src/map-file
index 4f20c48..d6122a4 100644
--- a/src/map-file
+++ b/src/map-file
@@ -131,6 +131,8 @@ pa_cvolume_init;
pa_cvolume_max;
pa_cvolume_max_mask;
pa_cvolume_merge;
+pa_cvolume_min;
+pa_cvolume_min_mask;
pa_cvolume_remap;
pa_cvolume_scale;
pa_cvolume_scale_mask;
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index d7fb247..e353572 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -126,7 +126,7 @@ pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, p
}
pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
- pa_volume_t m = 0;
+ pa_volume_t m = PA_VOLUME_MUTED;
unsigned c;
pa_assert(a);
@@ -139,8 +139,22 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
return m;
}
+pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
+ pa_volume_t m = (pa_volume_t) -1;
+ unsigned c;
+
+ pa_assert(a);
+ pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED);
+
+ for (c = 0; c < a->channels; c++)
+ if (m == (pa_volume_t) -1 || a->values[c] < m)
+ m = a->values[c];
+
+ return m;
+}
+
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
- pa_volume_t m = 0;
+ pa_volume_t m = PA_VOLUME_MUTED;
unsigned c, n;
pa_assert(a);
@@ -162,6 +176,29 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p
return m;
}
+pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
+ pa_volume_t m = (pa_volume_t) -1;
+ unsigned c, n;
+
+ pa_assert(a);
+
+ if (!cm)
+ return pa_cvolume_min(a);
+
+ pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED);
+
+ for (c = n = 0; c < a->channels; c++) {
+
+ if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask))
+ continue;
+
+ if (m == (pa_volume_t) -1 || a->values[c] < m)
+ m = a->values[c];
+ }
+
+ return m;
+}
+
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) * pa_sw_volume_to_linear(b));
}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 3881da2..349ca49 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -195,6 +195,16 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) PA_GCC_PURE;
* \since 0.9.16 */
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
+/** Return the minimum volume of all channels. \since 0.9.16 */
+pa_volume_t pa_cvolume_min(const pa_cvolume *a) PA_GCC_PURE;
+
+/** Return the minimum volume of all channels that are included in the
+ * specified channel map with the specified channel position mask. If
+ * cm is NULL this call is identical to pa_cvolume_min(). If no
+ * channel is selected the returned value will be PA_VOLUME_MUTED.
+ * \since 0.9.16 */
+pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
+
/** Return TRUE when the passed cvolume structure is valid, FALSE otherwise */
int pa_cvolume_valid(const pa_cvolume *v) PA_GCC_PURE;
commit 96f01b822a9be366ac45dc963b5b0b3b852aa236
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 00:57:58 2009 +0200
volume: simplify volume multiplifactions, do them in integer only
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index e353572..0d40237 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -200,16 +200,18 @@ pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, p
}
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
- return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) * pa_sw_volume_to_linear(b));
+
+ /* cbrt((a/PA_VOLUME_NORM)^3*(b/PA_VOLUME_NORM)^3)*PA_VOLUME_NORM = a*b/PA_VOLUME_NORM */
+
+ return (pa_volume_t) (((uint64_t) a * (uint64_t) b + (uint64_t) PA_VOLUME_NORM / 2ULL) / (uint64_t) PA_VOLUME_NORM);
}
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
- double v = pa_sw_volume_to_linear(b);
- if (v <= 0)
+ if (b <= PA_VOLUME_MUTED)
return 0;
- return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) / v);
+ return (pa_volume_t) (((uint64_t) a * (uint64_t) PA_VOLUME_NORM + (uint64_t) b / 2ULL) / (uint64_t) b);
}
/* Amplitude, not power */
commit ef01baf613b5f2cedd1a64b883a79d93965dc219
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 00:58:20 2009 +0200
volume: round properly when showing human readable volume percentages
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 0d40237..ee86938 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -292,7 +292,7 @@ char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
l -= pa_snprintf(e, l, "%s%u: %3u%%",
first ? "" : " ",
channel,
- (c->values[channel]*100)/PA_VOLUME_NORM);
+ (c->values[channel]*100+PA_VOLUME_NORM/2)/PA_VOLUME_NORM);
e = strchr(e, 0);
first = FALSE;
@@ -312,7 +312,7 @@ char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) {
return s;
}
- pa_snprintf(s, l, "%3u%%", (v*100)/PA_VOLUME_NORM);
+ pa_snprintf(s, l, "%3u%%", (v*100+PA_VOLUME_NORM/2)/PA_VOLUME_NORM);
return s;
}
commit 2223a9f9384ca76691f85d0faf4cdd72924f0976
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 00:59:23 2009 +0200
dbus: never return DBUS_HANDLER_RESULT_HANDLED in filter callbacks, since other callbacks might stell want to have the messages
diff --git a/src/modules/module-console-kit.c b/src/modules/module-console-kit.c
index a666073..103f5c4 100644
--- a/src/modules/module-console-kit.c
+++ b/src/modules/module-console-kit.c
@@ -187,7 +187,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
}
add_session(u, path);
- return DBUS_HANDLER_RESULT_HANDLED;
} else if (dbus_message_is_signal(message, "org.freedesktop.ConsoleKit.Seat", "SessionRemoved")) {
@@ -202,7 +201,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
}
remove_session(u, path);
- return DBUS_HANDLER_RESULT_HANDLED;
}
finish:
diff --git a/src/modules/module-hal-detect.c b/src/modules/module-hal-detect.c
index ec370d6..6034d0e 100644
--- a/src/modules/module-hal-detect.c
+++ b/src/modules/module-hal-detect.c
@@ -623,8 +623,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
}
- return DBUS_HANDLER_RESULT_HANDLED;
-
} else if (dbus_message_is_signal(message, "org.pulseaudio.Server", "DirtyGiveUpMessage")) {
/* We use this message to avoid a dirty race condition when we
get an ACLAdded message before the previously owning PA
@@ -668,7 +666,6 @@ static DBusHandlerResult filter_cb(DBusConnection *bus, DBusMessage *message, vo
/* Yes, we don't check the UDI for validity, but hopefully HAL will */
device_added_cb(u->context, udi);
- return DBUS_HANDLER_RESULT_HANDLED;
}
finish:
commit a69b7294145e7dfed6ede8e3d8aa01d7e8509142
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 01:02:32 2009 +0200
voltest: extend test to verify correctness of _multiply() and _divide()
diff --git a/src/modules/reserve-monitor.c b/src/modules/reserve-monitor.c
index 97cb9b9..ab453e6 100644
--- a/src/modules/reserve-monitor.c
+++ b/src/modules/reserve-monitor.c
@@ -64,7 +64,6 @@ static DBusHandlerResult filter_handler(
DBusMessage *s,
void *userdata) {
- DBusMessage *reply;
rm_monitor *m;
DBusError error;
@@ -105,31 +104,10 @@ static DBusHandlerResult filter_handler(
}
}
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
invalid:
- if (!(reply = dbus_message_new_error(
- s,
- DBUS_ERROR_INVALID_ARGS,
- "Invalid arguments")))
- goto oom;
-
- if (!dbus_connection_send(c, reply, NULL))
- goto oom;
-
- dbus_message_unref(reply);
-
dbus_error_free(&error);
- return DBUS_HANDLER_RESULT_HANDLED;
-
-oom:
- if (reply)
- dbus_message_unref(reply);
-
- dbus_error_free(&error);
-
- return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
int rm_watch(
diff --git a/src/modules/reserve.c b/src/modules/reserve.c
index 5597f17..b4c168c 100644
--- a/src/modules/reserve.c
+++ b/src/modules/reserve.c
@@ -291,7 +291,6 @@ static DBusHandlerResult filter_handler(
DBusMessage *m,
void *userdata) {
- DBusMessage *reply;
rd_device *d;
DBusError error;
@@ -323,35 +322,13 @@ static DBusHandlerResult filter_handler(
rd_release(d);
}
- return DBUS_HANDLER_RESULT_HANDLED;
}
}
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-
invalid:
- if (!(reply = dbus_message_new_error(
- m,
- DBUS_ERROR_INVALID_ARGS,
- "Invalid arguments")))
- goto oom;
-
- if (!dbus_connection_send(c, reply, NULL))
- goto oom;
-
- dbus_message_unref(reply);
-
- dbus_error_free(&error);
-
- return DBUS_HANDLER_RESULT_HANDLED;
-
-oom:
- if (reply)
- dbus_message_unref(reply);
-
dbus_error_free(&error);
- return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
diff --git a/src/tests/voltest.c b/src/tests/voltest.c
index 64aec5c..551f7ec 100644
--- a/src/tests/voltest.c
+++ b/src/tests/voltest.c
@@ -33,6 +33,8 @@ int main(int argc, char *argv[]) {
pa_cvolume cv;
float b;
pa_channel_map map;
+ pa_volume_t md = 0;
+ unsigned mdn = 0;
printf("Attenuation of sample 1 against 32767: %g dB\n", 20.0*log10(1.0/32767.0));
printf("Smallest possible attenutation > 0 applied to 32767: %li\n", lrint(32767.0*pa_sw_volume_to_linear(1)));
@@ -85,16 +87,48 @@ int main(int argc, char *argv[]) {
printf("After: volume: [%s]; balance: %2.1f (intended: %2.1f) %s\n", pa_cvolume_snprint(s, sizeof(s), &r), k, b, k < b-.05 || k > b+.5 ? "MISMATCH" : "");
}
- for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 1) {
+ for (v = PA_VOLUME_MUTED; v <= PA_VOLUME_NORM*2; v += 51) {
double l = pa_sw_volume_to_linear(v);
pa_volume_t k = pa_sw_volume_from_linear(l);
double db = pa_sw_volume_to_dB(v);
pa_volume_t r = pa_sw_volume_from_dB(db);
+ pa_volume_t w;
pa_assert(k == v);
pa_assert(r == v);
+
+ for (w = PA_VOLUME_MUTED; w < PA_VOLUME_NORM*2; w += 37) {
+
+ double t = pa_sw_volume_to_linear(w);
+ double db2 = pa_sw_volume_to_dB(w);
+ pa_volume_t p, p1, p2;
+ double q, qq;
+
+ p = pa_sw_volume_multiply(v, w);
+ qq = db + db2;
+ p2 = pa_sw_volume_from_dB(qq);
+ q = l*t;
+ p1 = pa_sw_volume_from_linear(q);
+
+ if (p2 > p && p2 - p > md)
+ md = p2 - p;
+ if (p2 < p && p - p2 > md)
+ md = p - p2;
+ if (p1 > p && p1 - p > md)
+ md = p1 - p;
+ if (p1 < p && p - p1 > md)
+ md = p - p1;
+
+ if (p1 != p || p2 != p)
+ mdn++;
+ }
}
+ printf("max deviation: %lu n=%lu\n", (unsigned long) md, (unsigned long) mdn);
+
+ pa_assert(md <= 1);
+ pa_assert(mdn <= 251);
+
return 0;
}
commit 2838b78e59ee7c8ea42fec6880cc4c2b2a2c9485
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 01:03:09 2009 +0200
macro: extend comments a bit
diff --git a/src/pulsecore/macro.h b/src/pulsecore/macro.h
index 3c560bc..ce88c1b 100644
--- a/src/pulsecore/macro.h
+++ b/src/pulsecore/macro.h
@@ -80,10 +80,10 @@ static inline size_t PA_PAGE_ALIGN(size_t l) {
#define PA_ELEMENTSOF(x) (sizeof(x)/sizeof((x)[0]))
-/* The users of PA_MIN and PA_MAX should be aware that these macros on
- * non-GCC executed code with side effects twice. It is thus
- * considered misuse to use code with side effects as arguments to MIN
- * and MAX. */
+/* The users of PA_MIN and PA_MAX, PA_CLAMP, PA_ROUND_UP should be
+ * aware that these macros on non-GCC executed code with side effects
+ * twice. It is thus considered misuse to use code with side effects
+ * as arguments to MIN and MAX. */
#ifdef __GNUC__
#define PA_MAX(a,b) \
commit 24e582808c18d6866d8c10f8f0320b1af0ab758b
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 01:35:43 2009 +0200
source: rework volume handling
- drop the 'virtual_' prefix from s->virtual_volume since we don't
distuingish between reference and real volumes for sources
- introduce an accuracy for source volumes: if the hardware can control
the volume "close enough" don't necessarily adjust the rest in
software unless it is beyond a certain threshold. This should save a
little bit of CPU at the expensive of a bit of accuracy in volume
handling.
- other minor cleanups
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 9a51f85..7da3755 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -65,6 +65,8 @@
#define TSCHED_MIN_SLEEP_USEC (10*PA_USEC_PER_MSEC) /* 10ms */
#define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms */
+#define VOLUME_ACCURACY (PA_VOLUME_NORM/100)
+
struct userdata {
pa_core *core;
pa_module *module;
@@ -987,15 +989,11 @@ static void source_get_volume_cb(pa_source *s) {
if (pa_cvolume_equal(&u->hardware_volume, &r))
return;
- s->virtual_volume = u->hardware_volume = r;
-
- if (u->mixer_path->has_dB) {
- pa_cvolume reset;
+ s->volume = u->hardware_volume = r;
- /* Hmm, so the hardware volume changed, let's reset our software volume */
- pa_cvolume_reset(&reset, s->sample_spec.channels);
- pa_source_set_soft_volume(s, &reset);
- }
+ /* Hmm, so the hardware volume changed, let's reset our software volume */
+ if (u->mixer_path->has_dB)
+ pa_source_set_soft_volume(s, NULL);
}
static void source_set_volume_cb(pa_source *s) {
@@ -1008,7 +1006,7 @@ static void source_set_volume_cb(pa_source *s) {
pa_assert(u->mixer_handle);
/* Shift up by the base volume */
- pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume);
+ pa_sw_cvolume_divide_scalar(&r, &s->volume, s->base_volume);
if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
return;
@@ -1019,13 +1017,26 @@ static void source_set_volume_cb(pa_source *s) {
u->hardware_volume = r;
if (u->mixer_path->has_dB) {
+ pa_cvolume new_soft_volume;
+ pa_bool_t accurate_enough;
/* Match exactly what the user requested by software */
- pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume);
+ pa_sw_cvolume_divide(&new_soft_volume, &s->volume, &u->hardware_volume);
+
+ /* If the adjustment to do in software is only minimal we
+ * can skip it. That saves us CPU at the expense of a bit of
+ * accuracy */
+ accurate_enough =
+ (pa_cvolume_min(&new_soft_volume) >= (PA_VOLUME_NORM - VOLUME_ACCURACY)) &&
+ (pa_cvolume_max(&new_soft_volume) <= (PA_VOLUME_NORM + VOLUME_ACCURACY));
- pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
+ pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->volume));
pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &u->hardware_volume));
- pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume));
+ pa_log_debug("Calculated software volume: %s (accurate-enough=%s)", pa_cvolume_snprint(t, sizeof(t), &new_soft_volume),
+ pa_yes_no(accurate_enough));
+
+ if (!accurate_enough)
+ s->soft_volume = new_soft_volume;
} else {
pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
@@ -1033,7 +1044,7 @@ static void source_set_volume_cb(pa_source *s) {
/* We can't match exactly what the user requested, hence let's
* at least tell the user about it */
- s->virtual_volume = r;
+ s->volume = r;
}
}
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index d6321fc..395ec83 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1500,12 +1500,12 @@ static void source_set_volume_cb(pa_source *s) {
if (u->profile != PROFILE_HSP)
return;
- gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM;
+ gain = (pa_cvolume_max(&s->volume) * 15) / PA_VOLUME_NORM;
if (gain > 15)
gain = 15;
- pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
+ pa_cvolume_set(&s->volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetMicrophoneGain"));
pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID));
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index c44b882..0848d43 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -848,11 +848,11 @@ static void source_get_volume(pa_source *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_IGAIN|SOUND_MASK_RECLEV));
if (u->mixer_devmask & SOUND_MASK_IGAIN)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_IGAIN, &s->sample_spec, &s->volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_RECLEV)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_RECLEV, &s->sample_spec, &s->volume) >= 0)
return;
pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno));
@@ -866,11 +866,11 @@ static void source_set_volume(pa_source *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_IGAIN|SOUND_MASK_RECLEV));
if (u->mixer_devmask & SOUND_MASK_IGAIN)
- if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_IGAIN, &s->sample_spec, &s->volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_RECLEV)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_RECLEV, &s->sample_spec, &s->volume) >= 0)
return;
pa_log_info("Device doesn't support writing mixer settings: %s", pa_cstrerror(errno));
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index 46f049e..8aa07f5 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -181,7 +181,7 @@ pa_source* pa_source_new(
pa_cvolume_reset(&data->volume, data->sample_spec.channels);
pa_return_null_if_fail(pa_cvolume_valid(&data->volume));
- pa_return_null_if_fail(data->volume.channels == data->sample_spec.channels);
+ pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec));
if (!data->muted_is_set)
data->muted = FALSE;
@@ -219,7 +219,7 @@ pa_source* pa_source_new(
s->n_corked = 0;
s->monitor_of = NULL;
- s->virtual_volume = data->volume;
+ s->volume = data->volume;
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->base_volume = PA_VOLUME_NORM;
s->n_volume_steps = PA_VOLUME_NORM+1;
@@ -751,31 +751,32 @@ pa_usec_t pa_source_get_latency_within_thread(pa_source *s) {
}
/* Called from main thread */
-void pa_source_set_volume(pa_source *s, const pa_cvolume *volume, pa_bool_t save) {
- pa_cvolume old_virtual_volume;
- pa_bool_t virtual_volume_changed;
+void pa_source_set_volume(
+ pa_source *s,
+ const pa_cvolume *volume,
+ pa_bool_t save) {
+
+ pa_bool_t real_changed;
pa_source_assert_ref(s);
pa_assert_ctl_context();
pa_assert(PA_SOURCE_IS_LINKED(s->state));
- pa_assert(volume);
pa_assert(pa_cvolume_valid(volume));
pa_assert(pa_cvolume_compatible(volume, &s->sample_spec));
- old_virtual_volume = s->virtual_volume;
- s->virtual_volume = *volume;
- virtual_volume_changed = !pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume);
- s->save_volume = (!virtual_volume_changed && s->save_volume) || save;
+ real_changed = !pa_cvolume_equal(volume, &s->volume);
+ s->volume = *volume;
+ s->save_volume = (!real_changed && s->save_volume) || save;
if (s->set_volume) {
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->set_volume(s);
} else
- s->soft_volume = s->virtual_volume;
+ s->soft_volume = s->volume;
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
- if (virtual_volume_changed)
+ if (real_changed)
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -783,12 +784,16 @@ void pa_source_set_volume(pa_source *s, const pa_cvolume *volume, pa_bool_t save
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume) {
pa_source_assert_ref(s);
pa_assert_ctl_context();
- pa_assert(volume);
+
+ if (!volume)
+ pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
+ else
+ s->soft_volume = *volume;
if (PA_SOURCE_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
else
- s->thread_info.soft_volume = *volume;
+ s->thread_info.soft_volume = s->soft_volume;
}
/* Called from main thread */
@@ -798,20 +803,22 @@ const pa_cvolume *pa_source_get_volume(pa_source *s, pa_bool_t force_refresh) {
pa_assert(PA_SOURCE_IS_LINKED(s->state));
if (s->refresh_volume || force_refresh) {
- pa_cvolume old_virtual_volume = s->virtual_volume;
+ pa_cvolume old_volume;
+
+ old_volume = s->volume;
if (s->get_volume)
s->get_volume(s);
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SOURCE_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0);
- if (!pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume)) {
+ if (!pa_cvolume_equal(&old_volume, &s->volume)) {
s->save_volume = TRUE;
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
}
- return &s->virtual_volume;
+ return &s->volume;
}
/* Called from main thread */
@@ -822,10 +829,10 @@ void pa_source_volume_changed(pa_source *s, const pa_cvolume *new_volume) {
/* The source implementor may call this if the volume changed to make sure everyone is notified */
- if (pa_cvolume_equal(&s->virtual_volume, new_volume))
+ if (pa_cvolume_equal(&s->volume, new_volume))
return;
- s->virtual_volume = *new_volume;
+ s->volume = *new_volume;
s->save_volume = TRUE;
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h
index 6f33de0..7b3e495 100644
--- a/src/pulsecore/source.h
+++ b/src/pulsecore/source.h
@@ -79,7 +79,7 @@ struct pa_source {
pa_volume_t base_volume; /* shall be constant */
unsigned n_volume_steps; /* shall be constant */
- pa_cvolume virtual_volume, soft_volume;
+ pa_cvolume volume, soft_volume;
pa_bool_t muted:1;
pa_bool_t refresh_volume:1;
commit d6f598ab3e1cdb71dc3b408592d06bba23f53a71
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 02:29:59 2009 +0200
udev: allow passing of ignore_dB= parameter to alsa modules
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index a91b4b8..1253836 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -68,6 +68,8 @@
#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*/
+#define VOLUME_ACCURACY (PA_VOLUME_NORM/100) /* don't require volume adjustments to be perfectly correct. don't necessarily extend granularity in software unless the differences get greater than this level */
+
struct userdata {
pa_core *core;
pa_module *module;
@@ -1034,15 +1036,11 @@ static void sink_get_volume_cb(pa_sink *s) {
if (pa_cvolume_equal(&u->hardware_volume, &r))
return;
- s->virtual_volume = u->hardware_volume = r;
-
- if (u->mixer_path->has_dB) {
- pa_cvolume reset;
+ s->real_volume = u->hardware_volume = r;
- /* Hmm, so the hardware volume changed, let's reset our software volume */
- pa_cvolume_reset(&reset, s->sample_spec.channels);
- pa_sink_set_soft_volume(s, &reset);
- }
+ /* Hmm, so the hardware volume changed, let's reset our software volume */
+ if (u->mixer_path->has_dB)
+ pa_sink_set_soft_volume(s, NULL);
}
static void sink_set_volume_cb(pa_sink *s) {
@@ -1055,7 +1053,7 @@ static void sink_set_volume_cb(pa_sink *s) {
pa_assert(u->mixer_handle);
/* Shift up by the base volume */
- pa_sw_cvolume_divide_scalar(&r, &s->virtual_volume, s->base_volume);
+ pa_sw_cvolume_divide_scalar(&r, &s->real_volume, s->base_volume);
if (pa_alsa_path_set_volume(u->mixer_path, u->mixer_handle, &s->channel_map, &r) < 0)
return;
@@ -1066,13 +1064,26 @@ static void sink_set_volume_cb(pa_sink *s) {
u->hardware_volume = r;
if (u->mixer_path->has_dB) {
+ pa_cvolume new_soft_volume;
+ pa_bool_t accurate_enough;
/* Match exactly what the user requested by software */
- pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &u->hardware_volume);
+ pa_sw_cvolume_divide(&new_soft_volume, &s->real_volume, &u->hardware_volume);
+
+ /* If the adjustment to do in software is only minimal we
+ * can skip it. That saves us CPU at the expense of a bit of
+ * accuracy */
+ accurate_enough =
+ (pa_cvolume_min(&new_soft_volume) >= (PA_VOLUME_NORM - VOLUME_ACCURACY)) &&
+ (pa_cvolume_max(&new_soft_volume) <= (PA_VOLUME_NORM + VOLUME_ACCURACY));
- pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
+ pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->real_volume));
pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &u->hardware_volume));
- pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume));
+ pa_log_debug("Calculated software volume: %s (accurate-enough=%s)", pa_cvolume_snprint(t, sizeof(t), &new_soft_volume),
+ pa_yes_no(accurate_enough));
+
+ if (!accurate_enough)
+ s->soft_volume = new_soft_volume;
} else {
pa_log_debug("Wrote hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &r));
@@ -1080,7 +1091,7 @@ static void sink_set_volume_cb(pa_sink *s) {
/* We can't match exactly what the user requested, hence let's
* at least tell the user about it */
- s->virtual_volume = r;
+ s->real_volume = r;
}
}
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 395ec83..4e23862 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -1476,12 +1476,12 @@ static void sink_set_volume_cb(pa_sink *s) {
if (u->profile != PROFILE_HSP)
return;
- gain = (pa_cvolume_max(&s->virtual_volume) * 15) / PA_VOLUME_NORM;
+ gain = (pa_cvolume_max(&s->real_volume) * 15) / PA_VOLUME_NORM;
if (gain > 15)
gain = 15;
- pa_cvolume_set(&s->virtual_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
+ pa_cvolume_set(&s->real_volume, u->sample_spec.channels, (pa_volume_t) (gain * PA_VOLUME_NORM / 15));
pa_assert_se(m = dbus_message_new_method_call("org.bluez", u->path, "org.bluez.Headset", "SetSpeakerGain"));
pa_assert_se(dbus_message_append_args(m, DBUS_TYPE_UINT16, &gain, DBUS_TYPE_INVALID));
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index 06efeb8..2bb8014 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -133,7 +133,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MAX;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case DOWN:
@@ -144,7 +144,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MUTED;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case MUTE:
diff --git a/src/modules/module-udev-detect.c b/src/modules/module-udev-detect.c
index 11de1cc..0b30fd5 100644
--- a/src/modules/module-udev-detect.c
+++ b/src/modules/module-udev-detect.c
@@ -39,6 +39,9 @@ PA_MODULE_AUTHOR("Lennart Poettering");
PA_MODULE_DESCRIPTION("Detect available audio hardware and load matching drivers");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
+PA_MODULE_USAGE(
+ "tsched=<enable system timer based scheduling mode?> "
+ "ignore_dB=<ignore dB information from the device?>");
struct device {
char *path;
@@ -50,7 +53,9 @@ struct device {
struct userdata {
pa_core *core;
pa_hashmap *devices;
- pa_bool_t use_tsched;
+
+ pa_bool_t use_tsched:1;
+ pa_bool_t ignore_dB:1;
struct udev* udev;
struct udev_monitor *monitor;
@@ -62,6 +67,7 @@ struct userdata {
static const char* const valid_modargs[] = {
"tsched",
+ "ignore_dB",
NULL
};
@@ -140,12 +146,14 @@ static void card_changed(struct userdata *u, struct udev_device *dev) {
args = pa_sprintf_malloc("device_id=\"%s\" "
"name=\"%s\" "
"card_name=\"%s\" "
- "tsched=%i "
+ "tsched=%s "
+ "ignore_dB=%s "
"card_properties=\"module-udev-detect.discovered=1\"",
path_get_card_id(path),
n,
card_name,
- (int) u->use_tsched);
+ pa_yes_no(u->use_tsched),
+ pa_yes_no(u->ignore_dB));
pa_log_debug("Loading module-alsa-card with arguments '%s'", args);
m = pa_module_load(u->core, "module-alsa-card", args);
@@ -364,6 +372,7 @@ int pa__init(pa_module *m) {
struct udev_enumerate *enumerate = NULL;
struct udev_list_entry *item = NULL, *first = NULL;
int fd;
+ pa_bool_t use_tsched = TRUE, ignore_dB = FALSE;
pa_assert(m);
@@ -375,13 +384,19 @@ int pa__init(pa_module *m) {
m->userdata = u = pa_xnew0(struct userdata, 1);
u->core = m->core;
u->devices = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- u->use_tsched = TRUE;
u->inotify_fd = -1;
- if (pa_modargs_get_value_boolean(ma, "tsched", &u->use_tsched) < 0) {
- pa_log("Failed to parse tsched argument.");
+ if (pa_modargs_get_value_boolean(ma, "tsched", &use_tsched) < 0) {
+ pa_log("Failed to parse tsched= argument.");
+ goto fail;
+ }
+ u->use_tsched = use_tsched;
+
+ if (pa_modargs_get_value_boolean(ma, "ignore_dB", &ignore_dB) < 0) {
+ pa_log("Failed to parse ignore_dB= argument.");
goto fail;
}
+ u->ignore_dB = ignore_dB;
if (!(u->udev = udev_new())) {
pa_log("Failed to initialize udev library.");
commit 1421eff0b69f6b0173835afe6b857d39e719d1d0
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 02:31:11 2009 +0200
volume: use PA_VOLUME_MAX instead of (pa_volume_t) -1
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index ee86938..3dcf315 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -140,14 +140,14 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
}
pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
- pa_volume_t m = (pa_volume_t) -1;
+ pa_volume_t m = PA_VOLUME_MAX;
unsigned c;
pa_assert(a);
pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED);
for (c = 0; c < a->channels; c++)
- if (m == (pa_volume_t) -1 || a->values[c] < m)
+ if (a->values[c] < m)
m = a->values[c];
return m;
@@ -177,7 +177,7 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p
}
pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
- pa_volume_t m = (pa_volume_t) -1;
+ pa_volume_t m = PA_VOLUME_MAX;
unsigned c, n;
pa_assert(a);
@@ -192,7 +192,7 @@ pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, p
if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask))
continue;
- if (m == (pa_volume_t) -1 || a->values[c] < m)
+ if (a->values[c] < m)
m = a->values[c];
}
commit cfef930036572e2770a4c17e57f139737a99444a
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 02:32:36 2009 +0200
volume: introduce pa_cvolume_{inc|dec}()
diff --git a/src/map-file b/src/map-file
index d6122a4..95b2803 100644
--- a/src/map-file
+++ b/src/map-file
@@ -123,10 +123,12 @@ pa_cvolume_avg_mask;
pa_cvolume_channels_equal_to;
pa_cvolume_compatible;
pa_cvolume_compatible_with_channel_map;
+pa_cvolume_dec;
pa_cvolume_equal;
pa_cvolume_get_balance;
pa_cvolume_get_fade;
pa_cvolume_get_position;
+pa_cvolume_inc;
pa_cvolume_init;
pa_cvolume_max;
pa_cvolume_max_mask;
diff --git a/src/pulse/volume.c b/src/pulse/volume.c
index 3dcf315..234c3f7 100644
--- a/src/pulse/volume.c
+++ b/src/pulse/volume.c
@@ -876,3 +876,37 @@ pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvo
return dest;
}
+
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) {
+ pa_volume_t m;
+
+ pa_assert(v);
+
+ pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+
+ m = pa_cvolume_max(v);
+
+ if (m >= PA_VOLUME_MAX - inc)
+ m = PA_VOLUME_MAX;
+ else
+ m += inc;
+
+ return pa_cvolume_scale(v, m);
+}
+
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {
+ pa_volume_t m;
+
+ pa_assert(v);
+
+ pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
+
+ m = pa_cvolume_max(v);
+
+ if (m <= PA_VOLUME_MUTED + dec)
+ m = PA_VOLUME_MUTED;
+ else
+ m -= dec;
+
+ return pa_cvolume_scale(v, m);
+}
diff --git a/src/pulse/volume.h b/src/pulse/volume.h
index 349ca49..543b0af 100644
--- a/src/pulse/volume.h
+++ b/src/pulse/volume.h
@@ -345,6 +345,14 @@ pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, p
* and dest may point to the same structure. \since 0.9.16 */
pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+/** Increase the volume passed in by 'inc'. The proportions between
+ * the channels are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc);
+
+/** Increase the volume passed in by 'inc'. The proportions between
+ * the channels are kept. \since 0.9.16 */
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec);
+
PA_C_DECL_END
#endif
commit 5207e191424675df74059aaf30f9b1292a05cb5d
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 02:37:35 2009 +0200
match: document how broken the module-match logic is
diff --git a/src/modules/module-match.c b/src/modules/module-match.c
index 625f2a8..14e0112 100644
--- a/src/modules/module-match.c
+++ b/src/modules/module-match.c
@@ -243,6 +243,9 @@ int pa__init(pa_module*m) {
if (load_rules(u, pa_modargs_get_value(ma, "table", NULL)) < 0)
goto fail;
+ /* FIXME: Doing this asynchronously is just broken. This needs to
+ * use a hook! */
+
u->subscription = pa_subscription_new(m->core, PA_SUBSCRIPTION_MASK_SINK_INPUT, callback, u);
pa_modargs_free(ma);
commit 8c31974f56ebbbfc1a4978150026acf77c32689e
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 02:55:02 2009 +0200
sink: volume handling rework, new flat volume logic
- We now implement a logic where the sink maintains two distinct
volumes: the 'reference' volume which is shown to the users, and the
'real' volume, which is configured to the hardware. The latter is
configured to the max of all streams. Volume changes on sinks are
propagated back to the streams proportional to the reference volume
change. Volume changes on sink inputs are forwarded to the sink by
'pushing' the volume if necessary.
This renames the old 'virtual_volume' to 'real_volume'. The
'reference_volume' is now the one exposed to users.
By this logic the sink volume visible to the user, will always be the
"upper" boundary for everything that is played. Saved/restored stream
volumes are measured relative to this boundary, the factor here is
always < 1.0.
- introduce accuracy for sink volumes, similar to the accuracy we
already have for source volumes.
- other cleanups.
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 1253836..e3707ae 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1009,7 +1009,7 @@ static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
return 0;
if (mask & SND_CTL_EVENT_MASK_VALUE) {
- pa_sink_get_volume(u->sink, TRUE, FALSE);
+ pa_sink_get_volume(u->sink, TRUE);
pa_sink_get_mute(u->sink, TRUE);
}
diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c
index 120b762..da6c966 100644
--- a/src/modules/module-device-restore.c
+++ b/src/modules/module-device-restore.c
@@ -218,7 +218,7 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3
if (sink->save_volume) {
entry.channel_map = sink->channel_map;
- entry.volume = *pa_sink_get_volume(sink, FALSE, TRUE);
+ entry.volume = *pa_sink_get_volume(sink, FALSE);
entry.volume_valid = TRUE;
}
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index 2bb8014..fdfdc79 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -120,7 +120,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
pa_log("Failed to get sink '%s'", u->sink_name);
else {
int i;
- pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE);
+ pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
#define DELTA (PA_VOLUME_NORM/20)
diff --git a/src/modules/module-match.c b/src/modules/module-match.c
index 14e0112..0bd781d 100644
--- a/src/modules/module-match.c
+++ b/src/modules/module-match.c
@@ -216,7 +216,7 @@ static void callback(pa_core *c, pa_subscription_event_type_t t, uint32_t idx, v
pa_cvolume cv;
pa_log_debug("changing volume of sink input '%s' to 0x%03x", n, r->volume);
pa_cvolume_set(&cv, si->sample_spec.channels, r->volume);
- pa_sink_input_set_volume(si, &cv, TRUE, TRUE);
+ pa_sink_input_set_volume(si, &cv, TRUE, FALSE);
}
}
}
diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c
index b30fae5..7be4870 100644
--- a/src/modules/module-mmkbd-evdev.c
+++ b/src/modules/module-mmkbd-evdev.c
@@ -102,7 +102,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
pa_log("Failed to get sink '%s'", u->sink_name);
else {
int i;
- pa_cvolume cv = *pa_sink_get_volume(s, FALSE, FALSE);
+ pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
#define DELTA (PA_VOLUME_NORM/20)
@@ -115,7 +115,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MAX;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case DOWN:
@@ -126,7 +126,7 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
cv.values[i] = PA_VOLUME_MUTED;
}
- pa_sink_set_volume(s, &cv, TRUE, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case MUTE_TOGGLE:
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index eaccea4..5ccb81d 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -1162,7 +1162,7 @@ static void sink_input_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag
pa_assert(u->sink);
if ((u->version < 11 || !!mute == !!u->sink->muted) &&
- pa_cvolume_equal(&volume, &u->sink->virtual_volume))
+ pa_cvolume_equal(&volume, &u->sink->real_volume))
return;
pa_sink_volume_changed(u->sink, &volume);
@@ -1763,7 +1763,7 @@ static void sink_set_volume(pa_sink *sink) {
pa_tagstruct_putu32(t, PA_COMMAND_SET_SINK_INPUT_VOLUME);
pa_tagstruct_putu32(t, tag = u->ctag++);
pa_tagstruct_putu32(t, u->device_index);
- pa_tagstruct_put_cvolume(t, &sink->virtual_volume);
+ pa_tagstruct_put_cvolume(t, &sink->real_volume);
pa_pstream_send_tagstruct(u->pstream, t);
}
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index 0848d43..7153626 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -812,11 +812,11 @@ static void sink_get_volume(pa_sink *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM));
if (u->mixer_devmask & SOUND_MASK_VOLUME)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_VOLUME, &s->sample_spec, &s->real_volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_PCM)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_READ_PCM, &s->sample_spec, &s->real_volume) >= 0)
return;
pa_log_info("Device doesn't support reading mixer settings: %s", pa_cstrerror(errno));
@@ -830,11 +830,11 @@ static void sink_set_volume(pa_sink *s) {
pa_assert(u->mixer_devmask & (SOUND_MASK_VOLUME|SOUND_MASK_PCM));
if (u->mixer_devmask & SOUND_MASK_VOLUME)
- if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_set_volume(u->mixer_fd, SOUND_MIXER_WRITE_VOLUME, &s->sample_spec, &s->real_volume) >= 0)
return;
if (u->mixer_devmask & SOUND_MASK_PCM)
- if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->virtual_volume) >= 0)
+ if (pa_oss_get_volume(u->mixer_fd, SOUND_MIXER_WRITE_PCM, &s->sample_spec, &s->real_volume) >= 0)
return;
pa_log_info("Device doesn't support writing mixer settings: %s", pa_cstrerror(errno));
diff --git a/src/modules/raop/module-raop-sink.c b/src/modules/raop/module-raop-sink.c
index 9699132..ac48ab1 100644
--- a/src/modules/raop/module-raop-sink.c
+++ b/src/modules/raop/module-raop-sink.c
@@ -283,15 +283,15 @@ static void sink_set_volume_cb(pa_sink *s) {
/* Calculate the max volume of all channels.
We'll use this as our (single) volume on the APEX device and emulate
any variation in channel volumes in software */
- v = pa_cvolume_max(&s->virtual_volume);
+ v = pa_cvolume_max(&s->real_volume);
/* Create a pa_cvolume version of our single value */
pa_cvolume_set(&hw, s->sample_spec.channels, v);
/* Perform any software manipulation of the volume needed */
- pa_sw_cvolume_divide(&s->soft_volume, &s->virtual_volume, &hw);
+ pa_sw_cvolume_divide(&s->soft_volume, &s->real_volume, &hw);
- pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->virtual_volume));
+ pa_log_debug("Requested volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->real_volume));
pa_log_debug("Got hardware volume: %s", pa_cvolume_snprint(t, sizeof(t), &hw));
pa_log_debug("Calculated software volume: %s", pa_cvolume_snprint(t, sizeof(t), &s->soft_volume));
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index e2c3c06..6ec7464 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -530,7 +530,7 @@ static int pa_cli_command_sink_volume(pa_core *c, pa_tokenizer *t, pa_strbuf *bu
}
pa_cvolume_set(&cvolume, sink->sample_spec.channels, volume);
- pa_sink_set_volume(sink, &cvolume, TRUE, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(sink, &cvolume, TRUE, TRUE);
return 0;
}
@@ -1586,7 +1586,7 @@ static int pa_cli_command_dump(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
nl = 1;
}
- pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_avg(pa_sink_get_volume(sink, FALSE, TRUE)));
+ pa_strbuf_printf(buf, "set-sink-volume %s 0x%03x\n", sink->name, pa_cvolume_avg(pa_sink_get_volume(sink, FALSE)));
pa_strbuf_printf(buf, "set-sink-mute %s %s\n", sink->name, pa_yes_no(pa_sink_get_mute(sink, FALSE)));
pa_strbuf_printf(buf, "suspend-sink %s %s\n", sink->name, pa_yes_no(pa_sink_get_state(sink) == PA_SINK_SUSPENDED));
}
diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c
index a553099..c7a178d 100644
--- a/src/pulsecore/cli-text.c
+++ b/src/pulsecore/cli-text.c
@@ -262,10 +262,10 @@ char *pa_sink_list_to_string(pa_core *c) {
sink->suspend_cause & PA_SUSPEND_APPLICATION ? "APPLICATION " : "",
sink->suspend_cause & PA_SUSPEND_IDLE ? "IDLE " : "",
sink->suspend_cause & PA_SUSPEND_SESSION ? "SESSION" : "",
- pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE, FALSE)),
+ pa_cvolume_snprint(cv, sizeof(cv), pa_sink_get_volume(sink, FALSE)),
sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "",
- sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE, FALSE)) : "",
- pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE, FALSE), &sink->channel_map),
+ sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_cvolume_snprint_dB(cvdb, sizeof(cvdb), pa_sink_get_volume(sink, FALSE)) : "",
+ pa_cvolume_get_balance(pa_sink_get_volume(sink, FALSE), &sink->channel_map),
pa_volume_snprint(v, sizeof(v), sink->base_volume),
sink->flags & PA_SINK_DECIBEL_VOLUME ? "\n\t " : "",
sink->flags & PA_SINK_DECIBEL_VOLUME ? pa_sw_volume_snprint_dB(vdb, sizeof(vdb), sink->base_volume) : "",
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index e7abd61..f6ec712 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -83,7 +83,6 @@ typedef enum pa_core_hook {
PA_CORE_HOOK_SINK_INPUT_MOVE_FAIL,
PA_CORE_HOOK_SINK_INPUT_STATE_CHANGED,
PA_CORE_HOOK_SINK_INPUT_PROPLIST_CHANGED,
- PA_CORE_HOOK_SINK_INPUT_SET_VOLUME,
PA_CORE_HOOK_SINK_INPUT_SEND_EVENT,
PA_CORE_HOOK_SOURCE_OUTPUT_NEW,
PA_CORE_HOOK_SOURCE_OUTPUT_FIXATE,
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index 280707e..b1285e1 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -2840,7 +2840,7 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin
PA_TAG_SAMPLE_SPEC, &fixed_ss,
PA_TAG_CHANNEL_MAP, &sink->channel_map,
PA_TAG_U32, sink->module ? sink->module->index : PA_INVALID_INDEX,
- PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE, FALSE),
+ PA_TAG_CVOLUME, pa_sink_get_volume(sink, FALSE),
PA_TAG_BOOLEAN, pa_sink_get_mute(sink, FALSE),
PA_TAG_U32, sink->monitor_source ? sink->monitor_source->index : PA_INVALID_INDEX,
PA_TAG_STRING, sink->monitor_source ? sink->monitor_source->name : NULL,
@@ -3388,7 +3388,7 @@ static void command_set_volume(
if (sink) {
pa_log_debug("Client %s changes volume of sink %s.", client_name, sink->name);
- pa_sink_set_volume(sink, &volume, TRUE, TRUE, TRUE, TRUE);
+ pa_sink_set_volume(sink, &volume, TRUE, TRUE);
} else if (source) {
pa_log_debug("Client %s changes volume of sink %s.", client_name, source->name);
pa_source_set_volume(source, &volume, TRUE);
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index f6d9ac7..a29334f 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -47,6 +47,7 @@
static PA_DEFINE_CHECK_TYPE(pa_sink_input, pa_msgobject);
static void sink_input_free(pa_object *o);
+static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v);
pa_sink_input_new_data* pa_sink_input_new_data_init(pa_sink_input_new_data *data) {
pa_assert(data);
@@ -270,18 +271,20 @@ int pa_sink_input_new(
i->channel_map = data->channel_map;
if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !data->volume_is_absolute) {
+ pa_cvolume remapped;
+
/* When the 'absolute' bool is not set then we'll treat the volume
* as relative to the sink volume even in flat volume mode */
-
- pa_cvolume v = data->sink->reference_volume;
- pa_cvolume_remap(&v, &data->sink->channel_map, &data->channel_map);
- pa_sw_cvolume_multiply(&i->virtual_volume, &data->volume, &v);
+ remapped = data->sink->reference_volume;
+ pa_cvolume_remap(&remapped, &data->sink->channel_map, &data->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &data->volume, &remapped);
} else
- i->virtual_volume = data->volume;
+ i->volume = data->volume;
i->volume_factor = data->volume_factor;
- pa_cvolume_init(&i->soft_volume);
- memset(i->relative_volume, 0, sizeof(i->relative_volume));
+ i->real_ratio = i->reference_ratio = data->volume;
+ pa_cvolume_reset(&i->soft_volume, i->sample_spec.channels);
+ pa_cvolume_reset(&i->real_ratio, i->sample_spec.channels);
i->save_volume = data->save_volume;
i->save_sink = data->save_sink;
i->save_muted = data->save_muted;
@@ -445,11 +448,8 @@ void pa_sink_input_unlink(pa_sink_input *i) {
if (linked && i->sink) {
/* We might need to update the sink's volume if we are in flat volume mode. */
- if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
- pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
- }
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
+ pa_sink_set_volume(i->sink, NULL, FALSE, FALSE);
if (i->sink->asyncmsgq)
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_REMOVE_INPUT, i, 0, NULL) == 0);
@@ -526,12 +526,10 @@ void pa_sink_input_put(pa_sink_input *i) {
i->state = state;
/* We might need to update the sink's volume if we are in flat volume mode. */
- if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
- pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
- } else
- pa_sink_input_set_relative_volume(i, &i->virtual_volume);
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
+ pa_sink_set_volume(i->sink, NULL, FALSE, i->save_volume);
+ else
+ set_real_ratio(i, &i->volume);
i->thread_info.soft_volume = i->soft_volume;
i->thread_info.muted = i->muted;
@@ -910,6 +908,27 @@ pa_usec_t pa_sink_input_get_requested_latency(pa_sink_input *i) {
}
/* Called from main context */
+static void set_real_ratio(pa_sink_input *i, const pa_cvolume *v) {
+ pa_sink_input_assert_ref(i);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
+ pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec));
+
+ /* This basically calculates:
+ *
+ * i->real_ratio := v
+ * i->soft_volume := i->real_ratio * i->volume_factor */
+
+ if (v)
+ i->real_ratio = *v;
+ else
+ pa_cvolume_reset(&i->real_ratio, i->sample_spec.channels);
+
+ pa_sw_cvolume_multiply(&i->soft_volume, &i->real_ratio, &i->volume_factor);
+ /* We don't copy the data to the thread_info data. That's left for someone else to do */
+}
+
+/* Called from main context */
void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute) {
pa_cvolume v;
@@ -926,29 +945,24 @@ void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_boo
volume = pa_sw_cvolume_multiply(&v, &v, volume);
}
- if (pa_cvolume_equal(volume, &i->virtual_volume))
+ if (pa_cvolume_equal(volume, &i->volume)) {
+ i->save_volume = i->save_volume || save;
return;
+ }
- i->virtual_volume = *volume;
+ i->volume = *volume;
i->save_volume = save;
- if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
-
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
/* We are in flat volume mode, so let's update all sink input
* volumes and update the flat volume of the sink */
- pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, TRUE, FALSE, FALSE);
-
- } else {
+ pa_sink_set_volume(i->sink, NULL, TRUE, save);
+ else {
/* OK, we are in normal volume mode. The volume only affects
* ourselves */
- pa_sink_input_set_relative_volume(i, volume);
-
- /* Hooks have the ability to play games with i->soft_volume */
- pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
+ set_real_ratio(i, volume);
/* Copy the new soft_volume to the thread_info struct */
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i), PA_SINK_INPUT_MESSAGE_SET_SOFT_VOLUME, NULL, 0, NULL) == 0);
@@ -964,68 +978,15 @@ pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bo
pa_assert_ctl_context();
pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
- if ((i->sink->flags & PA_SINK_FLAT_VOLUME) && !absolute) {
- pa_cvolume v = i->sink->reference_volume;
- pa_cvolume_remap(&v, &i->sink->channel_map, &i->channel_map);
- pa_sw_cvolume_divide(volume, &i->virtual_volume, &v);
- } else
- *volume = i->virtual_volume;
+ if (absolute || !(i->sink->flags & PA_SINK_FLAT_VOLUME))
+ *volume = i->volume;
+ else
+ *volume = i->reference_ratio;
return volume;
}
/* Called from main context */
-pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v) {
- unsigned c;
-
- pa_sink_input_assert_ref(i);
- pa_assert_ctl_context();
- pa_assert(v);
- pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
-
- /* This always returns the relative volume. Converts the float
- * version into a pa_cvolume */
-
- v->channels = i->sample_spec.channels;
-
- for (c = 0; c < v->channels; c++)
- v->values[c] = pa_sw_volume_from_linear(i->relative_volume[c]);
-
- return v;
-}
-
-/* Called from main context */
-void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v) {
- unsigned c;
- pa_cvolume _v;
-
- pa_sink_input_assert_ref(i);
- pa_assert_ctl_context();
- pa_assert(PA_SINK_INPUT_IS_LINKED(i->state));
- pa_assert(!v || pa_cvolume_compatible(v, &i->sample_spec));
-
- if (!v)
- v = pa_cvolume_reset(&_v, i->sample_spec.channels);
-
- /* This basically calculates:
- *
- * i->relative_volume := v
- * i->soft_volume := i->relative_volume * i->volume_factor */
-
- i->soft_volume.channels = i->sample_spec.channels;
-
- for (c = 0; c < i->sample_spec.channels; c++) {
- i->relative_volume[c] = pa_sw_volume_to_linear(v->values[c]);
-
- i->soft_volume.values[c] = pa_sw_volume_from_linear(
- i->relative_volume[c] *
- pa_sw_volume_to_linear(i->volume_factor.values[c]));
- }
-
- /* We don't copy the data to the thread_info data. That's left for someone else to do */
-}
-
-/* Called from main context */
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save) {
pa_sink_input_assert_ref(i);
pa_assert_ctl_context();
@@ -1198,20 +1159,10 @@ int pa_sink_input_start_move(pa_sink_input *i) {
if (pa_sink_input_get_state(i) == PA_SINK_INPUT_CORKED)
pa_assert_se(i->sink->n_corked-- >= 1);
- if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
-
- /* Make the virtual volume relative */
- pa_sink_input_get_relative_volume(i, &i->virtual_volume);
-
- /* And reset the the relative volume */
- pa_sink_input_set_relative_volume(i, NULL);
-
+ if (i->sink->flags & PA_SINK_FLAT_VOLUME)
/* We might need to update the sink's volume if we are in flat
* volume mode. */
- pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
- }
+ pa_sink_set_volume(i->sink, NULL, FALSE, FALSE);
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_START_MOVE, i, 0, NULL) == 0);
@@ -1295,16 +1246,15 @@ int pa_sink_input_finish_move(pa_sink_input *i, pa_sink *dest, pa_bool_t save) {
pa_sink_update_status(dest);
if (i->sink->flags & PA_SINK_FLAT_VOLUME) {
- pa_cvolume new_volume;
+ pa_cvolume remapped;
- /* Make relative volume absolute again */
- pa_cvolume t = dest->reference_volume;
- pa_cvolume_remap(&t, &dest->channel_map, &i->channel_map);
- pa_sw_cvolume_multiply(&i->virtual_volume, &i->virtual_volume, &t);
+ /* Make relative volumes absolute */
+ remapped = dest->reference_volume;
+ pa_cvolume_remap(&remapped, &dest->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &i->reference_ratio, &remapped);
/* We might need to update the sink's volume if we are in flat volume mode. */
- pa_sink_update_flat_volume(i->sink, &new_volume);
- pa_sink_set_volume(i->sink, &new_volume, FALSE, FALSE, FALSE, FALSE);
+ pa_sink_set_volume(i->sink, NULL, FALSE, i->save_volume);
}
pa_assert_se(pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_FINISH_MOVE, i, 0, NULL) == 0);
diff --git a/src/pulsecore/sink-input.h b/src/pulsecore/sink-input.h
index b5502c4..ea0f8c0 100644
--- a/src/pulsecore/sink-input.h
+++ b/src/pulsecore/sink-input.h
@@ -94,10 +94,12 @@ struct pa_sink_input {
pa_sink_input *sync_prev, *sync_next;
/* Also see http://pulseaudio.org/wiki/InternalVolumes */
- pa_cvolume virtual_volume; /* The volume clients are informed about */
- pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */
- double relative_volume[PA_CHANNELS_MAX]; /* The calculated volume relative to the sink volume as linear factors. */
- pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as relative_volume * volume_factor */
+ pa_cvolume volume; /* The volume clients are informed about */
+ pa_cvolume reference_ratio; /* The ratio of the stream's volume to the sink's reference volume */
+ pa_cvolume real_ratio; /* The ratio of the stream's volume to the sink's real volume */
+ pa_cvolume volume_factor; /* An internally used volume factor that can be used by modules to apply effects and suchlike without having that visible to the outside */
+ pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through. Usually calculated as real_ratio * volume_factor */
+
pa_bool_t muted:1;
/* if TRUE then the source we are connected to and/or the volume
@@ -325,8 +327,6 @@ pa_usec_t pa_sink_input_get_latency(pa_sink_input *i, pa_usec_t *sink_latency);
void pa_sink_input_set_volume(pa_sink_input *i, const pa_cvolume *volume, pa_bool_t save, pa_bool_t absolute);
pa_cvolume *pa_sink_input_get_volume(pa_sink_input *i, pa_cvolume *volume, pa_bool_t absolute);
-pa_cvolume *pa_sink_input_get_relative_volume(pa_sink_input *i, pa_cvolume *v);
-
void pa_sink_input_set_mute(pa_sink_input *i, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_sink_input_get_mute(pa_sink_input *i);
@@ -369,9 +369,6 @@ pa_bool_t pa_sink_input_safe_to_remove(pa_sink_input *i);
pa_memchunk* pa_sink_input_get_silence(pa_sink_input *i, pa_memchunk *ret);
-/* To be used by sink.c only */
-void pa_sink_input_set_relative_volume(pa_sink_input *i, const pa_cvolume *v);
-
#define pa_sink_input_assert_io_context(s) \
pa_assert(pa_thread_mq_get() || !PA_SINK_INPUT_IS_LINKED((s)->state))
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index 717584f..1cce8e6 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -212,7 +212,7 @@ pa_sink* pa_sink_new(
pa_cvolume_reset(&data->volume, data->sample_spec.channels);
pa_return_null_if_fail(pa_cvolume_valid(&data->volume));
- pa_return_null_if_fail(data->volume.channels == data->sample_spec.channels);
+ pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec));
if (!data->muted_is_set)
data->muted = FALSE;
@@ -249,7 +249,7 @@ pa_sink* pa_sink_new(
s->inputs = pa_idxset_new(NULL, NULL);
s->n_corked = 0;
- s->reference_volume = s->virtual_volume = data->volume;
+ s->reference_volume = s->real_volume = data->volume;
pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
s->base_volume = PA_VOLUME_NORM;
s->n_volume_steps = PA_VOLUME_NORM+1;
@@ -434,6 +434,11 @@ void pa_sink_put(pa_sink* s) {
if ((s->flags & PA_SINK_DECIBEL_VOLUME) && s->core->flat_volumes)
s->flags |= PA_SINK_FLAT_VOLUME;
+ /* We assume that if the sink implementor changed the default
+ * volume he did so in real_volume, because that is the usual
+ * place where he is supposed to place his changes. */
+ s->reference_volume = s->real_volume;
+
s->thread_info.soft_volume = s->soft_volume;
s->thread_info.soft_muted = s->muted;
@@ -1212,105 +1217,144 @@ pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s) {
return usec;
}
-static void compute_new_soft_volume(pa_sink_input *i, const pa_cvolume *new_volume) {
- unsigned c;
+/* Called from main context */
+static void compute_reference_ratios(pa_sink *s) {
+ uint32_t idx;
+ pa_sink_input *i;
+
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
+ pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- pa_sink_input_assert_ref(i);
- pa_assert(new_volume->channels == i->sample_spec.channels);
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ unsigned c;
+ pa_cvolume remapped;
- /*
- * This basically calculates:
- *
- * i->relative_volume := i->virtual_volume / new_volume
- * i->soft_volume := i->relative_volume * i->volume_factor
- */
+ /*
+ * Calculates the reference volume from the sink's reference
+ * volume. This basically calculates:
+ *
+ * i->reference_ratio = i->volume / s->reference_volume
+ */
- /* The new sink volume passed in here must already be remapped to
- * the sink input's channel map! */
+ remapped = s->reference_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
- i->soft_volume.channels = i->sample_spec.channels;
+ i->reference_ratio.channels = i->sample_spec.channels;
- for (c = 0; c < i->sample_spec.channels; c++)
+ for (c = 0; c < i->sample_spec.channels; c++) {
- if (new_volume->values[c] <= PA_VOLUME_MUTED)
- /* We leave i->relative_volume untouched */
- i->soft_volume.values[c] = PA_VOLUME_MUTED;
- else {
- i->relative_volume[c] =
- pa_sw_volume_to_linear(i->virtual_volume.values[c]) /
- pa_sw_volume_to_linear(new_volume->values[c]);
+ /* We don't update when the sink volume is 0 anyway */
+ if (remapped.values[c] <= PA_VOLUME_MUTED)
+ continue;
- i->soft_volume.values[c] = pa_sw_volume_from_linear(
- i->relative_volume[c] *
- pa_sw_volume_to_linear(i->volume_factor.values[c]));
+ /* Don't update the reference ratio unless necessary */
+ if (pa_sw_volume_multiply(
+ i->reference_ratio.values[c],
+ remapped.values[c]) == i->volume.values[c])
+ continue;
+
+ i->reference_ratio.values[c] = pa_sw_volume_divide(
+ i->volume.values[c],
+ remapped.values[c]);
}
+ }
+}
+
+/* Called from main context */
+static void compute_real_ratios(pa_sink *s) {
+ pa_sink_input *i;
+ uint32_t idx;
- /* Hooks have the ability to play games with i->soft_volume */
- pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_SET_VOLUME], i);
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
+ pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- /* We don't copy the soft_volume to the thread_info data
- * here. That must be done by the caller */
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ unsigned c;
+ pa_cvolume remapped;
+
+ /*
+ * This basically calculates:
+ *
+ * i->real_ratio := i->volume / s->real_volume
+ * i->soft_volume := i->real_ratio * i->volume_factor
+ */
+
+ remapped = s->real_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
+
+ i->real_ratio.channels = i->sample_spec.channels;
+ i->soft_volume.channels = i->sample_spec.channels;
+
+ for (c = 0; c < i->sample_spec.channels; c++) {
+
+ if (remapped.values[c] <= PA_VOLUME_MUTED) {
+ /* We leave i->real_ratio untouched */
+ i->soft_volume.values[c] = PA_VOLUME_MUTED;
+ continue;
+ }
+
+ /* Don't lose accuracy unless necessary */
+ if (pa_sw_volume_multiply(
+ i->real_ratio.values[c],
+ remapped.values[c]) != i->volume.values[c])
+
+ i->real_ratio.values[c] = pa_sw_volume_divide(
+ i->volume.values[c],
+ remapped.values[c]);
+
+ i->soft_volume.values[c] = pa_sw_volume_multiply(
+ i->real_ratio.values[c],
+ i->volume_factor.values[c]);
+ }
+
+ /* We don't copy the soft_volume to the thread_info data
+ * here. That must be done by the caller */
+ }
}
/* Called from main thread */
-void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume) {
+static void compute_real_volume(pa_sink *s) {
pa_sink_input *i;
uint32_t idx;
pa_sink_assert_ref(s);
pa_assert_ctl_context();
- pa_assert(new_volume);
pa_assert(PA_SINK_IS_LINKED(s->state));
pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
- /* This is called whenever a sink input volume changes or a sink
- * input is added/removed and we might need to fix up the sink
- * volume accordingly. Please note that we don't actually update
- * the sinks volume here, we only return how it needs to be
- * updated. The caller should then call pa_sink_set_volume().*/
+ /* This determines the maximum volume of all streams and sets
+ * s->real_volume accordingly. */
if (pa_idxset_isempty(s->inputs)) {
/* In the special case that we have no sink input we leave the
* volume unmodified. */
- *new_volume = s->reference_volume;
+ s->real_volume = s->reference_volume;
return;
}
- pa_cvolume_mute(new_volume, s->channel_map.channels);
+ pa_cvolume_mute(&s->real_volume, s->channel_map.channels);
/* First let's determine the new maximum volume of all inputs
* connected to this sink */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- unsigned c;
- pa_cvolume remapped_volume;
-
- remapped_volume = i->virtual_volume;
- pa_cvolume_remap(&remapped_volume, &i->channel_map, &s->channel_map);
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ pa_cvolume remapped;
- for (c = 0; c < new_volume->channels; c++)
- if (remapped_volume.values[c] > new_volume->values[c])
- new_volume->values[c] = remapped_volume.values[c];
+ remapped = i->volume;
+ pa_cvolume_remap(&remapped, &i->channel_map, &s->channel_map);
+ pa_cvolume_merge(&s->real_volume, &s->real_volume, &remapped);
}
- /* Then, let's update the soft volumes of all inputs connected
- * to this sink */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- pa_cvolume remapped_new_volume;
-
- remapped_new_volume = *new_volume;
- pa_cvolume_remap(&remapped_new_volume, &s->channel_map, &i->channel_map);
- compute_new_soft_volume(i, &remapped_new_volume);
-
- /* We don't copy soft_volume to the thread_info data here
- * (i.e. issue PA_SINK_INPUT_MESSAGE_SET_VOLUME) because we
- * want the update to be atomically with the sink volume
- * update, hence we do it within the pa_sink_set_volume() call
- * below */
- }
+ /* Then, let's update the real ratios/soft volumes of all inputs
+ * connected to this sink */
+ compute_real_ratios(s);
}
/* Called from main thread */
-void pa_sink_propagate_flat_volume(pa_sink *s) {
+static void propagate_reference_volume(pa_sink *s) {
pa_sink_input *i;
uint32_t idx;
@@ -1323,64 +1367,77 @@ void pa_sink_propagate_flat_volume(pa_sink *s) {
* caused by a sink input volume change. We need to fix up the
* sink input volumes accordingly */
- for (i = PA_SINK_INPUT(pa_idxset_first(s->inputs, &idx)); i; i = PA_SINK_INPUT(pa_idxset_next(s->inputs, &idx))) {
- pa_cvolume sink_volume, new_virtual_volume;
- unsigned c;
-
- /* This basically calculates i->virtual_volume := i->relative_volume * s->virtual_volume */
-
- sink_volume = s->virtual_volume;
- pa_cvolume_remap(&sink_volume, &s->channel_map, &i->channel_map);
-
- for (c = 0; c < i->sample_spec.channels; c++)
- new_virtual_volume.values[c] = pa_sw_volume_from_linear(
- i->relative_volume[c] *
- pa_sw_volume_to_linear(sink_volume.values[c]));
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ pa_cvolume old_volume, remapped;
- new_virtual_volume.channels = i->sample_spec.channels;
+ old_volume = i->volume;
- if (!pa_cvolume_equal(&new_virtual_volume, &i->virtual_volume)) {
- i->virtual_volume = new_virtual_volume;
+ /* This basically calculates:
+ *
+ * i->volume := s->reference_volume * i->reference_ratio */
- /* Hmm, the soft volume might no longer actually match
- * what has been chosen as new virtual volume here,
- * especially when the old volume was
- * PA_VOLUME_MUTED. Hence let's recalculate the soft
- * volumes here. */
- compute_new_soft_volume(i, &sink_volume);
+ remapped = s->reference_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
- /* The virtual volume changed, let's tell people so */
+ /* The reference volume changed, let's tell people so */
+ if (!pa_cvolume_equal(&old_volume, &i->volume))
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
- }
}
-
- /* If the soft_volume of any of the sink inputs got changed, let's
- * make sure the thread copies are synced up. */
- pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SYNC_VOLUMES, NULL, 0, NULL) == 0);
}
/* Called from main thread */
-void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference, pa_bool_t save) {
- pa_bool_t virtual_volume_changed;
+void pa_sink_set_volume(
+ pa_sink *s,
+ const pa_cvolume *volume,
+ pa_bool_t sendmsg,
+ pa_bool_t save) {
+
+ pa_cvolume old_reference_volume;
+ pa_bool_t reference_changed;
pa_sink_assert_ref(s);
pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
- pa_assert(volume);
- pa_assert(pa_cvolume_valid(volume));
- pa_assert(pa_cvolume_compatible(volume, &s->sample_spec));
+ pa_assert(!volume || pa_cvolume_valid(volume));
+ pa_assert(!volume || pa_cvolume_compatible(volume, &s->sample_spec));
+ pa_assert(volume || (s->flags & PA_SINK_FLAT_VOLUME));
+
+ /* If volume is NULL we synchronize the sink's real and reference
+ * volumes with the stream volumes. If it is not NULL we update
+ * the reference_volume with it. */
+
+ old_reference_volume = s->reference_volume;
+
+ if (volume) {
+
+ s->reference_volume = *volume;
+
+ if (s->flags & PA_SINK_FLAT_VOLUME) {
+ /* OK, propagate this volume change back to the inputs */
+ propagate_reference_volume(s);
+
+ /* And now recalculate the real volume */
+ compute_real_volume(s);
+ } else
+ s->real_volume = s->reference_volume;
+
+ } else {
+ pa_assert(s->flags & PA_SINK_FLAT_VOLUME);
+
+ /* Ok, let's determine the new real volume */
+ compute_real_volume(s);
- virtual_volume_changed = !pa_cvolume_equal(volume, &s->virtual_volume);
- s->virtual_volume = *volume;
- s->save_volume = (!virtual_volume_changed && s->save_volume) || save;
+ /* Let's 'push' the reference volume if necessary */
+ pa_cvolume_merge(&s->reference_volume, &s->reference_volume, &s->real_volume);
- if (become_reference)
- s->reference_volume = s->virtual_volume;
+ /* We need to fix the reference ratios of all streams now that
+ * we changed the reference volume */
+ compute_reference_ratios(s);
+ }
- /* Propagate this volume change back to the inputs */
- if (virtual_volume_changed)
- if (propagate && (s->flags & PA_SINK_FLAT_VOLUME))
- pa_sink_propagate_flat_volume(s);
+ reference_changed = !pa_cvolume_equal(&old_reference_volume, &s->reference_volume);
+ s->save_volume = (!reference_changed && s->save_volume) || save;
if (s->set_volume) {
/* If we have a function set_volume(), then we do not apply a
@@ -1393,13 +1450,13 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
} else
/* If we have no function set_volume(), then the soft volume
* becomes the virtual volume */
- s->soft_volume = s->virtual_volume;
+ s->soft_volume = s->real_volume;
/* This tells the sink that soft and/or virtual volume changed */
if (sendmsg)
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
- if (virtual_volume_changed)
+ if (reference_changed)
pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
@@ -1407,67 +1464,114 @@ void pa_sink_set_volume(pa_sink *s, const pa_cvolume *volume, pa_bool_t propagat
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) {
pa_sink_assert_ref(s);
pa_assert_ctl_context();
- pa_assert(volume);
- s->soft_volume = *volume;
+ if (!volume)
+ pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels);
+ else
+ s->soft_volume = *volume;
if (PA_SINK_IS_LINKED(s->state))
pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_VOLUME, NULL, 0, NULL) == 0);
else
- s->thread_info.soft_volume = *volume;
+ s->thread_info.soft_volume = s->soft_volume;
}
-/* Called from main thread */
-const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh, pa_bool_t reference) {
+static void propagate_real_volume(pa_sink *s, const pa_cvolume *old_real_volume) {
+ pa_sink_input *i;
+ uint32_t idx;
+ pa_cvolume old_reference_volume;
+
pa_sink_assert_ref(s);
pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
- if (s->refresh_volume || force_refresh) {
- struct pa_cvolume old_virtual_volume = s->virtual_volume;
+ /* This is called when the hardware's real volume changes due to
+ * some external event. We copy the real volume into our
+ * reference volume and then rebuild the stream volumes based on
+ * i->real_ratio which should stay fixed. */
- if (s->get_volume)
- s->get_volume(s);
+ if (pa_cvolume_equal(old_real_volume, &s->real_volume))
+ return;
- pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0);
+ old_reference_volume = s->reference_volume;
- if (!pa_cvolume_equal(&old_virtual_volume, &s->virtual_volume)) {
+ /* 1. Make the real volume the reference volume */
+ s->reference_volume = s->real_volume;
- s->reference_volume = s->virtual_volume;
+ if (s->flags & PA_SINK_FLAT_VOLUME) {
- /* Something got changed in the hardware. It probably
- * makes sense to save changed hw settings given that hw
- * volume changes not triggered by PA are almost certainly
- * done by the user. */
- s->save_volume = TRUE;
+ PA_IDXSET_FOREACH(i, s->inputs, idx) {
+ pa_cvolume old_volume, remapped;
- if (s->flags & PA_SINK_FLAT_VOLUME)
- pa_sink_propagate_flat_volume(s);
+ old_volume = i->volume;
- pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+ /* 2. Since the sink's reference and real volumes are equal
+ * now our ratios should be too. */
+ i->reference_ratio = i->real_ratio;
+
+ /* 3. Recalculate the new stream reference volume based on the
+ * reference ratio and the sink's reference volume.
+ *
+ * This basically calculates:
+ *
+ * i->volume = s->reference_volume * i->reference_ratio
+ *
+ * This is identical to propagate_reference_volume() */
+ remapped = s->reference_volume;
+ pa_cvolume_remap(&remapped, &s->channel_map, &i->channel_map);
+ pa_sw_cvolume_multiply(&i->volume, &remapped, &i->reference_ratio);
+
+ /* Notify if something changed */
+ if (!pa_cvolume_equal(&old_volume, &i->volume))
+ pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
}
}
- return reference ? &s->reference_volume : &s->virtual_volume;
+ /* Something got changed in the hardware. It probably makes sense
+ * to save changed hw settings given that hw volume changes not
+ * triggered by PA are almost certainly done by the user. */
+ s->save_volume = TRUE;
+
+ if (!pa_cvolume_equal(&old_reference_volume, &s->reference_volume))
+ pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
}
/* Called from main thread */
-void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_volume) {
+const pa_cvolume *pa_sink_get_volume(pa_sink *s, pa_bool_t force_refresh) {
pa_sink_assert_ref(s);
pa_assert_ctl_context();
pa_assert(PA_SINK_IS_LINKED(s->state));
- /* The sink implementor may call this if the volume changed to make sure everyone is notified */
- if (pa_cvolume_equal(&s->virtual_volume, new_volume))
- return;
+ if (s->refresh_volume || force_refresh) {
+ struct pa_cvolume old_real_volume;
- s->reference_volume = s->virtual_volume = *new_volume;
- s->save_volume = TRUE;
+ old_real_volume = s->real_volume;
- if (s->flags & PA_SINK_FLAT_VOLUME)
- pa_sink_propagate_flat_volume(s);
+ if (s->get_volume)
+ s->get_volume(s);
- pa_subscription_post(s->core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, s->index);
+ pa_assert_se(pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_GET_VOLUME, NULL, 0, NULL) == 0);
+
+ propagate_real_volume(s, &old_real_volume);
+ }
+
+ return &s->reference_volume;
+}
+
+/* Called from main thread */
+void pa_sink_volume_changed(pa_sink *s, const pa_cvolume *new_real_volume) {
+ pa_cvolume old_real_volume;
+
+ pa_sink_assert_ref(s);
+ pa_assert_ctl_context();
+ pa_assert(PA_SINK_IS_LINKED(s->state));
+
+ /* The sink implementor may call this if the volume changed to make sure everyone is notified */
+
+ old_real_volume = s->real_volume;
+ s->real_volume = *new_real_volume;
+
+ propagate_real_volume(s, &old_real_volume);
}
/* Called from main thread */
@@ -1516,7 +1620,6 @@ pa_bool_t pa_sink_get_mute(pa_sink *s, pa_bool_t force_refresh) {
}
}
-
return s->muted;
}
diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h
index 3cd7e59..936d1c2 100644
--- a/src/pulsecore/sink.h
+++ b/src/pulsecore/sink.h
@@ -90,9 +90,10 @@ struct pa_sink {
unsigned n_volume_steps; /* shall be constant */
/* Also see http://pulseaudio.org/wiki/InternalVolumes */
- pa_cvolume virtual_volume; /* The volume clients are informed about */
- pa_cvolume reference_volume; /* The volume taken as refernce base for relative sink input volumes */
+ pa_cvolume reference_volume; /* The volume exported and taken as reference base for relative sink input volumes */
+ pa_cvolume real_volume; /* The volume that the hardware is configured to */
pa_cvolume soft_volume; /* The internal software volume we apply to all PCM data while it passes through */
+
pa_bool_t muted:1;
pa_bool_t refresh_volume:1;
@@ -303,11 +304,8 @@ int pa_sink_update_status(pa_sink*s);
int pa_sink_suspend(pa_sink *s, pa_bool_t suspend, pa_suspend_cause_t cause);
int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend, pa_suspend_cause_t cause);
-void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume);
-void pa_sink_propagate_flat_volume(pa_sink *s);
-
-void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg, pa_bool_t become_reference, pa_bool_t save);
-const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh, pa_bool_t reference);
+void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t sendmsg, pa_bool_t save);
+const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh);
void pa_sink_set_mute(pa_sink *sink, pa_bool_t mute, pa_bool_t save);
pa_bool_t pa_sink_get_mute(pa_sink *sink, pa_bool_t force_refresh);
commit 2f54798b1afdbe684dd1e5ba6d39a807c6afc8d8
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 03:37:29 2009 +0200
mmkbd: replace manual code by pa_cvolume_{inc|dec}()
diff --git a/src/modules/module-mmkbd-evdev.c b/src/modules/module-mmkbd-evdev.c
index 7be4870..516bf41 100644
--- a/src/modules/module-mmkbd-evdev.c
+++ b/src/modules/module-mmkbd-evdev.c
@@ -65,6 +65,8 @@ struct userdata {
pa_module *module;
};
+#define DELTA (PA_VOLUME_NORM/20)
+
static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
struct userdata *u = userdata;
@@ -85,14 +87,27 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
}
if (ev.type == EV_KEY && (ev.value == 1 || ev.value == 2)) {
- enum { INVALID, UP, DOWN, MUTE_TOGGLE } volchange = INVALID;
+ enum {
+ INVALID,
+ UP,
+ DOWN,
+ MUTE_TOGGLE
+ } volchange = INVALID;
pa_log_debug("Key code=%u, value=%u", ev.code, ev.value);
switch (ev.code) {
- case KEY_VOLUMEDOWN: volchange = DOWN; break;
- case KEY_VOLUMEUP: volchange = UP; break;
- case KEY_MUTE: volchange = MUTE_TOGGLE; break;
+ case KEY_VOLUMEDOWN:
+ volchange = DOWN;
+ break;
+
+ case KEY_VOLUMEUP:
+ volchange = UP;
+ break;
+
+ case KEY_MUTE:
+ volchange = MUTE_TOGGLE;
+ break;
}
if (volchange != INVALID) {
@@ -101,36 +116,20 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK)))
pa_log("Failed to get sink '%s'", u->sink_name);
else {
- int i;
pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
-#define DELTA (PA_VOLUME_NORM/20)
-
switch (volchange) {
case UP:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] < PA_VOLUME_MAX - DELTA)
- cv.values[i] += DELTA;
- else
- cv.values[i] = PA_VOLUME_MAX;
- }
-
+ pa_cvolume_inc(&cv, DELTA);
pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case DOWN:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] > DELTA)
- cv.values[i] -= DELTA;
- else
- cv.values[i] = PA_VOLUME_MUTED;
- }
-
+ pa_cvolume_dec(&cv, DELTA);
pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case MUTE_TOGGLE:
-
pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
break;
commit 7af3833b7110c08d3717edb6018350d390e9d492
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 03:37:42 2009 +0200
lirc: replace manual code by pa_cvolume_{inc|dec}()
diff --git a/src/modules/module-lirc.c b/src/modules/module-lirc.c
index fdfdc79..d0e902f 100644
--- a/src/modules/module-lirc.c
+++ b/src/modules/module-lirc.c
@@ -63,6 +63,8 @@ struct userdata {
float mute_toggle_save;
};
+#define DELTA (PA_VOLUME_NORM/20)
+
static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
struct userdata *u = userdata;
char *name = NULL, *code = NULL;
@@ -119,31 +121,16 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK)))
pa_log("Failed to get sink '%s'", u->sink_name);
else {
- int i;
pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
-#define DELTA (PA_VOLUME_NORM/20)
-
switch (volchange) {
case UP:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] < PA_VOLUME_MAX - DELTA)
- cv.values[i] += DELTA;
- else
- cv.values[i] = PA_VOLUME_MAX;
- }
-
+ pa_cvolume_inc(&cv, DELTA);
pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
case DOWN:
- for (i = 0; i < cv.channels; i++) {
- if (cv.values[i] > DELTA)
- cv.values[i] -= DELTA;
- else
- cv.values[i] = PA_VOLUME_MUTED;
- }
-
+ pa_cvolume_dec(&cv, DELTA);
pa_sink_set_volume(s, &cv, TRUE, TRUE);
break;
@@ -156,7 +143,6 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
break;
case MUTE_TOGGLE:
-
pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
break;
commit b2cb8efd285d451723c8b30d4b319f5a0143bf01
Merge: 7af3833 91e06c1
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 04:14:00 2009 +0200
Merge commit 'origin/master-tx'
commit 8f2909058a2d7858a9e0efa6edd8b9b970f74328
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 04:15:36 2009 +0200
i18n: add ko to LINGUAS
diff --git a/po/LINGUAS b/po/LINGUAS
index 660ebee..1a66ed6 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -12,6 +12,7 @@ gu
hi
it
kn
+ko
mr
nl
or
commit f4f16ab10d31e61f1ca8867c2dad9874025637f8
Author: Lennart Poettering <lennart at poettering.net>
Date: Wed Aug 19 04:16:35 2009 +0200
i18n: run make update-po
diff --git a/po/as.po b/po/as.po
index e972d82..63fa355 100644
--- a/po/as.po
+++ b/po/as.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio.as\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-08 12:35+0530\n"
"Last-Translator: Amitakhya Phukan <aphukan at fedoraproject.org>\n"
"Language-Team: Assamese <fedora-trans-as at redhat.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -70,11 +70,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à¦à¦à§à¦¯à¦¨à§à¦¤à§°à§à¦£ à¦
'ডিà¦
'"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "মà§à¦¡à§à¦®"
@@ -90,243 +90,243 @@ msgstr "নতà§à¦¨ dl loader বিতৰণ à¦à§°à¦¿à¦¬à¦²à§ বিফল
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loader যà§à¦ à¦à§°à¦¿à¦¬à¦²à§ বিফল ।"
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "à¦à¦¿à¦à§à¦¨à§à¦² %s পà§à§±à¦¾ à¦'ল ।"
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "পà§à§°à¦¸à§à¦¥à¦¾à¦¨ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' পà§à§±à¦¾ ন'à¦'ল ।"
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' সমষà§à¦à¦¿ পà§à§±à¦¾ ন'à¦'ল ।"
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' (UID %lu) à¦à§°à§ সমষà§à¦à¦¿ '%s' (GID %lu) পà§à§±à¦¾ à¦'ল ।"
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' à¦à§°à§ সমষà§à¦à¦¿ '%s' ৰ GID à¦
মিল ।"
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "বà§à¦¯à§±à¦¹à¦¾à§°à¦à§°à§à¦¤à¦¾ '%s' ৰ à¦à§°à§° পà¦à§à¦à¦¿à¦à¦¾ '%s' নহà§, à¦à¦à¦à¦¾à¦£ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' সà§à¦·à§à¦à¦¿ à¦à§°à¦¿à¦¬à¦²à§ বিফল: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "সমষà§à¦à¦¿à§° তালিà¦à¦¾ সলনি à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID সলনি à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID সলনি à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "ৰà§à¦à§° à¦
ধিà¦à¦¾à§° সফলà¦à¦¾à¦¬à§ à¦à§°à§à§±à¦¾ à¦'ল ।"
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦ সà§à¦¥à¦¾à¦ªà¦¤à§à¦¯à¦¤ পà§à§°à¦£à¦¾à¦²à§ বà§à¦¯à¦¾à¦ªà¦ মà§à¦¡ à¦
সমৰà§à¦¥à¦¿à¦¤ ।"
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à¦à¦¦à§à¦¶ শাৰৠবিশà§à¦²à§à¦·à¦£ à¦à§°à¦¿à¦¬à¦²à§ বিফল ।"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "ডà§à¦®à¦¨ নাঠà¦à¦²à¦¾"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u ৰà§à¦ªà§ ডà§à¦®à¦¨ à¦à¦²à¦¿à¦à§"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডà§à¦®à¦¨ kill à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পৰিà¦à§à§ à¦à¦ পà§à§°à§à¦à§à§°à¦¾à¦® সà¦à§à¦à¦¾à¦²à¦¿à¦¤ হà§à§±à¦¾ à¦à¦à¦¿à¦¤ নহৠ(ন'হ'লৠ--system à¦à¦²à§à¦²à¦¿à¦à¦¿à¦¤ হà§) ।"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Root-ৰ à¦
ধিà¦à¦¾à§° à¦à§±à¦¶à§à¦¯à¦ ।"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "পà§à§°à¦£à¦¾à¦²à§ à¦à¦¾à¦¨à§à¦à¦¿à§° à¦à§à¦·à§à¦¤à§à§°à¦¤ --start সমৰà§à¦¥à¦¿à¦¤ নহৠ।"
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-exit নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহà§!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-module-loading নিৰà§à¦§à¦¾à§°à¦¿à¦¤ নহà§!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, SHM মà§à¦¡ বলপà§à§°à§à¦¬à¦ নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§, à¦à¦¾à¦® নà¦à§°à¦¾ সমà§à§° পৰা পà§à§°à¦¸à§à¦¥à¦¾à¦¨ à¦à§°à¦¾ বলপà§à§°à§à¦¬à¦ নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe বিফল: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বিফল ।"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "সফলতাৰৠডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦à¦à§ PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "সà¦à§à¦à¦²à¦¨à§° à¦à§à¦¹à¦¸à§à¦¥: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "সà¦à§à¦à¦²à¦¨à§° CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "à¦à§à¦¹à¦¸à§à¦¥à¦¤ à¦à¦²à§à§±à¦¾ হà§à¦à§: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পà§à§±à¦¾ à¦à§à¦à§ ।"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "পà§à¦à§° মাপ %lu bytes"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§: হà§"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমৰà§à¦¥à¦¨à§° সà§à¦¤à§ সà¦à§à¦à¦²à¦¨ à¦à§°à¦¾ হà§à¦à§: নহà§"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimized build: হà§"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimized build: নহà§"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à§°à¦¾ হà§à¦à§, সà¦à¦²à§ asserts নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à§°à¦¾ হà§à¦à§, à¦
à¦à¦² fast path asserts নিষà§à¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "সà¦à¦²à§ asserts সà¦à§à§°à¦¿à§ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "যনà§à¦¤à§à§° ID পà§à§°à¦¾à¦ªà§à¦¤ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "যনà§à¦¤à§à§° ID হ'ল %s ।"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "ৰান-à¦à¦¾à¦à¦® পà¦à§à¦à¦¿à¦à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "à¦
ৱসà§à¦¥à¦¾à¦¸à§à¦à¦ পà¦à§à¦à¦¿à¦à¦¾ %s বà§à¦¯à§±à¦¹à¦¾à§° à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "পà§à§°à¦£à¦¾à¦²à§ মà§à¦¡à¦¤ à¦à¦²à¦¿à¦à§: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -336,15 +336,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "নতà§à¦¨ high-resolution timers পà§à§±à¦¾ হà§! à¦
à¦à¦¿à¦¨à¦¨à§à¦¦à¦¨!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -352,28 +352,28 @@ msgstr ""
"শà§à§°à§à¦®à¦¾à¦¨, à¦à¦ªà§à¦¨à¦¾à§° à¦à¦¾à§°à§à¦£à§à¦² পà§à§°à¦£à¦¿! high-resolution timer সà¦à§à§°à¦¿à§ থà¦à¦¾ Linux ঠà¦à¦à¦¿ "
"à¦à¦ªà¦¦à§à¦¶ দিà§à¦¾ হà§!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"তà§à¦²à¦¿ লà§à§±à¦¾ মডিà¦à¦² নà§à¦¹à§à§±à¦¾à¦à§ ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§, à¦à§à¦¨à§ à¦à¦¾à¦® সà¦à§à¦à¦¾à¦²à¦¨ à¦à§°à¦¾ সমà§à¦à§± নহৠ।"
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ডà§à¦®à¦¨ à¦à§°à¦®à§à¦ à¦à§°à¦¾ সমà§à¦ªà§à§°à§à¦£ ।"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à§°à¦¾à§° পà§à§°à¦à§à§°à¦¿à§à¦¾ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হà§à¦à§ ।"
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à§°à¦¾ হà§à¦à§ ।"
@@ -690,12 +690,12 @@ msgstr "[%s:%u] à¦
à¦à¦¶à§° মাপ '%s' বà§à¦§ নহৠ।"
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à§° '%s' বà§à¦§ নহৠ।"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§° à¦à§à¦²à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -703,13 +703,14 @@ msgstr ""
"নিৰà§à¦§à¦¾à§°à¦¿à¦¤ à¦
বিà¦à¦²à§à¦ªà¦¿à¦¤ à¦à§à¦¨à§à¦² মà§à¦ªà¦¤ নিৰà§à¦§à¦¾à§°à¦¿à¦¤ à¦
বিà¦à¦²à§à¦ªà¦¿à¦¤ à¦à§à¦¨à§à¦²à§° সà¦à¦à§à¦¯à¦¾à¦¤à¦à§ বà§à¦²à§à¦ সà¦à¦à§à¦¯à¦ "
"à¦à§à¦¨à§à¦² à¦à¦à§ ।"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§°à§° পৰা পà§à¦¾ হ'ব: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "root-ৰ à¦
ধিà¦à¦¾à§° বৰà§à¦à¦¨ à¦à§°à¦¾ হà§à¦à§ ।"
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -720,7 +721,7 @@ msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à§±à¦¸à§à¦¥à¦¾"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à§±à¦¸à§à¦¥à¦¾ à¦à§°à¦®à§à¦ à¦à§°à¦¾ হ'ব"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "মà§à¦¨à§"
@@ -924,33 +925,33 @@ msgstr "à¦à¦ªà§°à¦¤ পিà¦à¦¤ বাà¦à¦à¦«à¦¾à¦²à§"
msgid "Top Rear Right"
msgstr "à¦à¦ªà§°à¦¤ পিà¦à¦¤ সà§à¦à¦«à¦¾à¦²à§"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à¦
বà§à¦§)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "সà§à¦à¦¿à§°à¦¿à¦"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ ৪.০"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ ৪.১"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ ৫.০"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ ৫.১"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "à¦à¦¾à§°à¦¾à¦à¦£à§à¦¡ à§.১"
@@ -1054,27 +1055,27 @@ msgstr "à¦
নà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ বাসà§à¦¤à¦¬à¦¾à§à¦¨"
msgid "Client forked"
msgstr "à¦à§à§°à¦¾à¦¹à¦ ফৰà§à¦ à¦à§°à¦¾ হà§à¦à§"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1087,7 +1088,7 @@ msgstr "XOpenDisplay() বà§à¦¯à§°à§à¦¥"
msgid "Failed to parse cookie data"
msgstr "à¦à§à¦à¦¿à§° তথà§à¦¯ বিশà§à¦²à§à¦·à¦£ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "বিনà§à¦¯à¦¾à¦¸ নথিপতà§à§° '%s' à¦à§à¦²à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥: %s"
@@ -1101,12 +1102,12 @@ msgstr "à¦à§à¦¨à§ à¦à§à¦à¦¿ তà§à¦²à¦¿ লà§à§±à¦¾ নহৠ। à¦à§
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¦
à¦à¦¾à¦¨à¦¾ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨ '%s'-ৰ বাবৠবাৰà§à¦¤à¦¾ পà§à§°à¦¾à¦ªà§à¦¤ হà§à¦à§"
@@ -2185,39 +2186,39 @@ msgstr "à¦à§à¦à¦¿ সà¦à¦à§à§°à¦¾à¦¨à§à¦¤ তথà§à¦¯ তà§à¦²à¦¿à¦¬à¦²
msgid "Not yet implemented.\n"
msgstr "à¦à¦¤à¦¿à§à¦¾à¦ বাসà§à¦¤à¦¬à¦¾à§à¦¿à¦¤ নহৠ।\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডà§à¦®à¦¨ kill à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ডà§à¦®à¦¨à§° পৰা à¦à§à¦¨à§ পà§à§°à¦¤à¦¿à¦à§à§°à¦¿à§à¦¾ পà§à§±à¦¾ নাযাৠ।"
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2226,7 +2227,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn লঠপà§à§°à§à§à¦ à¦à§°à¦¿à¦¬à¦²à§ বà§à¦¯à§°à§à¦¥ ।"
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2242,7 +2243,7 @@ msgstr ""
"POLLOUT নিৰà§à¦§à¦¾à§°à¦¿à¦¤ হà§à§±à¦¾à§°à¦¿ পিà¦à¦¤à§ à¦à¦®à¦¿ à¦à¦¥à¦¿à¦²à§ -- à¦à¦¿à¦¨à§à¦¤à§ তাৰ পিà¦à§° snd_pcm_avail() ঠ০ "
"দিলৠবা à¦
নà§à¦¯ à¦à¦à¦¾ মান < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2259,15 +2260,15 @@ msgstr ""
"দিলৠবা à¦
নà§à¦¯ à¦à¦à¦¾ মান < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2275,6 +2276,9 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio ধà§à¦¬à¦¨à¦¿ সà§à§±à¦"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "পà§à§°à¦£à¦¾à¦²à§à§° bus লৠসà¦à¦¯à§à¦ à¦à§°à¦¿à¦¬ পৰা ন'à¦'ল: %s"
diff --git a/po/bn_IN.po b/po/bn_IN.po
index eac6882..15c074d 100644
--- a/po/bn_IN.po
+++ b/po/bn_IN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-08 16:21+0530\n"
"Last-Translator: Runa Bhattacharjee <runab at fedoraproject.org>\n"
"Language-Team: Bengali INDIA <fedora-trans-bn_in at redhat.com>\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à¦
à¦à§à¦¯à¦¨à§à¦¤à¦°à§à¦£ à¦
ডিà¦"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "মà§à¦¡à§à¦®"
@@ -91,246 +91,246 @@ msgstr "নতà§à¦¨ dl লà§à¦¡à¦¾à¦° বরাদà§à¦¦ à¦à¦°à¦¤à§ বà§
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loader যà§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s সিà¦à¦¨à§à¦¯à¦¾à¦² পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ সনà§à¦§à¦¾à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "দল '%s' সনà§à¦§à¦¾à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ '%s' (UID %lu) ঠদল '%s' (GID %lu) পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§à¦° ঠ'%s' দলà§à¦° GID-র মধà§à¦¯à§ à¦à¦°à¦®à¦¿à¦²à¥¤"
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
"'%s' বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦à¦¾à¦°à§ বà§à¦¯à¦à§à¦¤à¦¿à¦à¦¤ ডিরà§à¦à§à¦à¦°à¦¿ রà§à¦ªà§ '%s' ধারà§à¦¯ à¦à¦°à¦¾ হà§à¦¨à¦¿, à¦
à¦à§à¦°à¦¾à¦¹à§à¦¯ à¦à¦°à¦¾ হবà§à¥¤"
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' নিরà§à¦®à¦¾à¦£ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "দলà§à¦° তালিà¦à¦¾ পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID পরিবরà§à¦¤à¦¨ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "root-র à¦
ধিà¦à¦¾à¦° সাফলà§à¦¯à§à¦° সাথৠবরà§à¦à¦¨ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "à¦à¦ পà§à¦²à§à¦¯à¦¾à¦à¦«à¦°à§à¦®à§, সিসà§à¦à§à¦®à¦¬à§à¦¯à¦¾à¦ªà§ মà§à¦¡ সমরà§à¦¥à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) বিফল: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à¦à¦®à¦¾à¦¨à§à¦¡-লাà¦à¦¨ পারà§à¦¸ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "ডà§à¦®à¦¨ à¦à¦²à¦à§ না"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u রà§à¦ªà§ ডà§à¦®à¦¨ à¦à¦²à¦à§"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ডà§à¦®à¦¨ kill à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"root পরিà¦à§à§ à¦à¦ পà§à¦°à§à¦à§à¦°à¦¾à¦®à¦à¦¿ সà¦à§à¦à¦¾à¦²à¦¿à¦¤ হà¦à§à¦¾ à¦à¦à¦¿à¦¤ নৠ(যদি না --system à¦à¦²à§à¦²à¦¿à¦à¦¿à¦¤ হà§)।"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Root-র à¦
ধিà¦à¦¾à¦° à¦à¦¬à¦¶à§à¦¯à¦à¥¤"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "সিসà§à¦à§à¦® à¦à¦¨à¦¸à§à¦à§à¦¯à¦¾à¦¨à§à¦¸à§à¦° à¦à§à¦·à§à¦¤à§à¦°à§ --start সমরà§à¦¥à¦¿à¦¤ নà§à¥¤"
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-exit নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হà§à¦¨à¦¿!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, à¦à¦¿à¦¨à§à¦¤à§ --disallow-module-loading নিরà§à¦§à¦¾à¦°à¦¿à¦¤ হà§à¦¨à¦¿!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, SHM মà§à¦¡ বলপà§à¦°à§à¦¬à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà¦à§à¦à§!"
# http://linux.die.net/man/1/pulseaudio à¦à¦à¦¾à¦¨à§ রà§à¦«à¦¾à¦°à§à¦¨à§à¦¸ পাà¦à§à¦¾ যাবà§
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§, à¦à¦°à§à¦®à¦¹à§à¦¨ à¦
বসà§à¦¥à¦¾à¦° à¦à¦¨à§à¦¯ ধারà§à¦¯ সমà§à¦¸à§à¦®à¦¾ পà§à¦°à§à¦¤à§ পরৠপà§à¦°à¦¸à§à¦¥à¦¾à¦¨à§à¦° বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ "
"বলপà§à¦°à§à¦¬à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà¦à§à¦à§!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "পাà¦à¦ª বিফল: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() বিফল: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() বিফল: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¤à§ বিফল।"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "সাফলà§à¦¯à§à¦° সাথৠডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¦à¦à¦¿ PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "à¦à¦®à§à¦ªà¦¾à¦à¦²à§à¦¶à¦¨à§à¦° হà§à¦¸à§à¦: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à¦à¦®à§à¦ªà¦¾à¦à¦²à¦¶à¦¨à§à¦° CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ হà§à¦¸à§à¦à§ à¦à¦²à¦à§: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU পাà¦à§à¦¾ à¦à¦¿à§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "পà§à¦à§à¦° মাপ %lu বাà¦à¦"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind সমরà§à¦¥à¦¨ সহ à¦à¦®à§à¦ªà¦¾à¦à¦² à¦à¦°à¦¾ হà§à§à¦à§: না"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind মà§à¦¡à§ à¦à¦²à¦à§: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "সরà§à¦¬à¦¾à¦ªà§à¦à§à¦· à¦à¦¤à§à¦¤à¦® বিলà§à¦¡: হà§à¦¯à¦¾à¦"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "সরà§à¦¬à¦¾à¦ªà§à¦à§à¦· à¦à¦¤à§à¦¤à¦® বিলà§à¦¡: না"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à¦°à¦¾ হà§à§à¦à§, সà¦à¦² à¦
à§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH বà§à¦¯à¦¾à¦à§à¦¯à¦¾ à¦à¦°à¦¾ হà§à§à¦à§, শà§à¦§à§à¦®à¦¾à¦¤à§à¦° ফাসà§à¦ পাথ à¦
à§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦ নিষà§à¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "সà¦à¦² à¦
à§à¦¯à¦¾à¦¸à¦¾à¦°à§à¦ সà¦à§à¦°à¦¿à§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "মà§à¦¶à¦¿à¦¨ ID পà§à¦°à¦¾à¦ªà§à¦¤ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "মà§à¦¶à¦¿à¦¨ ID হল %s।"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "মà§à¦¶à¦¿à¦¨ ID হল %s।"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "রান-à¦à¦¾à¦à¦® ডিরà§à¦à§à¦à¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "à¦
বসà§à¦¥à¦¾à¦¸à§à¦à¦ ডিরà§à¦à§à¦à¦°à¦¿ %s বà§à¦¯à¦¬à¦¹à¦¾à¦° à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "সিসà§à¦à§à¦® মà§à¦¡à§ à¦à¦²à¦à§: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,42 +340,42 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "à¦à¦à§à¦-রà§à¦¸à§à¦²à¦¿à¦à¦¶à¦¨à§à¦° নতà§à¦¨ à¦à¦¾à¦à¦®à¦¾à¦° à¦à¦ªà¦²à¦¬à§à¦§ রà§à§à¦à§! পরà§à¦à§à¦·à¦¾ à¦à¦°à§ দà§à¦à§à¦¨!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "à¦à¦à§à¦-রà§à¦¸à§à¦²à¦¿à¦à¦¶à¦¨à§à¦° নতà§à¦¨ à¦à¦¾à¦à¦®à¦¾à¦° সহ Linux সà¦à§à¦°à¦¿à§ à¦à¦°à¦¾ বাà¦à§à¦à¦¨à§à§!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"লà§à¦¡ à¦à¦°à¦¾ মডিà¦à¦² বিনা ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§ à¦à¦¬à¦ à¦à§à¦¨à§ à¦à¦°à§à¦® সà¦à§à¦à¦¾à¦²à¦¨ à¦à¦°à¦¾ সমà§à¦à¦¬ নà§à¥¤"
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ডà§à¦®à¦¨ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à¦°à¦¾à¦° পà§à¦°à¦à§à¦°à¦¿à§à¦¾ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ডà§à¦®à¦¨ বনà§à¦§ à¦à¦°à¦¾ হà§à§à¦à§à¥¤"
@@ -701,12 +701,12 @@ msgstr "[%s:%u] à¦
à¦à¦¶à§à¦° মাপ '%s' বà§à¦§ নà§à¥¤"
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nice সà§à¦¤à¦° '%s' বà§à¦§ নà§à¥¤"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à§à¦¶à¦¨ ফাà¦à¦² à¦à§à¦²à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -714,13 +714,14 @@ msgstr ""
"ডিফলà§à¦ à¦à§à¦¯à¦¾à¦¨à§à¦² মà§à¦¯à¦¾à¦ªà§à¦° মধà§à¦¯à§ à¦
নà§à¦¤à¦°à§à¦à§à¦à§à¦¤ à¦à§à¦¯à¦¾à¦¨à§à¦²à§à¦° সà¦à¦à§à¦¯à¦¾ ঠà¦à§à¦¯à¦¾à¦¨à§à¦²à§à¦° ডিফলà§à¦ সà¦à¦à§à¦¯à¦¾à¦° মধà§à¦¯à§ "
"à¦à¦°à¦®à¦¿à¦²à¥¤"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### à¦à¦¿à¦¹à§à¦¨à¦¿à¦¤ à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à§à¦¶à¦¨ ফাà¦à¦² থà§à¦à§ পà§à¦¾ হবà§: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "root-র à¦
ধিà¦à¦¾à¦° বরà§à¦à¦¨ à¦à¦°à¦¾ হà¦à§à¦à§à¥¤"
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -731,7 +732,7 @@ msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio শবà§à¦¦ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾ à¦à¦°à¦®à§à¦ à¦à¦°à¦¾ হবà§"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "মà§à¦¨à§"
@@ -935,33 +936,33 @@ msgstr "à¦à¦ªà¦°à§ পিà¦à¦¨à§ বাà¦à¦¦à¦¿à¦à§"
msgid "Top Rear Right"
msgstr "à¦à¦ªà¦°à§ পিà¦à¦¨à§ ডানদিà¦à§"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à¦
বà§à¦§)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "সà§à¦à¦¿à¦°à¦¿à¦"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "সারাà¦à¦¨à§à¦¡ ৪.০"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "সারাà¦à¦¨à§à¦¡ ৪.১"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "সারাà¦à¦¨à§à¦¡ ৫.০"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "সারাà¦à¦¨à§à¦¡ ৫.১"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "সারাà¦à¦¨à§à¦¡ à§.১"
@@ -1065,27 +1066,27 @@ msgstr "à¦
নà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ বাসà§à¦¤à¦¬à¦¾à§à¦¨"
msgid "Client forked"
msgstr "à¦à§à¦²à¦¾à§à§à¦¨à§à¦ ফরà§à¦ à¦à¦°à¦¾ হà§à§à¦à§"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f à¦à¦¿à¦¬à¦¿à¦¬à¦¾à¦à¦"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f মিবিবাà¦à¦"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f à¦à¦¿à¦¬à¦¿à¦¬à¦¾à¦à¦"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u বাà¦à¦"
@@ -1098,7 +1099,7 @@ msgstr "XOpenDisplay() বà§à¦¯à¦°à§à¦¥"
msgid "Failed to parse cookie data"
msgstr "à¦à§à¦à¦¿à¦° তথà§à¦¯ পারà§à¦¸ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "à¦à¦¨à¦«à¦¿à¦à¦¾à¦°à§à¦¶à¦¨ ফাà¦à¦² '%s' à¦à§à¦²à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
@@ -1112,12 +1113,12 @@ msgstr "à¦à§à¦¨à§ à¦à§à¦à¦¿ লà§à¦¡ à¦à¦°à¦¾ হà§à¦¨à¦¿à¥¤ à¦à§à¦
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¦
à¦à¦¾à¦¨à¦¾ à¦à¦à§à¦¸à¦à§à¦¨à¦¶à¦¨ '%s'-র à¦à¦¨à§à¦¯ বারà§à¦¤à¦¾ পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§"
@@ -2197,39 +2198,39 @@ msgstr "à¦à§à¦à¦¿ সà¦à¦à§à¦°à¦¾à¦¨à§à¦¤ তথà§à¦¯ লà§à¦¡ à¦à¦°
msgid "Not yet implemented.\n"
msgstr "à¦à¦à¦¨à§ বাসà§à¦¤à¦¬à¦¾à§à¦¿à¦¤ হà§à¦¨à¦¿à¥¤\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ডà§à¦®à¦¨ kill à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ডà§à¦®à¦¨ থà§à¦à§ à¦à§à¦¨à§ পà§à¦°à¦¤à¦¿à¦à§à¦°à¦¿à§à¦¾ পাà¦à§à¦¾ যাà¦à§à¦à§ না।"
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2238,7 +2239,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn লঠপà§à¦°à§à§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥à¥¤"
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2255,7 +2256,7 @@ msgstr ""
"POLLOUT set দà§à¦¬à¦¾à¦°à¦¾ à¦à§à¦¤à¦¾à¦¬à¦¨à§ সà§à¦·à§à¦à¦¿ হà§à§à¦à§ -- পরবরà§à¦¤à§ snd_pcm_avail() থà§à¦à§ 0 à¦
থবা < "
"min_avail-র থà§à¦à§ à¦à¦® à¦
নà§à¦¯ à¦à¦à¦à¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2273,15 +2274,15 @@ msgstr ""
"min_avail-র থà§à¦à§ à¦à¦® à¦
নà§à¦¯ à¦à¦à¦à¦¿ মান পà§à¦°à¦¾à¦ªà§à¦¤ হà§à§à¦à§à¥¤"
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "বনà§à¦§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "হাà¦-ফিডà§à¦²à¦¿à¦à¦¿ পà§à¦²à§-বà§à¦¯à¦¾à¦ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¦à§à¦²à¦¿à¦«à§à¦¨à¦¿ ডà§à¦ªà§à¦²à§ (HSP/HFP)"
@@ -2289,6 +2290,9 @@ msgstr "à¦à§à¦²à¦¿à¦«à§à¦¨à¦¿ ডà§à¦ªà§à¦²à§ (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio শবà§à¦¦à§à¦° সারà§à¦à¦¾à¦°"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "সিসà§à¦à§à¦® বাসà§à¦° সাথৠসà¦à¦¯à§à¦ à¦à¦°à¦¤à§ বà§à¦¯à¦°à§à¦¥: %s"
diff --git a/po/ca.po b/po/ca.po
index f3b0a59..373c870 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-07-18 11:40+0100\n"
"Last-Translator: Tomàs Bigordà <t0mynoker at gmail.com>\n"
"Language-Team: Catalan <fedora at softcatala.net>\n"
@@ -31,7 +31,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -93,11 +93,11 @@ msgstr ""
"pulgin=<nom del connector ladspa> label=<etiqueta del connector ladspa> "
"control=<llista separada per comes dels valors de control d'entrada>"
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Audio intern"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Mòdem"
@@ -113,92 +113,92 @@ msgstr "No s'ha pogut allotjar el nou carregador dl."
msgid "Failed to add bind-now-loader."
msgstr "No s'ha pogut afegir bind-now-loader."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "S'ha obtingut la senyal %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "S'està sortint."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "No s'ha trobat l'usuari '%s'."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "No s'ha trobat el grup '%s'."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "S'han trobat l'usuari '%s' (UID %lu) i el grup '%s' (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "El GID de l'usuari '%s' i del grup '%s' no coincideixen."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
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:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "No s'ha pogut crear '%s': %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "No s'ha pogut canviar la llista del grup: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "No s'ha pogut canviar el GID: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "No s'ha pogut canviar l'UID: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "S'han alliberat els permisos de root."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "El mode de sistema global no és compatible amb aquesta plataforma."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "S'ha produït un error en setrlimit(%s, (%u, %u)): %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "No s'ha pogut interpretar la lÃnia d'ordres."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "El dimoni no s'està executant"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -206,158 +206,158 @@ msgstr ""
"No és necessari executar aquesta aplicació com a root (excepte si "
"s'especifica --system)"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Es requereixen privilegis de root."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instà ncies de sistema."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-exit."
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat l'opció --"
"disallow-module-loading."
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"S'està executant en mode sistema, es deshabilitarà el mode SHM forçosament."
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
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."
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "S'han trobat %u CPU's"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pà gina és de %lu bytes."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sÃ"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sÃ"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG està definit, s'han desactivat totes les assercions."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH està definit, només s'ha deshabilitat les assercions de camà rà pid."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "S'han habilitat totes les assercions."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "No s'ha pogut obtenir l'ID de la mà quina"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la mà quina és %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr "L'ID de la sessió és %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "S'està utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -373,15 +373,15 @@ msgstr ""
"Si us plau, llegiu http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode per "
"a una explicació de per què el mode sistema sol ser una mala idea."
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Estan disponibles els temporitzadors frescos d'alta resolució."
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -389,27 +389,27 @@ msgstr ""
"Es recomana la utilització d'un nucli amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "El dimoni s'ha iniciat sense cap mòdul carregat, no funcionarà ."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
@@ -739,12 +739,12 @@ msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -752,13 +752,14 @@ msgstr ""
"El mapa de canals especificat per omissió té un número de canals diferent "
"del número de canals especificat per omissió."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Alliberant els privilegis de root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -769,7 +770,7 @@ msgstr "Sistema de so PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Inicialitza el sistema de so PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -973,33 +974,33 @@ msgstr "Superior posterior esquerra"
msgid "Top Rear Right"
msgstr "Superior posterior dreta"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(incorrecte)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Estèreo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Envolvent 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Envolvent 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Envolvent 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Envolvent 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Envolvent 7.1"
@@ -1103,27 +1104,27 @@ msgstr "Manca la implementació"
msgid "Client forked"
msgstr "Client bifurcat"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1136,7 +1137,7 @@ msgstr "Ha fallat XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "Ha fallat el parseig de les dades de la cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "S'ha produït un error en obrir el fitxer de configuració '%s': %s"
@@ -1150,12 +1151,12 @@ msgstr "No s'ha carregat cap cookie. S'està intentant connectar sense aquesta."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "S'ha rebut un missatge per a una extensió desconeguda '%s'"
@@ -2255,41 +2256,41 @@ msgstr "No s'han pogut carregar les dades de la galeta\n"
msgid "Not yet implemented.\n"
msgstr "Encara no s'ha implementat.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
"El dimoni PulseAudio no s'està executant, o no s'està executant com a dimoni "
"de la sessió."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "No s'ha pogut matar el dimoni PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "El dimoni no respon."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2298,7 +2299,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "No s'ha pogut accedir al bloqueig d'autospawn."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2315,7 +2316,7 @@ msgstr ""
"Ens han aixecat amb POLLOUT activat -- tanmateix una crida posterior a "
"snd_pcm_avail() ha retornat 0 o un altre valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2333,15 +2334,15 @@ msgstr ""
"snd_pcm_avail() ha retornat 0 o un altre valor < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Inactiu"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Reproducció d'alta fidelitat (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Dúplex de telefonia (HSP/HFP)"
@@ -2349,6 +2350,9 @@ msgstr "Dúplex de telefonia (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de so PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "No s'ha pogut connectar al bus del sistema: %s"
diff --git a/po/cs.po b/po/cs.po
index 0c2c33f..6ced954 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-16 15:08+0000\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-08-17 01:58+0200\n"
"Last-Translator: Petr Kovar <pknbe at volny.cz>\n"
"Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2419
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -77,11 +77,11 @@ msgstr ""
"modulu ladspa> label=<popisek zásuvného modulu ladspa> control=<Äárkou "
"oddÄlený seznam hodnot ovládánà vstupu>"
-#: ../src/pulsecore/sink.c:2403
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "VnitÅnà zvukový systém"
-#: ../src/pulsecore/sink.c:2408
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -97,92 +97,92 @@ msgstr "NezdaÅilo se pÅidÄlenà nového nahrávacÃho programu dl."
msgid "Failed to add bind-now-loader."
msgstr "NezdaÅilo se pÅidat bind-now-loader."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "ZÃskán signál %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "UkonÄovánÃ."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "NezdaÅilo se nalézt uživatele \"%s\"."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "NezdaÅilo se nalézt skupinu \"%s\"."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Nalezen uživatel \"%s\" (UID %lu) a skupina \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID uživatele \"%s\" a skupiny \"%s\" nesouhlasÃ."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Domovský adresáŠuživatele \"%s\" nenà \"%s\", bude ignorováno."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "NezdaÅilo se vytvoÅit \"%s\": %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "NezdaÅilo se zmÄnit seznam skupin: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "NezdaÅilo se zmÄnit GID: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "NezdaÅilo se zmÄnit UID: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "OprávnÄnà superuživatele úspÄÅ¡nÄ zruÅ¡ena."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Režim celého systému nenà na této platformÄ podporován."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "NezdaÅila se analýza pÅÃkazového Åádku."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Démon nebÄžÃ"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon bÄžà jako PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabità démona se nezdaÅilo: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -190,150 +190,150 @@ msgstr ""
"Tento program nenà urÄen ke spuÅ¡tÄnà pod superuživatelem (nenÃ-li zadáno --"
"system)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnÄnà superuživatele."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancÃ."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
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:583
+#: ../src/daemon/main.c:576
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:586
+#: ../src/daemon/main.c:579
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:591
+#: ../src/daemon/main.c:584
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:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "NezdaÅilo se zÃskánà stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "SpuÅ¡tÄnà démona selhalo."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "SpuÅ¡tÄnà démona bylo úspÄÅ¡né."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "PÅekladový poÄÃtaÄ: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "PÅekladové CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "BÄžà na poÄÃtaÄi: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Nalezen následujÃcà poÄet CPU: %u."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "PÅeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "PÅeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "BÄžà v režimu valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimalizované sestavenÃ: ano"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimalizované sestavenÃ: ne"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definováno, všechny výrazy zakázány."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definováno, zakázány pouze výrazy rychlých cest."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Všechny výrazy povoleny."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "NezdaÅilo se zÃskánà ID poÄÃtaÄe"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "ID poÄÃtaÄe je %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr "ID sezenà je %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "PoužÃván bÄhový adresáŠ%s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "PoužÃván stavový adresáŠ%s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "BÄžà v systémovém režimu: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -349,16 +349,16 @@ msgstr ""
"VysvÄtlenÃ, proÄ je systémový režim obvykle velmi Å¡patný nápad, si můžete "
"pÅeÄÃst na http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode."
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
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:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -366,27 +366,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:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Selhalo spuÅ¡tÄnà démona."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
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:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "SpuÅ¡tÄnà démona dokonÄeno."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "VypÃnánà démona spuÅ¡tÄno."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Démon ukonÄen."
@@ -707,12 +707,12 @@ msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveŠnice \"%s\"."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "NezdaÅilo se otevÅÃt konfiguraÄnà soubor: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -720,13 +720,14 @@ msgstr ""
"Zadaná výchozà mapa kanálů obsahuje odliÅ¡ný poÄet kanálů než je zadaný "
"výchozà poÄet kanálů."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Ätenà z konfiguraÄnÃho souboru: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "RuÅ¡enà superuživatelských oprávnÄnÃ."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -737,7 +738,7 @@ msgstr "Zvukový systém PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Spustit zvukový systém PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -941,33 +942,33 @@ msgstr "Hornà zadnà levý"
msgid "Top Rear Right"
msgstr "Hornà zadnà pravý"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(neplatné)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1071,27 +1072,27 @@ msgstr "ScházejÃcà implementace"
msgid "Client forked"
msgstr "Klient rozvÄtven"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1104,7 +1105,7 @@ msgstr "XOpenDisplay() selhalo"
msgid "Failed to parse cookie data"
msgstr "Selhala analýza dat cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Selhalo otevÅenà konfiguraÄnÃho souboru \"%s\": %s"
@@ -1118,17 +1119,18 @@ msgstr "Žádný soubor cookie nenahrán. Pokus o spojenà bez tohoto kroku."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "PÅijata zpráva pro neznámé rozÅ¡ÃÅenà \"%s\""
-#: ../src/utils/pacat.c:108, c-format
+#: ../src/utils/pacat.c:108
+#, c-format
msgid "Failed to drain stream: %s"
msgstr "NezdaÅilo se vyprázdnit proud: %s"
@@ -1140,19 +1142,23 @@ msgstr "Proud pÅehrávánà vyprázdnÄn."
msgid "Draining connection to server."
msgstr "VyprazdÅovánà spojenà se serverem."
-#: ../src/utils/pacat.c:136, c-format
+#: ../src/utils/pacat.c:136
+#, c-format
msgid "pa_stream_drain(): %s"
msgstr "pa_stream_drain(): %s"
-#: ../src/utils/pacat.c:159, c-format
+#: ../src/utils/pacat.c:159
+#, c-format
msgid "pa_stream_write() failed: %s"
msgstr "pa_stream_write() selhalo: %s"
-#: ../src/utils/pacat.c:197, c-format
+#: ../src/utils/pacat.c:197
+#, c-format
msgid "pa_stream_begin_write() failed: %s"
msgstr "pa_stream_begin_write() selhalo: %s"
-#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267, c-format
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
+#, c-format
msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() selhalo: %s"
@@ -1160,52 +1166,64 @@ msgstr "pa_stream_peek() selhalo: %s"
msgid "Stream successfully created."
msgstr "Proud úspÄÅ¡nÄ vytvoÅen."
-#: ../src/utils/pacat.c:310, c-format
+#: ../src/utils/pacat.c:310
+#, c-format
msgid "pa_stream_get_buffer_attr() failed: %s"
msgstr "pa_stream_get_buffer_attr() selhalo: %s"
-#: ../src/utils/pacat.c:314, c-format
+#: ../src/utils/pacat.c:314
+#, c-format
msgid "Buffer metrics: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
msgstr ""
"Metrika vyrovnávacà pamÄti: maxlength=%u, tlength=%u, prebuf=%u, minreq=%u"
-#: ../src/utils/pacat.c:317, c-format
+#: ../src/utils/pacat.c:317
+#, c-format
msgid "Buffer metrics: maxlength=%u, fragsize=%u"
msgstr "Metrika vyrovnávacà pamÄti: maxlength=%u, fragsize=%u"
-#: ../src/utils/pacat.c:321, c-format
+#: ../src/utils/pacat.c:321
+#, c-format
msgid "Using sample spec '%s', channel map '%s'."
msgstr "PoužÃváno urÄenà vzorku \"%s\", mapa kanálů \"%s\"."
-#: ../src/utils/pacat.c:325, c-format
+#: ../src/utils/pacat.c:325
+#, c-format
msgid "Connected to device %s (%u, %ssuspended)."
msgstr "PÅipojeno k zaÅÃzenà %s (%u, %ssuspended)."
-#: ../src/utils/pacat.c:335, c-format
+#: ../src/utils/pacat.c:335
+#, c-format
msgid "Stream error: %s"
msgstr "Chyba proudu: %s"
-#: ../src/utils/pacat.c:345, c-format
+#: ../src/utils/pacat.c:345
+#, c-format
msgid "Stream device suspended.%s"
msgstr "Proudové zaÅÃzenà pozastaveno.%s"
-#: ../src/utils/pacat.c:347, c-format
+#: ../src/utils/pacat.c:347
+#, c-format
msgid "Stream device resumed.%s"
msgstr "Proudové zaÅÃzenà obnoveno.%s"
-#: ../src/utils/pacat.c:355, c-format
+#: ../src/utils/pacat.c:355
+#, c-format
msgid "Stream underrun.%s"
msgstr "PodbÄhnutà proudu.%s"
-#: ../src/utils/pacat.c:362, c-format
+#: ../src/utils/pacat.c:362
+#, c-format
msgid "Stream overrun.%s"
msgstr "PÅebÄhnutà proudu.%s"
-#: ../src/utils/pacat.c:369, c-format
+#: ../src/utils/pacat.c:369
+#, c-format
msgid "Stream started.%s"
msgstr "Proud spuÅ¡tÄn.%s"
-#: ../src/utils/pacat.c:376, c-format
+#: ../src/utils/pacat.c:376
+#, c-format
msgid "Stream moved to device %s (%u, %ssuspended).%s"
msgstr "Proud pÅesunut na zaÅÃzenà %s (%u, %ssuspended).%s"
@@ -1213,27 +1231,33 @@ msgstr "Proud pÅesunut na zaÅÃzenà %s (%u, %ssuspended).%s"
msgid "not "
msgstr "nikoliv "
-#: ../src/utils/pacat.c:383, c-format
+#: ../src/utils/pacat.c:383
+#, c-format
msgid "Stream buffer attributes changed.%s"
msgstr "ZmÄnÄny atributy vyrovnávacà pamÄti proudu.%s"
-#: ../src/utils/pacat.c:416, c-format
+#: ../src/utils/pacat.c:416
+#, c-format
msgid "Connection established.%s"
msgstr "Spojenà navázáno.%s"
-#: ../src/utils/pacat.c:419, c-format
+#: ../src/utils/pacat.c:419
+#, c-format
msgid "pa_stream_new() failed: %s"
msgstr "pa_stream_new() selhalo: %s"
-#: ../src/utils/pacat.c:447, c-format
+#: ../src/utils/pacat.c:447
+#, c-format
msgid "pa_stream_connect_playback() failed: %s"
msgstr "pa_stream_connect_playback() selhalo: %s"
-#: ../src/utils/pacat.c:453, c-format
+#: ../src/utils/pacat.c:453
+#, c-format
msgid "pa_stream_connect_record() failed: %s"
msgstr "pa_stream_connect_record() selhalo: %s"
-#: ../src/utils/pacat.c:467, c-format
+#: ../src/utils/pacat.c:467
+#, c-format
msgid "Connection failure: %s"
msgstr "Spojenà selhalo: %s"
@@ -1241,7 +1265,8 @@ msgstr "Spojenà selhalo: %s"
msgid "Got EOF."
msgstr "ZÃskáno EOF."
-#: ../src/utils/pacat.c:537, c-format
+#: ../src/utils/pacat.c:537
+#, c-format
msgid "write() failed: %s"
msgstr "write() selhalo: %s"
@@ -1249,7 +1274,8 @@ msgstr "write() selhalo: %s"
msgid "Got signal, exiting."
msgstr "ZÃskán signál, ukonÄovánÃ."
-#: ../src/utils/pacat.c:572, c-format
+#: ../src/utils/pacat.c:572
+#, c-format
msgid "Failed to get latency: %s"
msgstr "NezdaÅilo se zÃskat latenci: %s"
@@ -1258,7 +1284,8 @@ msgstr "NezdaÅilo se zÃskat latenci: %s"
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Äas: %0.3f sekund; latence: %0.0f μs. \r"
-#: ../src/utils/pacat.c:595, c-format
+#: ../src/utils/pacat.c:595
+#, c-format
msgid "pa_stream_update_timing_info() failed: %s"
msgstr "pa_stream_update_timing_info() selhalo: %s"
@@ -1384,27 +1411,33 @@ msgstr ""
"PÅeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pacat.c:760, c-format
+#: ../src/utils/pacat.c:760
+#, c-format
msgid "Invalid client name '%s'"
msgstr "Neplatný název klienta \"%s\""
-#: ../src/utils/pacat.c:776, c-format
+#: ../src/utils/pacat.c:776
+#, c-format
msgid "Invalid stream name '%s'"
msgstr "Neplatný název proudu \"%s\""
-#: ../src/utils/pacat.c:813, c-format
+#: ../src/utils/pacat.c:813
+#, c-format
msgid "Invalid channel map '%s'"
msgstr "Neplatná mapa kanálů \"%s\""
-#: ../src/utils/pacat.c:842, c-format
+#: ../src/utils/pacat.c:842
+#, c-format
msgid "Invalid latency specification '%s'"
msgstr "Neplatné upÅesnÄnà latence \"%s\""
-#: ../src/utils/pacat.c:849, c-format
+#: ../src/utils/pacat.c:849
+#, c-format
msgid "Invalid process time specification '%s'"
msgstr "Neplatné upÅesnÄnà Äasu zpracovánà \"%s\""
-#: ../src/utils/pacat.c:861, c-format
+#: ../src/utils/pacat.c:861
+#, c-format
msgid "Invalid property '%s'"
msgstr "Neplatná vlastnost \"%s\""
@@ -1417,11 +1450,13 @@ msgstr "Neznámý formát souboru %s."
msgid "Invalid sample specification"
msgstr "Neplatné urÄenà vzorku"
-#: ../src/utils/pacat.c:907, c-format
+#: ../src/utils/pacat.c:907
+#, c-format
msgid "open(): %s"
msgstr "open(): %s"
-#: ../src/utils/pacat.c:912, c-format
+#: ../src/utils/pacat.c:912
+#, c-format
msgid "dup2(): %s"
msgstr "dup2(): %s"
@@ -1442,8 +1477,7 @@ msgid ""
"Warning: specified sample specification will be overwritten with "
"specification from file."
msgstr ""
-"VarovánÃ: zadané urÄenà vzorku bude pÅepsáno urÄenÃm zÃskaným "
-"ze souboru."
+"VarovánÃ: zadané urÄenà vzorku bude pÅepsáno urÄenÃm zÃskaným ze souboru."
#: ../src/utils/pacat.c:959
msgid "Failed to determine sample specification from file."
@@ -1461,7 +1495,8 @@ msgstr "Mapa kanálů se neshoduje s urÄenÃm vzorku"
msgid "Warning: failed to write channel map to file."
msgstr "VarovánÃ: selhal zápis mapy kanálů do souboru."
-#: ../src/utils/pacat.c:1005, c-format
+#: ../src/utils/pacat.c:1005
+#, c-format
msgid ""
"Opening a %s stream with sample specification '%s' and channel map '%s'."
msgstr "OtevÃránà proudu %s s urÄenÃm vzorku \"%s\" a mapou kanálů \"%s\"."
@@ -2151,39 +2186,39 @@ msgstr "NezdaÅilo se nahrát data cookie\n"
msgid "Not yet implemented.\n"
msgstr "Doposud neimplementováno.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr "NebÄžà žádný démon PulseAudio, nebo nebÄžà jako démon sezenÃ."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "NezdaÅilo se zabÃt démona PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Démon neodpovÃdá."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2192,7 +2227,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Nelze pÅistoupit k zámku automatického spouÅ¡tÄnÃ."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2209,7 +2244,7 @@ msgstr ""
"Probudilo nás nastavenà POLLOUT - nicménÄ následné snd_pcm_avail() vrátilo 0 "
"Äi jinou hodnotu < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2227,15 +2262,15 @@ msgstr ""
"Äi jinou hodnotu < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Vypnuto"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "PÅehrávánà s velmi vÄrnou reprodukcà (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplexnà telefonie (HSP/HFP)"
@@ -2243,6 +2278,9 @@ msgstr "Duplexnà telefonie (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Zvukový server PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Nelze se spojit se systémovou sbÄrnicÃ: %s"
diff --git a/po/de.po b/po/de.po
index 17507a2..94de66c 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-18 12:43+0100\n"
"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de at redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -76,11 +76,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -96,92 +96,92 @@ msgstr "Neuer dlopen-Loader konnte nicht gefunden werden."
msgid "Failed to add bind-now-loader."
msgstr "Hinzufügen von Bind-Now-Loader fehlgeschlagen."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -189,150 +189,150 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
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:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "SeitengröÃe ist %lu Bytes."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -342,41 +342,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
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:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -690,12 +690,12 @@ msgstr "[%s:%u] Ungültige FragmentgröÃe '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -703,13 +703,14 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Root-Privilegien aufgeben."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -720,7 +721,7 @@ msgstr "PulseAudio Sound System"
msgid "Start the PulseAudio Sound System"
msgstr "Das PulseAudio Sound System starten"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -924,33 +925,33 @@ msgstr "Oben Hinten Links"
msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(ungültig)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1054,27 +1055,27 @@ msgstr "Fehlende Implementation"
msgid "Client forked"
msgstr "Client geteilt"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1087,7 +1088,7 @@ msgstr "XOpenDisplay() fehlgeschlagen"
msgid "Failed to parse cookie data"
msgstr "Parsen der Cookie-Daten fehlgeschlagen"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s"
@@ -1101,12 +1102,12 @@ msgstr "Verbindungsversuch ohne Cookie, da keines geladen."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
@@ -2175,39 +2176,39 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr "Es läuft kein PulseAudio-Dienst oder nicht als Sessiondienst."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2216,7 +2217,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2227,7 +2228,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2239,15 +2240,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2255,6 +2256,9 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Kann nicht mit dem System-Bus verbinden: %s"
diff --git a/po/de_CH.po b/po/de_CH.po
index 5944c3f..6f49920 100644
--- a/po/de_CH.po
+++ b/po/de_CH.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-18 12:55+0100\n"
"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de at redhat.com>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Swiss German\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -75,11 +75,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Internes Audio"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -95,92 +95,92 @@ msgstr "Neuer dlopen-Loader konnte nicht gefunden werden."
msgid "Failed to add bind-now-loader."
msgstr "Hinzufügen von Bind-Now-Loader fehlgeschlagen."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Signal %s empfangen."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Wird beendet."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Benutzer '%s' nicht gefunden."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Gruppe '%s' nicht gefunden."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Benutzer '%s' (UID %lu) und Gruppe '%s' (GID %lu) gefunden."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID von Benutzer '%s' und Gruppe '%s' stimmen nicht überein."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Benutzerverzeichnis von Benutzer '%s' ist nicht '%s', ignoriere."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Konnte '%s' nciht erzeugen: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Wechseln der Gruppen-Liste fehlgeschlagen: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Wechseln der GID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Wechseln der UID fehlgeschlagen: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Root-Berechtigungen erfolgreich zurückgesetzt."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "System-Modus auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -188,153 +188,153 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
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:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermassen deaktiviert!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "Seitengrösse ist %lu Bytes."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
#, fuzzy
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definiert, alle Ansprüche deaktiviert."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
#, fuzzy
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definiert, nur fast-path-Ansprüche deaktiviert."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
#, fuzzy
msgid "All asserts enabled."
msgstr "Alle Ansprüche aktiviert."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -344,41 +344,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
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:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -692,12 +692,12 @@ msgstr "[%s:%u] Ungültige Fragmentgrösse '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
#, fuzzy
msgid ""
"The specified default channel map has a different number of channels than "
@@ -706,13 +706,14 @@ msgstr ""
"Die angegebene Standard-Kanalzuordnung hat eine andere Anzahl von Kanälen "
"als die angegebene Standard-Kanal-Anzahl."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Root-Privilegien aufgeben."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -723,7 +724,7 @@ msgstr "PulseAudio Sound System"
msgid "Start the PulseAudio Sound System"
msgstr "Das PulseAudio Sound System starten"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -927,33 +928,33 @@ msgstr "Oben Hinten Links"
msgid "Top Rear Right"
msgstr "Oben Hinten Rechts"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(ungültig)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1058,27 +1059,27 @@ msgstr "Fehlende Implementation"
msgid "Client forked"
msgstr "Client geforket"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1091,7 +1092,7 @@ msgstr "XOpenDisplay() fehlgeschlagen"
msgid "Failed to parse cookie data"
msgstr "Parsen der Cookie-Daten fehlgeschlagen"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Konfigurationsdatei '%s' konnte nicht geöffnet werden: %s"
@@ -1105,12 +1106,12 @@ msgstr "Verbindungsversuch ohne Cookie, da keines geladen."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Nachricht für unbekannte Erweiterung '%s' erhalten"
@@ -2182,39 +2183,39 @@ msgstr "Laden der Cookie-Daten fehlgeschlagen\n"
msgid "Not yet implemented.\n"
msgstr "Noch nicht implementiert.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Daemon antwortet nicht."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2223,7 +2224,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Fehler beim Zugriff auf Autostart -Sperre."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2241,7 +2242,7 @@ msgstr ""
"von snd_pcm_avail() liefert 0 oder einen anderen Wert zurück, der < "
"min_avail ist."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2260,15 +2261,15 @@ msgstr ""
"min_avail ist."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Aus"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2276,6 +2277,9 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio Sound Server"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Kann nicht mit dem System-Bus verbinden: %s"
diff --git a/po/el.po b/po/el.po
index bf43b7b..9863910 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-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\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,7 +16,7 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -61,11 +61,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr ""
@@ -81,241 +81,241 @@ msgstr ""
msgid "Failed to add bind-now-loader."
msgstr ""
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr ""
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ÎξοδοÏ."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "ÎÏοÏÏ
Ïία εÏÏεÏÎ·Ï ÏÏήÏÏη '%s'."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "ÎÏοÏÏ
Ïία εÏÏεÏÎ·Ï Î¿Î¼Î¬Î´Î±Ï ÏÏηÏÏÏν '%s'."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr ""
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "ÎÏ
ÏÏ ÎµÎ¯Î½Î±Î¹ Ïο PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -325,15 +325,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -341,27 +341,27 @@ msgstr ""
"ÎικΠμοÏ
, ο ÏÏ
ÏÎ®Î½Î±Ï ÏοÏ
είναι για Ïα μÏάζα! Î ÏÏÏÏαÏη ÏοÏ
ÏÎµÏ ÏήμεÏα είναι "
"Linux με ενεÏγοÏοιημÎνα Ïα high-resolution timers!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr ""
@@ -607,24 +607,24 @@ msgstr ""
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
msgstr ""
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -635,7 +635,7 @@ msgstr ""
msgid "Start the PulseAudio Sound System"
msgstr ""
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr ""
@@ -839,33 +839,33 @@ msgstr ""
msgid "Top Rear Right"
msgstr ""
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr ""
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr ""
@@ -969,27 +969,27 @@ msgstr ""
msgid "Client forked"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr ""
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr ""
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr ""
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr ""
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr ""
@@ -1002,7 +1002,7 @@ msgstr ""
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr ""
@@ -1016,12 +1016,12 @@ msgstr ""
msgid "fork(): %s"
msgstr ""
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr ""
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
@@ -1884,39 +1884,39 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
+msgid "poll(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr ""
@@ -1925,7 +1925,7 @@ msgstr ""
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -1936,7 +1936,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -1948,15 +1948,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
diff --git a/po/es.po b/po/es.po
index b36d693..aa839b9 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-08-10 14:50+0000\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-08-10 14:36-0300\n"
"Last-Translator: Héctor Daniel Cabrera <h.daniel.cabrera at gmail.com>\n"
"Language-Team: Fedora Spanish <fedora-trans-es at redhat.com>\n"
@@ -17,8 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Spanish\n"
-#: ../src/modules/alsa/alsa-util.c:775
-#: ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -26,43 +25,66 @@ msgstr "%s %s"
#: ../src/modules/alsa/alsa-util.c:1023
#, 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."
+"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 ""
-"snd_pcm_avail() devolvió un valor que es excepcionalmente grande: %lu bytes (%lu ms).\n"
-"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, informe ésto a los desarrolladores de ALSA."
+"snd_pcm_avail() devolvió un valor que es excepcionalmente grande: %lu bytes "
+"(%lu ms).\n"
+"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
+"informe ésto a los desarrolladores de ALSA."
#: ../src/modules/alsa/alsa-util.c:1064
#, 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."
+"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 ""
-"snd_pcm_delay() devolvió un valor que es excepcionalmente grande: %li bytes (%s%lu ms).\n"
-"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, informe ésto a los desarrolladores de ALSA."
+"snd_pcm_delay() devolvió un valor que es excepcionalmente grande: %li bytes "
+"(%s%lu ms).\n"
+"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
+"informe ésto a los desarrolladores de ALSA."
#: ../src/modules/alsa/alsa-util.c:1111
#, 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."
+"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 ""
-"snd_pcm_mmap_begin() devolvió un valor que es excepcionalmente grande: %lu bytes (%lu ms).\n"
-"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, informe ésto a los desarrolladores de ALSA."
+"snd_pcm_mmap_begin() devolvió un valor que es excepcionalmente grande: %lu "
+"bytes (%lu ms).\n"
+"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
+"informe ésto a los desarrolladores de ALSA."
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr "Sumidero virtual LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
-msgid "sink_name=<name for the sink> sink_properties=<properties for the sink> master=<name of sink to filter> format=<sample format> rate=<sample rate> channels=<number of channels> channel_map=<channel map> plugin=<ladspa plugin name> label=<ladspa plugin label> control=<comma seperated list of input control values>"
-msgstr "sink_name=<nombre para el sumidero> sink_properties=<propiedades para el sumidero> master=<nombre del sumidero a filtrar> format=<formato de ejemplo> rate=<tasa de ejemplo> channels=<cantidad de canaless> channel_map=<mapeo de canales> plugin=<nombre del complemento ladspa> label=<etiqueta del complemento ladspa> control=<lista separada por comas de valores de control de entrada>"
-
-#: ../src/pulsecore/sink.c:2395
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+"sink_name=<nombre para el sumidero> sink_properties=<propiedades para el "
+"sumidero> master=<nombre del sumidero a filtrar> format=<formato de ejemplo> "
+"rate=<tasa de ejemplo> channels=<cantidad de canaless> channel_map=<mapeo de "
+"canales> plugin=<nombre del complemento ladspa> label=<etiqueta del "
+"complemento ladspa> control=<lista separada por comas de valores de control "
+"de entrada>"
+
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Audio Interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Módem"
@@ -78,283 +100,305 @@ msgstr "Falló al asignar el cargador dl nuevo."
msgid "Failed to add bind-now-loader."
msgstr "Falló al agregar bind-now-loader."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Se obtuvo la señal %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Saliendo."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falló al buscar usuario '%s'."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falló al buscar grupo '%s'."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Se encontró el usuario '%s' (UID %lu) y el grupo '%s' (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID del usuario '%s' y del grupo '%s' no son similares."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "El directorio de inicio del usuario '%s' no es '%s', ignorando."
-#: ../src/daemon/main.c:212
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falló al crear '%s': %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falló al cambiar la lista de grupo: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falló al cambiar GID: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falló al cambiar UID: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Se han liberado con éxitos los privilegios de root."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "El modo a nivel de sistema no es soportado en esta plataforma."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Falló al analizar la lÃnea de comando."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:568
-msgid "This program is not intended to be run as root (unless --system is specified)."
-msgstr "Este programa no tiene por qué ser ejecutado como root (a menos que --system sea especificado)."
+#: ../src/daemon/main.c:561
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
+"sea especificado)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Se necesitan privilegios de root."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
-msgstr "Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! "
+msgstr ""
+"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! "
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
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!"
+msgstr ""
+"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-"
+"module-loading!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
-msgstr "Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!"
+msgstr ""
+"Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
-msgstr "Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!"
+msgstr ""
+"Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:643
-#: ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Se encontraron %u CPUs."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todos los chequeos deshabilitados."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, sólo se deshabilitan los chequeos fast path."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Todos los chequeos habilitados."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr "El ID de la sesión es %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
-"OK, so you are running PA in system mode. Please note that you most likely shouldn't be doing that.\n"
-"If you do it nonetheless then it's your own fault if things don't work as expected.\n"
-"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an explanation why system mode is usually a bad idea."
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
msgstr ""
-"Bien, o sea que está ejecutando PA en modo de sistema. Por favor entienda que, en general, no deberÃa estar haciéndolo.\n"
-"Si insiste en seguir utilizando este modo, será debido a su propio accionar que las cosas no funcionen como se esperaba.\n"
-"Por favor lea http://pulseaudio.org/wiki/WhatIsWrongWithSystemMod para obtener una explicación acerca de por qué es una mala idea utilizar el modo sistema."
-
-#: ../src/daemon/main.c:804
+"Bien, o sea que está ejecutando PA en modo de sistema. Por favor entienda "
+"que, en general, no deberÃa estar haciéndolo.\n"
+"Si insiste en seguir utilizando este modo, será debido a su propio accionar "
+"que las cosas no funcionen como se esperaba.\n"
+"Por favor lea http://pulseaudio.org/wiki/WhatIsWrongWithSystemMod para "
+"obtener una explicación acerca de por qué es una mala idea utilizar el modo "
+"sistema."
+
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
-msgstr "¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon appetit!"
+msgstr ""
+"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
+"appetit!"
-#: ../src/daemon/main.c:816
-msgid "Dude, your kernel stinks! The chef's recommendation today is Linux with high-resolution timers enabled!"
-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:809
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+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:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
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."
+msgstr ""
+"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
+"funcionar."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
@@ -369,37 +413,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 (only returns exit code)\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"
-" --log-meta[=BOOL] Include code location in log messages\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"
+" -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"
@@ -410,10 +465,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"
@@ -424,50 +481,78 @@ msgstr ""
" -h, --help Muestra esta ayuda\n"
" --version Muestra la versión\n"
" --dump-conf Vuelca la configuración por defecto\n"
-" --dump-modules Vuelca una lista de múdulos disponibles\n"
-" --dump-resample-methods Vuelca los métodos disponibles de remuestreo\n"
-" --cleanup-shm Limpia los segmentos de memoria compartidos\n"
-" --start Inicia el demonio, si es que aún no está funcionando\n"
+" --dump-modules Vuelca una lista de múdulos "
+"disponibles\n"
+" --dump-resample-methods Vuelca los métodos disponibles de "
+"remuestreo\n"
+" --cleanup-shm Limpia los segmentos de memoria "
+"compartidos\n"
+" --start Inicia el demonio, si es que aún no "
+"está funcionando\n"
" -k --kill Detiene a un demonio funcionando\n"
-" --check Verifica qué demonios están funcionando\n"
+" --check Verifica qué demonios están "
+"funcionando\n"
"\n"
"OPCIONES:\n"
-" --system[=BOOL] Se ejecuta como unica instancia a nivel del sistema\n"
-" -D, --daemonize[=BOOL] Se convierte en demonio luego de iniciarse\n"
+" --system[=BOOL] Se ejecuta como unica instancia a "
+"nivel del sistema\n"
+" -D, --daemonize[=BOOL] Se convierte en demonio luego de "
+"iniciarse\n"
" --fail[=BOOL] Se cierra cuando falla el inicio\n"
-" --high-priority[=BOOL] Trata de establecer un nivel de nice alto\n"
-" (sólo disponible como root, cuando el SUID o\n"
+" --high-priority[=BOOL] Trata de establecer un nivel de nice "
+"alto\n"
+" (sólo disponible como root, cuando "
+"el SUID o\n"
" con RLIMIT_NICE) elevado\n"
-" --realtime[=BOOL] Trata de activar planificación en tiempo real\n"
-" (sólo disponible como root, cuando el SUID o\n"
+" --realtime[=BOOL] Trata de activar planificación en "
+"tiempo real\n"
+" (sólo disponible como root, cuando "
+"el SUID o\n"
" con RLIMIT_RTPRIO) elevado\n"
-" --disallow-module-loading[=BOOL] No permite la carga/descarga del módulo por el usuario\n"
+" --disallow-module-loading[=BOOL] No permite la carga/descarga del "
+"módulo por el usuario\n"
" después que se haya iniciado\n"
-" --disallow-exit[=BOOL] No permite la petición del usuario de abandonar el programa\n"
-" --exit-idle-time=SECS Desactiva un demonio cuando está ocioso y\n"
-" ha transcurrido esta cantidad de tiempo\n"
-" --module-idle-time=SECS Descarga modulos que se han cargado automáticamente cuando están ociosos y\n"
-" ha transcurrido esta cantidad de tiempo\n"
-" --scache-idle-time=SECS Descarga muestras cargadas automáticamente cuando están\n"
-" ociosos y ha transcurrido esta cantidad de tiempo\n"
-" --log-level[=LEVEL] Aumenta o define el grado de salida a utilizar\n"
+" --disallow-exit[=BOOL] No permite la petición del usuario "
+"de abandonar el programa\n"
+" --exit-idle-time=SECS Desactiva un demonio cuando está "
+"ocioso y\n"
+" ha transcurrido esta cantidad de "
+"tiempo\n"
+" --module-idle-time=SECS Descarga modulos que se han cargado "
+"automáticamente cuando están ociosos y\n"
+" ha transcurrido esta cantidad de "
+"tiempo\n"
+" --scache-idle-time=SECS Descarga muestras cargadas "
+"automáticamente cuando están\n"
+" ociosos y ha transcurrido esta "
+"cantidad de tiempo\n"
+" --log-level[=LEVEL] Aumenta o define el grado de salida "
+"a utilizar\n"
" -v Aumenta el grado de salida\n"
" --log-target={auto,syslog,stderr} Especifica el destino del log\n"
-" -p, --dl-search-path=PATH Establece la ruta de búsqueda (search path) para complementos\n"
+" -p, --dl-search-path=PATH Establece la ruta de búsqueda "
+"(search path) para complementos\n"
" (plugins) compartidos\n"
-" --resample-method=METHOD Utiliza un método de remuestreo especÃfico\n"
-" (Ver en --dump-resample-methods los valores posibles)\n"
+" --resample-method=METHOD Utiliza un método de remuestreo "
+"especÃfico\n"
+" (Ver en --dump-resample-methods los "
+"valores posibles)\n"
" --use-pid-file[=BOOL] Crea el archivo PID\n"
-" --no-cpu-limit[=BOOL] No instala un limitador de carga de CPU en\n"
+" --no-cpu-limit[=BOOL] No instala un limitador de carga de "
+"CPU en\n"
" plataformas que lo soporten.\n"
-" --disable-shm[=BOOL] Deshabilita el soporte para memoria compartida.\n"
+" --disable-shm[=BOOL] Deshabilita el soporte para memoria "
+"compartida.\n"
"\n"
"SCRIPT DE INICIO:\n"
-" -L, --load=\"ARGUMENTOS DEL MODULO\" Carga el módulo complemento con los parámetros dados\n"
+" -L, --load=\"ARGUMENTOS DEL MODULO\" Carga el módulo complemento con los "
+"parámetros dados\n"
" -F, --file=FILENAME Ejecuta el script especificado\n"
-" -C Abre una lÃnea de comando en el TTY actual después de iniciar\n"
+" -C Abre una lÃnea de comando en el TTY "
+"actual después de iniciar\n"
"\n"
-" -n No carga el archivo script predeterminado\n"
+" -n No carga el archivo script "
+"predeterminado\n"
#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
@@ -478,8 +563,13 @@ msgid "--fail expects boolean argument"
msgstr "--fail espera un argumento booleano"
#: ../src/daemon/cmdline.c:264
-msgid "--log-level expects log level argument (either numeric in range 0..4 or one of debug, info, notice, warn, error)."
-msgstr "--log-level espera un argumento en el nivel del log (ya sea numérico, que caiga en el rango de 0..4; ya sea uno de debug, info, notice, warn, o error). "
+msgid ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+msgstr ""
+"--log-level espera un argumento en el nivel del log (ya sea numérico, que "
+"caiga en el rango de 0..4; ya sea uno de debug, info, notice, warn, o "
+"error). "
#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
@@ -635,22 +725,27 @@ msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, 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:540
-msgid "The specified default channel map has a different number of channels than the specified default number of channels."
-msgstr "El mapa de canal predeterminado especificado tiene un número de canales distinto al especificado como predeterminado."
+#: ../src/daemon/daemon-conf.c:546
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+"El mapa de canal predeterminado especificado tiene un número de canales "
+"distinto al especificado como predeterminado."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Abandonando privilegios de root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -661,8 +756,7 @@ msgstr "Sistema de Sonido PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Iniciar el Sistema de Sonido PulseAudio"
-#: ../src/pulse/channelmap.c:105
-#: ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -866,36 +960,33 @@ msgstr "Posterior izquierdo superior"
msgid "Top Rear Right"
msgstr "Posterior derecho superior"
-#: ../src/pulse/channelmap.c:478
-#: ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239
-#: ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285
-#: ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(inválido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Estéreo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Envolvente 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Envolvente 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Envolvente 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Envolvente 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Envolvente 7.1"
@@ -999,33 +1090,32 @@ msgstr "Falta implementación"
msgid "Client forked"
msgstr "Cliente iniciado"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
-#: ../src/pulse/client-conf-x11.c:55
-#: ../src/utils/pax11publish.c:100
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() falló"
@@ -1033,7 +1123,7 @@ msgstr "XOpenDisplay() falló"
msgid "Failed to parse cookie data"
msgstr "Fallo al analizar los datos de la cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Fallo al abrir el archivo de configuración '%s': %s"
@@ -1047,12 +1137,12 @@ msgstr "No se ha cargado ninguna cookie. Intentando conectar de todos modos."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(:) %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Se ha recibido un mensaje para una extensión desconocida '%s'"
@@ -1085,8 +1175,7 @@ msgstr "pa_stream_write() falló: %s"
msgid "pa_stream_begin_write() failed: %s"
msgstr "pa_stream_write() falló: %s"
-#: ../src/utils/pacat.c:237
-#: ../src/utils/pacat.c:267
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() falló: %s"
@@ -1230,29 +1319,48 @@ 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, s24le, s24be,\n"
-" s24-32le, s24-32be (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, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (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"
-" --property=PROPERTY=VALUE Set the specified property to the specified value.\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"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
" --raw Record/play raw PCM data.\n"
" --file-format=FFORMAT Record/play formatted PCM data.\n"
" --list-file-formats List available file formats.\n"
@@ -1265,33 +1373,56 @@ msgstr ""
" -r, --record Crea una conexión para grabar\n"
" -p, --playback Create a connection for playback\n"
"\n"
-" -v, --verbose Habilita operaciones con vocabulario más detallado\n"
+" -v, --verbose Habilita operaciones con vocabulario "
+"más detallado\n"
"\n"
-" -s, --server=SERVER El nombre del servidor con el que conectarse\n"
-" -d, --device=DEVICE El nombre del sumidero/fuente a la que conectarse\n"
-" -n, --client-name=NAME Cómo llamar a este cliente en el servidor\n"
-" --stream-name=NAME Cómo llamar a este flujo en el servidor\n"
-" --volume=VOLUME Especifica el salida inicial (linear) de volumen dentro del rango 0...65536\n"
-" --rate=SAMPLERATE Tasa de muestra en Hz (establecida en 44100 por defecto)\n"
-" --format=SAMPLEFORMAT El tipo de ejemplo, alguno entre s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be (establecido en s16ne por defecto)\n"
-" --channels=CHANNELS La cantidad de canales, 1 para mono, 2 para stereo\n"
+" -s, --server=SERVER El nombre del servidor con el que "
+"conectarse\n"
+" -d, --device=DEVICE El nombre del sumidero/fuente a la "
+"que conectarse\n"
+" -n, --client-name=NAME Cómo llamar a este cliente en el "
+"servidor\n"
+" --stream-name=NAME Cómo llamar a este flujo en el "
+"servidor\n"
+" --volume=VOLUME Especifica el salida inicial "
+"(linear) de volumen dentro del rango 0...65536\n"
+" --rate=SAMPLERATE Tasa de muestra en Hz (establecida "
+"en 44100 por defecto)\n"
+" --format=SAMPLEFORMAT El tipo de ejemplo, alguno entre "
+"s16le, s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(establecido en s16ne por defecto)\n"
+" --channels=CHANNELS La cantidad de canales, 1 para mono, "
+"2 para stereo\n"
" (establecido en 2 por defecto)\n"
-" --channel-map=CHANNELMAP Mapeo de canales a ser usado en lugar del establecido por defecto\n"
-" --fix-format Obtener el formato de ejemplo desde el sumidero al que el flujo\n"
+" --channel-map=CHANNELMAP Mapeo de canales a ser usado en "
+"lugar del establecido por defecto\n"
+" --fix-format Obtener el formato de ejemplo desde "
+"el sumidero al que el flujo\n"
" se ha conectado.\n"
-" --fix-rate Obtiene la tasa de ejemplo desde el destino al que el flujo\n"
+" --fix-rate Obtiene la tasa de ejemplo desde el "
+"destino al que el flujo\n"
" se ha conectado.\n"
-" --fix-channels Obtener el mapa y la cantidad de canales\n"
-" desde el sumidero al que el flujo se ha conectado.\n"
-" --no-remix No realiza un upmix o un downmix de los canales.\n"
-" --no-remap Mapea canales por Ãndices en lugar de por nombres.\n"
-" --latency=BYTES Solicita la latencia especificada en bytes.\n"
-" --process-time=BYTES Solicita los procesos de tiempo por pedido especificados en bytes.\n"
-" --property=PROPERTY=VALUE Estabelce la propiedad especificada al valor especificado.\n"
-" --raw Graba/reproduce datos PCM con formato raw.\n"
-" --file-format=FFORMAT Graba/reproduce datos PCM formateados.\n"
-" --list-file-formats Muestra una lista con los formatos de archivo disponibles.\n"
+" --fix-channels Obtener el mapa y la cantidad de "
+"canales\n"
+" desde el sumidero al que el flujo se "
+"ha conectado.\n"
+" --no-remix No realiza un upmix o un downmix de "
+"los canales.\n"
+" --no-remap Mapea canales por Ãndices en lugar "
+"de por nombres.\n"
+" --latency=BYTES Solicita la latencia especificada en "
+"bytes.\n"
+" --process-time=BYTES Solicita los procesos de tiempo por "
+"pedido especificados en bytes.\n"
+" --property=PROPERTY=VALUE Estabelce la propiedad especificada "
+"al valor especificado.\n"
+" --raw Graba/reproduce datos PCM con "
+"formato raw.\n"
+" --file-format=FFORMAT Graba/reproduce datos PCM "
+"formateados.\n"
+" --list-file-formats Muestra una lista con los formatos "
+"de archivo disponibles.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1366,8 +1497,12 @@ msgid "Failed to open audio file."
msgstr "Falló al abrir el archivo de sonido."
#: ../src/utils/pacat.c:956
-msgid "Warning: specified sample specification will be overwritten with specification from file."
-msgstr "Aviso: el ejemplo de especificación indicado será sobreescrito con las especificaciones del archivo."
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file."
+msgstr ""
+"Aviso: el ejemplo de especificación indicado será sobreescrito con las "
+"especificaciones del archivo."
#: ../src/utils/pacat.c:959
msgid "Failed to determine sample specification from file."
@@ -1387,8 +1522,11 @@ msgstr "Aviso: Faló al escribir el mapeo del canal en el archivo."
#: ../src/utils/pacat.c:1005
#, c-format
-msgid "Opening a %s stream with sample specification '%s' and channel map '%s'."
-msgstr "Abriendo un flujo %s con especificación de muestra '%s' y mapeo de canal '%s'."
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Abriendo un flujo %s con especificación de muestra '%s' y mapeo de canal '%"
+"s'."
#: ../src/utils/pacat.c:1006
msgid "recording"
@@ -1410,8 +1548,7 @@ msgstr "io_new() falló."
msgid "pa_context_new() failed."
msgstr "pa_context_new() falló."
-#: ../src/utils/pacat.c:1066
-#: ../src/utils/pactl.c:1122
+#: ../src/utils/pacat.c:1066 ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() falló: %s"
@@ -1449,14 +1586,12 @@ msgstr "Error al continuar: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "AVISO: El servidor de sonido no es local, no se suspende.\n"
-#: ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pasuspender.c:159 ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Error en la conexión: %s\n"
-#: ../src/utils/pasuspender.c:176
-#: ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Hay SIGINT, saliendo.\n"
@@ -1473,14 +1608,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 [opciones] ... \n"
"\n"
" -h, --help Muestra esta ayuda\n"
" --version Muestra la versión\n"
-" -s, --server=SERVER El nombre del servidor con el que conectarse\n"
+" -s, --server=SERVER El nombre del servidor con el que "
+"conectarse\n"
"\n"
#: ../src/utils/pasuspender.c:248
@@ -1494,20 +1631,17 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linkeado con libpulse %s\n"
-#: ../src/utils/pasuspender.c:277
-#: ../src/utils/pactl.c:1104
+#: ../src/utils/pasuspender.c:277 ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falló.\n"
-#: ../src/utils/pasuspender.c:290
-#: ../src/utils/pactl.c:1116
+#: ../src/utils/pasuspender.c:290 ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falló.\n"
-#: ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
+#: ../src/utils/pasuspender.c:298 ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falló.\n"
@@ -1525,7 +1659,9 @@ msgstr "Actualmente en uso: %u bloques conteniendo %s bytes en total.\n"
#: ../src/utils/pactl.c:137
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
-msgstr "Ubicados durante a lo largo del tiempo: %u bloques conteniendo %s bytes en total.\n"
+msgstr ""
+"Ubicados durante a lo largo del tiempo: %u bloques conteniendo %s bytes en "
+"total.\n"
#: ../src/utils/pactl.c:140
#, c-format
@@ -1604,14 +1740,12 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261
-#: ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
#, c-format
msgid "\tPorts:\n"
msgstr "\tPuertos:\n"
-#: ../src/utils/pactl.c:267
-#: ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
#, c-format
msgid "\tActive Port: %s\n"
msgstr "\tPuerto Activo: %s\n"
@@ -1660,18 +1794,10 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:338
-#: ../src/utils/pactl.c:394
-#: ../src/utils/pactl.c:429
-#: ../src/utils/pactl.c:466
-#: ../src/utils/pactl.c:525
-#: ../src/utils/pactl.c:526
-#: ../src/utils/pactl.c:536
-#: ../src/utils/pactl.c:580
-#: ../src/utils/pactl.c:581
-#: ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:630
-#: ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
@@ -1795,7 +1921,8 @@ msgstr ""
#: ../src/utils/pactl.c:547
#, c-format
msgid "Failed to get source output information: %s\n"
-msgstr "Error al intentar obtener información acerca de la salida de la fuenta: %s\n"
+msgstr ""
+"Error al intentar obtener información acerca de la salida de la fuenta: %s\n"
#: ../src/utils/pactl.c:567
#, c-format
@@ -1862,8 +1989,7 @@ msgstr ""
"\tPropiedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646
-#: ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Falla: %s\n"
@@ -1899,8 +2025,10 @@ msgid ""
" -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 [opciones] stat\n"
"%s [opciones] list\n"
@@ -1921,8 +2049,10 @@ msgstr ""
" -h, --help Muestra esta ayuda\n"
" --version Muestra la versión\n"
"\n"
-" -s, --server=SERVER El nombre del servidor al que conectarse\n"
-" -n, --client-name=NAME El nombre de este cliente en el servidor\n"
+" -s, --server=SERVER El nombre del servidor al que "
+"conectarse\n"
+" -n, --client-name=NAME El nombre de este cliente en el "
+"servidor\n"
#: ../src/utils/pactl.c:880
#, c-format
@@ -1954,7 +2084,9 @@ msgstr "Error al intentar determinar especificación de ejemplo del archivo.\n"
#: ../src/utils/pactl.c:951
msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Aviso: Fallo al intentar determinar especificación de ejemplo desde el archivo.\n"
+msgstr ""
+"Aviso: Fallo al intentar determinar especificación de ejemplo desde el "
+"archivo.\n"
#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
@@ -1966,11 +2098,13 @@ msgstr "Debe especificar un nombre de muestra para ser eliminado\n"
#: ../src/utils/pactl.c:982
msgid "You have to specify a sink input index and a sink\n"
-msgstr "Debe especificar un Ãndice para las entradas del destino y un destino\n"
+msgstr ""
+"Debe especificar un Ãndice para las entradas del destino y un destino\n"
#: ../src/utils/pactl.c:992
msgid "You have to specify a source output index and a source\n"
-msgstr "Debe especificar un Ãndice para las salidas de la fuente, y una fuente\n"
+msgstr ""
+"Debe especificar un Ãndice para las salidas de la fuente, y una fuente\n"
#: ../src/utils/pactl.c:1007
msgid "You have to specify a module name and arguments.\n"
@@ -1981,12 +2115,20 @@ msgid "You have to specify a module index\n"
msgstr "Debe especificar un Ãndice de módulo\n"
#: ../src/utils/pactl.c:1037
-msgid "You may not specify more than one sink. You have to specify a boolean value.\n"
-msgstr "No puede especificar más de un sumidero. Tiene que especificar un valor booleano.\n"
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"No puede especificar más de un sumidero. Tiene que especificar un valor "
+"booleano.\n"
#: ../src/utils/pactl.c:1050
-msgid "You may not specify more than one source. You have to specify a boolean value.\n"
-msgstr "No puede especificar más de una fuente. Tiene que especificar un valor booleano.\n"
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"No puede especificar más de una fuente. Tiene que especificar un valor "
+"booleano.\n"
#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
@@ -2011,14 +2153,17 @@ 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 display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
"\n"
-" -d Muestra los datos actuales de PulseAudio asociados en un display X11 (por defecto)\n"
+" -d Muestra los datos actuales de PulseAudio asociados en un display X11 "
+"(por defecto)\n"
" -e Exporta los datos locales de PulseAudio a un display X11\n"
-" -i Importa los datos de PulseAudio de un display X11 hacia las variables del entorno local y el archivo de cookies.\n"
+" -i Importa los datos de PulseAudio de un display X11 hacia las variables "
+"del entorno local y el archivo de cookies.\n"
" -r Elimina todo dato de PulseAudio de un display X11\n"
#: ../src/utils/pax11publish.c:94
@@ -2081,84 +2226,93 @@ msgstr "Error al cargar datos de cookie\n"
msgid "Not yet implemented.\n"
msgstr "Aún no se ha implementado.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr "El demonio PulseAudio no está ejecutándose, o no se está ejecutando como un demonio de sesión."
+msgstr ""
+"El demonio PulseAudio no está ejecutándose, o no se está ejecutando como un "
+"demonio de sesión."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Error al intentar detener el demonio de PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "El demonio no responde."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156
-#: ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189
-#: ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:136
-#: ../src/pulsecore/lock-autospawn.c:219
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "No se puede acceder al candado de autogeneración."
-#: ../src/modules/alsa/alsa-sink.c:449
-#: ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
-"ALSA woke us up to write new data to the device, but there was actually nothing to write!\n"
-"Most likely this is a bug in the ALSA driver '%s'. Please report this issue to the ALSA developers.\n"
-"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail."
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
-"ALSA nos despertó para escribir nuevos datos al dispositivo, ¡pero en realidad no hay nada para escribir!\n"
-"Probablemente sea un error en el controlador ALSA '%s'. Por favor, informe esto a los desarrolladores de ALSA.\n"
-"Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a snd_pcm_avail() devolvió 0 u otro valor < min_avail."
+"ALSA nos despertó para escribir nuevos datos al dispositivo, ¡pero en "
+"realidad no hay nada para escribir!\n"
+"Probablemente sea un error en el controlador ALSA '%s'. Por favor, informe "
+"esto a los desarrolladores de ALSA.\n"
+"Nos despertaron con POLLOUT puesto -- sin embargo, una llamada a "
+"snd_pcm_avail() devolvió 0 u otro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429
-#: ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
-"ALSA woke us up to read new data from the device, but there was actually nothing to read!\n"
-"Most likely this is a bug in the ALSA driver '%s'. Please report this issue to the ALSA developers.\n"
-"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail."
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
-"ALSA nos despertó para leer nuevos datos desde el dispositivo, ¡pero en realidad no hay nada para leer!\n"
-"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, informe esto a los desarrolladores de ALSA.\n"
-"Nos despertaron con POLLIN puesto -- sin embargo, una llamada a snd_pcm_avail() devolvió 0 u otro valor < min_avail."
+"ALSA nos despertó para leer nuevos datos desde el dispositivo, ¡pero en "
+"realidad no hay nada para leer!\n"
+"Lo más probable es que sea un error del controlador ALSA '%s'. Por favor, "
+"informe esto a los desarrolladores de ALSA.\n"
+"Nos despertaron con POLLIN puesto -- sin embargo, una llamada a snd_pcm_avail"
+"() devolvió 0 u otro valor < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Apagado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Reproducción de Alta Fidelidad (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "TelefonÃa Duplex (HSP/HFP)"
@@ -2166,65 +2320,92 @@ msgstr "TelefonÃa Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de Sonido PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "No se puede conectar al bus del sistema: %s"
+
#~ msgid "Cannot get caller from PID: %s"
#~ msgstr "No se puede obtener el llamador desde el PID: %s"
+
#~ msgid "Cannot set UID on caller object."
#~ msgstr "No se puede poner UID en el objeto llamador."
+
#~ msgid "Failed to get CK session."
#~ msgstr "Falló al obtener sesión CK."
+
#~ msgid "Cannot set UID on session object."
#~ msgstr "No se puede poner UID en el objeto de sesión."
+
#~ msgid "Cannot allocate PolKitAction."
#~ msgstr "No se puede asignar PolKitAction."
+
#~ msgid "Cannot set action_id"
#~ msgstr "No se pudo poner action_id"
+
#~ msgid "Cannot allocate PolKitContext."
#~ msgstr "No se pudo asignar PolKitContext."
+
#~ msgid "Cannot initialize PolKitContext: %s"
#~ msgstr "No se pudo inicializar PolKitContext: %s"
+
#~ msgid "Could not determine whether caller is authorized: %s"
#~ msgstr "No se pudo determinar si el llamador está autorizado: %s"
+
#~ msgid "Cannot obtain auth: %s"
#~ msgstr "No se pudo obtener auth: %s"
+
#~ msgid "PolicyKit responded with '%s'"
#~ msgstr "PolicyKit respondió con '%s'"
+
#~ msgid ""
#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
#~ "daemon"
#~ msgstr ""
#~ "Planificación de alta prioridad (nivel Unix negativo) para el demonio "
#~ "PulseAudio"
+
#~ msgid "Real-time scheduling for the PulseAudio daemon"
#~ msgstr "Planificación de tiempo real para el demonio de PulseAudio."
+
#~ msgid ""
#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
#~ msgstr ""
#~ "Las polÃticas del sistema impidieron a PulseAudio adquirir la "
#~ "planificación de alta prioridad."
+
#~ msgid ""
#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
#~ msgstr ""
#~ "Las polÃticas del sistema impidieron a PulseAudio adquirir la "
#~ "planificación de tiempo real."
+
#~ msgid "read() failed: %s\n"
#~ msgstr "read() falló: %s\n"
+
#~ msgid "pa_context_connect() failed: %s\n"
#~ msgstr "pa_context_connect() falló: %s\n"
+
#~ msgid "We're in the group '%s', allowing high-priority scheduling."
#~ msgstr ""
#~ "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
+
#~ msgid "We're in the group '%s', allowing real-time scheduling."
#~ msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real."
+
#~ msgid "PolicyKit grants us acquire-high-priority privilege."
#~ msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
+
#~ msgid "PolicyKit refuses acquire-high-priority privilege."
#~ msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
+
#~ msgid "PolicyKit grants us acquire-real-time privilege."
#~ msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
+
#~ msgid "PolicyKit refuses acquire-real-time privilege."
#~ msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
+
#~ msgid ""
#~ "Called SUID root and real-time and/or high-priority scheduling was "
#~ "requested in the configuration. However, we lack the necessary "
@@ -2246,61 +2427,86 @@ msgstr "Servidor de Sonido PulseAudio"
#~ "adquiera los privilegios apropiados en PolicyKit, o hágase miembro de '%"
#~ "s', o aumente los lÃmites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para este "
#~ "usuario."
+
#~ 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."
+
#~ msgid "Successfully increased RLIMIT_RTPRIO"
#~ msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
+
#~ msgid "RLIMIT_RTPRIO failed: %s"
#~ msgstr "Fallo en RLIMIT_RTPRIO: %s"
+
#~ msgid "Giving up CAP_NICE"
#~ msgstr "Abandonando CAP_NICE"
+
#~ 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."
+
#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
#~ msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-"
+
#~ msgid "time_new() failed.\n"
#~ msgstr "time_new() falló.\n"
+
#~ msgid "Analog Mono"
#~ msgstr "Mono Analógico"
+
#~ msgid "Analog Stereo"
#~ msgstr "Estéreo Analógico"
+
#~ msgid "Digital Stereo (IEC958)"
#~ msgstr "Estéreo Digital (IEC958)"
+
#~ msgid "Digital Stereo (HDMI)"
#~ msgstr "Estéreo Digital (HDMI)"
+
#~ msgid "Analog Surround 4.0"
#~ msgstr "Análogo Envolvente 4.0"
+
#~ msgid "Digital Surround 4.0 (IEC958/AC3)"
#~ msgstr "Digital Envolvente 4.0 (IEC9588/AC3)"
+
#~ msgid "Analog Surround 4.1"
#~ msgstr "Análogo Envolvente 4.1"
+
#~ msgid "Analog Surround 5.0"
#~ msgstr "Análogo Envolvente 5.0"
+
#~ msgid "Analog Surround 5.1"
#~ msgstr "Análogo Envolvente 5.1"
+
#~ msgid "Digital Surround 5.1 (IEC958/AC3)"
#~ msgstr "Digital Envolvente 5.1 (IEC958/AC3)"
+
#~ msgid "Analog Surround 7.1"
#~ msgstr "Análogo Envolvénte 7.1"
+
#~ msgid "Output %s + Input %s"
#~ msgstr "Salida %s + Entrada %s"
+
#~ msgid "Output %s"
#~ msgstr "Salida %s"
+
#~ msgid "Input %s"
#~ msgstr "Entrada %s"
+
#~ msgid "Stream successfully created\n"
#~ msgstr "Se ha creado el flujo exitosamente\n"
+
#~ msgid "Stream errror: %s\n"
#~ msgstr "Error de flujo: %s\n"
+
#~ msgid "Connection established.\n"
#~ msgstr "Conección establecida.\n"
+
#~ msgid ""
#~ "%s [options] [FILE]\n"
#~ "\n"
@@ -2341,6 +2547,7 @@ msgstr "Servidor de Sonido PulseAudio"
#~ "(linear)en el rango de 0...65536\n"
#~ " --channel-map=CHANNELMAP Establece el mapa del canal para "
#~ "el uso\n"
+
#~ msgid ""
#~ "paplay %s\n"
#~ "Compiled with libpulse %s\n"
@@ -2349,12 +2556,16 @@ msgstr "Servidor de Sonido PulseAudio"
#~ "paplay %s\n"
#~ "Compilado con libpulse %s\n"
#~ "Linked con libpulse %s\n"
+
#~ msgid "Invalid channel map\n"
#~ msgstr "Mapa de canal inválido\n"
+
#~ msgid "Failed to open file '%s'\n"
#~ msgstr "Error al intentar abrir el archivo '%s'\n"
+
#~ msgid "Channel map doesn't match file.\n"
#~ msgstr "El mapa del canal no se corresponde con el archivo.\n"
+
#~ msgid "Using sample spec '%s'\n"
#~ msgstr "Utilizando especificaciones de muestra '%s'\n"
@@ -2373,6 +2584,7 @@ msgstr "Servidor de Sonido PulseAudio"
#, fuzzy
#~ msgid "--log-time boolean argument"
#~ msgstr "--disallow-exit argumento booleano"
+
#~ msgid ""
#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
#~ "For enabling real-time scheduling please acquire the appropriate "
@@ -2381,21 +2593,27 @@ msgstr "Servidor de Sonido PulseAudio"
#~ "' y PolicyKit se niega a darnos privilegios. Abandonando SUID de nuevo.\n"
#~ "Para permitir planificación en tiempo real, por favor adquiera los "
#~ "privilegios de PolicyKit adecuados, o forme parte de '"
+
#~ msgid ""
#~ "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this "
#~ "user."
#~ msgstr ""
#~ "', o incremente los lÃmites del recurso RLIMIT_NICE/RLIMIT_RTPRIO para "
#~ "ese usuario. "
+
#~ msgid "Default sink name (%s) does not exist in name register."
#~ msgstr ""
#~ "El nombre de destino por defecto (%s) no existe en el registro de nombres."
+
#~ msgid "Buffer overrun, dropping incoming data\n"
#~ msgstr "Búfer desbordado, abandonando datos entrantes\n"
+
#~ msgid "pa_stream_drop() failed: %s\n"
#~ msgstr "pa_stream_drop() falló: %s\n"
+
#~ msgid "muted"
#~ msgstr "mudo"
+
#~ msgid ""
#~ "*** Autoload Entry #%u ***\n"
#~ "Name: %s\n"
@@ -2408,8 +2626,9 @@ msgstr "Servidor de Sonido PulseAudio"
#~ "Tipo: %s\n"
#~ "Módulo: %s\n"
#~ "Argumento: %s\n"
+
#~ msgid "sink"
#~ msgstr "destino"
+
#~ msgid "source"
#~ msgstr "fuente"
-
diff --git a/po/fi.po b/po/fi.po
index 0502ea6..8a635ce 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-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-05 16:24+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu at lokalisointi.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -72,11 +72,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Sisäinen äänentoisto"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modeemi"
@@ -92,92 +92,92 @@ msgstr "Uuden dl-lataaminen varaaminen epäonnistui."
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loaderin lisääminen epäonnistui."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Saatiin signaali %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Poistutaan."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Käyttäjää â%sâ ei löydetty."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ryhmää â%sâ ei löydetty."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Löydettiin käyttäjä â%sâ (UID %lu) ja ryhmä â%sâ (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "Käyttäjän â%sâ ja ryhmän â%sâ GID:t eivät vastaa toisiaan."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Käyttäjän â%sâ kotihakemisto ei ole â%sâ, ohitetaan."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Hakemiston â%sâ luominen epäonnistui: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ryhmäluettelon vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID:n vaihtaminen epäonnistui: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Root-oikeuksista luopuminen onnistui."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Järjestelmänlaajuista tilaa ei tueta tällä alustalla."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) epäonnistui: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Komentorivin jäsentäminen epäonnistui."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -185,156 +185,156 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start-valitsinta ei tueta järjestelmätilassa."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Suoritetaan järjestelmätilassa, mutta --disallow-exit ei ole asetettuna!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Suoritetaan järjestelmätilassa, mutta -disallow-module-loading ei ole "
"asetettuna!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
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:591
+#: ../src/daemon/main.c:584
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:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio:n saaminen epäonnistui."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "putki epäonnistui: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() epäonnistui: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() epäonnistui: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG on määritelty, kaikki assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH on määritelty, vain fast path -assertit ovat poissa käytöstä."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Kaikki assertit ovat käytössä."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -344,15 +344,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() epäonnistui."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -360,29 +360,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() epäonnistui."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
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:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
@@ -713,12 +713,12 @@ msgstr "[%s:%u] Virheellinen fragmenttikoko â%sâ."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Virheellinen nice-taso â%sâ."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -726,13 +726,14 @@ msgstr ""
"Kanavien oletusmäärä ja oletuskanavakartan kanavien määrä poikkeavat "
"toisistaan."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Luettu asetustiedostosta: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Luovutaan pääkäyttäjän oikeuksista."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -743,7 +744,7 @@ msgstr "PulseAudio-äänijärjestelmä"
msgid "Start the PulseAudio Sound System"
msgstr "Käynnistä PulseAudio-äänijärjestelmä"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -947,33 +948,33 @@ msgstr "Vasen ylä taka"
msgid "Top Rear Right"
msgstr "Oikea ylä taka"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(virheellinen)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "4.0-tilaääni"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "4.1-tilaääni"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "5.0-tilaääni"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "5.1-tilaääni"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "7.1-tilaääni"
@@ -1077,27 +1078,27 @@ msgstr "Puuttuva toteutus"
msgid "Client forked"
msgstr "Asiakasohjelma haarautui"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %u kan. %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1110,7 +1111,7 @@ msgstr "XOpenDisplay() epäonnistui"
msgid "Failed to parse cookie data"
msgstr "Evästetietojen jäsennys epäonnistui"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Asetustiedoston avaaminen epäonnistui: â%sâ: %s"
@@ -1124,12 +1125,12 @@ msgstr "Ei ladattua evästettä. Yritetään yhdistämistä ilman."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Saatiin viesti tuntemattomalle laajennokselle â%sâ"
@@ -2208,39 +2209,39 @@ msgstr "Evästetietojen lataaminen epäonnistui\n"
msgid "Not yet implemented.\n"
msgstr "Toteutusta ei vielä ole.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Taustaprosessi ei vastaa."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2249,7 +2250,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Automaattisen käynnistyksen lukkoa ei voida käyttää."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2266,7 +2267,7 @@ msgstr ""
"asetettuna, snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, "
"joka on < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2283,15 +2284,15 @@ msgstr ""
"snd_pcm_avail() palautti kuitenkin 0 tai jonkin muun arvon, on < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Poissa"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Korkean äänenlaadun toisto (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
@@ -2299,6 +2300,9 @@ msgstr ""
msgid "PulseAudio Sound Server"
msgstr "PulseAudio-äänipalvelin"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Järjestelmäväylään ei voida yhdistää: %s"
diff --git a/po/fr.po b/po/fr.po
index a6bcdb6..31e7635 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-26 17:22+0200\n"
"Last-Translator: Corentin Perard <corentin.perard at gmail.com>\n"
"Language-Team: French <fedora-trans-fr at redhat.com>\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -77,11 +77,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Audio interne"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -97,93 +97,93 @@ msgstr "Ãchec lors de l'allocation du nouveau chargeur dl."
msgid "Failed to add bind-now-loader."
msgstr "Ãchec lors de l'ajout du chargeur bind-now."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Signal %s obtenu."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Fermeture."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Impossible de trouver l'utilisateur « %s »."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Impossible de trouver le groupe « %s »."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Utilisateur « %s â (UID %lu) et groupe « %s » (GID %lu) trouvé."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
"Le GID de l'utilisateur « %s » et du groupe « %s » ne sont pas identiques."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Le dossier personnel de l'utilisateur « %s » n'est pas « %s », ignoré."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Ãchec lors de la création de « %s » : %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ãchec lors du changement de la liste du groupe : %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Ãchec lors du changement de GIDÂ : %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Ãchec lors du changement d'UIDÂ : %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Les privilèges root ont été correctement abandonnés."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Mode système étendu non pris en charge sur cette plateforme."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Ãchec lors de l'analyse de la ligne de commande"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -191,156 +191,156 @@ msgstr ""
"Le programme n'est pas conçu pour être lancé en tant que root (sauf si --"
"system est renseigné)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Les privilèges root sont nécessaires."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
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:583
+#: ../src/daemon/main.c:576
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:586
+#: ../src/daemon/main.c:579
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:591
+#: ../src/daemon/main.c:584
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:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Ãchec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "Ãchec du tube : %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "Ãchec de fork()Â : %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "Ãchec de read()Â : %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Ãchec lors du démarrage du démon."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u processeurs trouvés."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG défini, tous les messages d'erreur sont désactivés."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH défini, seuls les messages d'erreur fastpath ont été désactivés."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Tous les messages d'erreur sont activés."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Ãchec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -350,16 +350,16 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "Ãchec de pa_pid_file_create()."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -367,27 +367,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:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "Ãchec de pa_core_new()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Ãchec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
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:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Démon terminé."
@@ -723,12 +723,12 @@ msgstr "[%s:%u] Taille du fragment « %s » invalide."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, 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:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -736,13 +736,14 @@ msgstr ""
"Le plan de canaux spécifié par défaut a un nombre de canaux différent du "
"nombre spécifié par défaut."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Abandon des privilèges root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -753,7 +754,7 @@ msgstr "Système de son PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Démarrer le système de son PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -957,33 +958,33 @@ msgstr "Arrière gauche haut"
msgid "Top Rear Right"
msgstr "Arrière droit haut"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(invalide)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stéréo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1087,27 +1088,27 @@ msgstr "Implantation manquante"
msgid "Client forked"
msgstr "Le client s'est divisé (Client forked)"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f Gio"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f Mio"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f Kio"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1120,7 +1121,7 @@ msgstr "Ãchec de XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "Ãchec lors de l'analyse des données du cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Ãchec lors de l'ouverture du fichier de configuration « %s » :%s"
@@ -1134,12 +1135,12 @@ msgstr "Aucun cookie chargé. Tentative de connexion sans celui-ci."
msgid "fork(): %s"
msgstr "fork()Â : %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid()Â : %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Message reçu pour une extension inconnue « %s »"
@@ -2247,39 +2248,39 @@ msgstr "Ãchec lors du chargement des données du cookie\n"
msgid "Not yet implemented.\n"
msgstr "Pas encore implémenté.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0)Â : %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect()Â : %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Impossible de tuer le démon PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Le démon ne répond pas."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select()Â : %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork()Â : %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read()Â : %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write()Â : %s"
@@ -2288,7 +2289,7 @@ msgstr "write()Â : %s"
msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2305,7 +2306,7 @@ msgstr ""
"le jeu POLLOUT -- cependant un snd_pcm_avail() ultérieur a retourné 0 ou une "
"autre valeur < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2323,15 +2324,15 @@ msgstr ""
"autre valeur < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Ãteint"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Lecture haute fidélité (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephonie en duplex (HSP/HFP)"
@@ -2339,6 +2340,9 @@ msgstr "Telephonie en duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Serveur de son PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select()Â : %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Impossible de se connecter au bus système : %s"
diff --git a/po/gu.po b/po/gu.po
index 66837d8..7d00130 100644
--- a/po/gu.po
+++ b/po/gu.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-07 14:27+0530\n"
"Last-Translator: Sweta Kothari <swkothar at redhat.com>\n"
"Language-Team: Gujarati\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -73,11 +73,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "àªàªàª¤àª°àª¿àª àªàª¡àª¿àª¯à«"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "મà«àª¡à«àª®"
@@ -93,244 +93,244 @@ msgstr "નવા dl લà«àª¡àª°àª¨à« ફાળવવાનà«àª નિષà«
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loader નૠàªàª®à«àª°àªµàª¾àª¨à«àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "સàªàªà«àª¤ %s મળà«àª¯à«."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "બહાર નà«àªàª³à« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "વપરાશàªàª°à«àª¤àª¾ '%s' નૠશà«àª§àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "àªà«àª¥ '%s' નૠશà«àª§àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "વપરાશàªàª°à«àª¤àª¾ '%s' (UID %lu) àª
નૠàªà«àª¥ '%s' (GID %lu) શà«àª§àª¾àª¯à«."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "વપરાશàªàª°à«àª¤àª¾ '%s' àª
નૠàªà«àª¥ '%s' નૠGID બàªàª§àª¬à«àª¸àª¤à« નથà«."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "વપરાશàªàª°à«àª¤àª¾àª '%s' નૠàªàª° ડિરà«àªà«àªàª°à« '%s' નથà«, àª
વàªàª£à« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' નૠબનાવવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "àªà«àª¥ યાદà«àª¨à« બદલવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID નૠબદલવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID નૠબદલવામાઠનિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "સફળતાપà«àª°à«àªµàª àªà«àª¡à« દà«àª§à«àª² રà«àª àª
ધિàªàª¾àª°à«."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "ઠપà«àª²à«àªàª«à«àª°à«àª® પર બિનàªàª§àª¾àª°àªà«àª¤ સિસà«àªàª® વિશાળ સà«àª¥àª¿àª¤àª¿."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "àªàª¦à«àª¶ વાàªà«àª¯àª¨à« પદàªà«àªà«àª¦àª¨ àªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "ડિમન àªàª¾àª²à« રહà«àª¯à« નથà«"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %u તરà«àªà« ડિમન àªàª¾àª²à« રહà«àª¯à« àªà«"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ડિમનનૠમારવાનà«àª નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"ઠપà«àª°àªà«àª°àª¿àª¯àª¾àª¨à« રà«àª તરà«àªà« àªàª²àª¾àªµàªµàª¾ માàªà« વિàªàª¾àª° થયà«àª² નથૠ(નહિઠતૠ--system ઠસà«àªªàª·à«àª થયà«àª² àªà«)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "રà«àª àª
ધિàªàª¾àª°à« àªàª°à«àª°à« àªà«."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start ઠસિસà«àªàª® àªàª¦àª¾àª¹àª°àª£à« માàªà« àªàª§àª¾àª°àªà«àª¤ નથà«."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, પરàªàª¤à« --disallow-exit સà«àª¯à«àªàª¿àª¤ નથà«!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, પરàªàª¤à« --disallow-module-loading ઠસà«àª¯à«àªàª¿àª¤ નથà«!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, SHM સà«àª¥àª¿àª¤àª¿àª¨à« દબાણપà«àª°à«àªµàª નિષà«àªà«àª°àª¿àª¯ àªàª°à« રહà«àª¯àª¾ àªà«!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«, બહાર નà«àªàª³àªµàª¨àª¾àª નિષà«àªàª¾àª°à«àª¯ સમયનૠદબાણપà«àª°à«àªµàª નિષà«àªà«àª°àª¿àª¯ àªàª°à« "
"રહà«àª¯àª¾ àªà«!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio નૠમà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "પાàªàªª નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() નિષà«àª«àª³: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ડિમન શરà«àªàª¤ નિષà«àª«àª³."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "ડિમન શરà«àªàª¤ àªàª°àªµà« સફળ àªà«."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "ઠPulseAudio %s àªà«"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "àªàª®à«àªªàª¾àªàª²à«àª¶àª¨ યàªàª®àª¾àª¨: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "àªàª®à«àªªàª¾àªàª²à«àª¶àª¨ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "યàªàª®àª¾àª¨ પર àªàª¾àª²à« રહà«àª¯à« àªà«: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs શà«àª§àª¾àª¯à«."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "પાનાàªàª¨à« માપ %lu બાàªàªà« àªà«"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind àªàª§àª¾àª° સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«: હા"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind àªàª§àª¾àª° સાથૠàªàª®à«àªªàª¾àªàª² થયà«àª² àªà«: ના"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "શà«àª°à«àª·à«àª થયà«àª² બિલà«àª¡: હા"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "શà«àª°à«àª·à«àª થયà«àª² બિલà«àª¡: ના"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG વà«àª¯àª¾àªà«àª¯àª¾àª¯àª¿àª¤ થયà«àª² àªà«, બધા હàªà« નિષà«àªà«àª°àª¿àª¯ થયà«àª² àªà«."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH વà«àª¯àª¾àªà«àª¯àª¾àª¯àª¿àª¤ થયà«àª² àªà«, ફàªà«àª¤ àªàª¡àªªà« પાથનાઠહàªà« નિષà«àªà«àª°àª¿àª¯ થયà«àª² àªà«."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "બધા હàªà« સàªà«àª°àª¿àª¯ થયà«àª² àªà«."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "મશà«àª¨ ID નૠમà«àª³àªµàªµàª¾àª®àª¾àª નિષà«àª«àª³"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "મશà«àª¨ ID %s àªà«."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "મશà«àª¨ ID %s àªà«."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "રનàªàª¾àªàª® ડિરà«àªà«àªàª°à« %s નૠવાપરૠરહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "સà«àª¥àª¿àª¤àª¿ ડિરà«àªà«àªàª°à« %s નૠવાપરૠરહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "સિસà«àªàª® સà«àª¥àª¿àª¤àª¿àª®àª¾àª àªàª¾àª²à« રહà«àª¯à« àªà«: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,15 +340,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() નિષà«àª«àª³."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "તાàªà« high-resolution àªàª¾àªàª®àª°à« àªàªªàª²à«àª¬àª§ àªà«! બà«àª¨ àªàªªà«àªàª¾àªàª!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -356,27 +356,27 @@ msgstr ""
"મિતà«àª°, તમારૠàªàª°à«àª¨àª²àª®àª¾àª àªàª¡àª¬àª¡ àªà«! રસà«àªàª¯àª¾àª¨à«àª àªàªà« àªàª²àª¾àª®àª£ ઠસàªà«àª°àª¿àª¯ થયà«àª² high-resolution "
"àªàª¾àªàª®àª°à« સાથૠLinux નà«àª àªà«!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() નિષà«àª«àª³."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ડિમનનૠશરૠàªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "àªà«àªàªªàª£ લà«àª¡ થયà«àª² મà«àª¡à«àª¯à«àª²à« વàªàª° ડિમનનૠશરૠàªàª°à«, àªàª¾àª® àªàª°àªµàª¾ માàªà« ફરૠશરૠàªàª°à« રહà«àª¯àª¾ àªà«."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ડિમન પારàªàª àªàª°àªµàª¾àª¨à«àª સમાપà«àª¤ àªà«."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ડિમનનૠબàªàª§ àªàª°àªµàª¾àª¨à«àª પà«àª°àª¾àª°àªàª થયà«àª² àªà«."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ડિમનનૠàª
àªàª¤ àªàªµà«àª² àªà«."
@@ -692,25 +692,26 @@ msgstr "[%s:%u] àª
યà«àªà«àª¯ ફà«àª°à«àªàª®à«àª¨à«àª માપ '%s'
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] àª
યà«àªà«àª¯ સારૠસà«àª¤àª° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "રà«àªªàª°à«àªàª¾àªàªàª¨ ફાàªàª²àª¨à« àªà«àª²àªµàª¾àª¨à«àª નિષà«àª«àª³: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### રà«àªªàª°à«àªàª¾àªàªàª¨ ફાàªàª²àª®àª¾àªàª¥à« વાàªàªà«: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "રà«àª àª
ધિàªàª¾àª°à«àª¨à« àªà«àª¡à« રહà«àª¯àª¾ àªà«."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -721,7 +722,7 @@ msgstr "PulseAudio સાàªàª¨à«àª¡ સિસà«àªàª®"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio સાàªàª¨à«àª¡ સિસà«àªàª®àª¨à« શરૠàªàª°à«"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "મà«àª¨à«"
@@ -925,33 +926,33 @@ msgstr "àªàªªàª° રિàª
ર ડાબà«"
msgid "Top Rear Right"
msgstr "àªàªªàª° રિàª
ર àªàª®àª£à«"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(àª
યà«àªà«àª¯)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "સà«àªà«àª°àª¿àª"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "સરાàªàª¨à«àª¡ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "સરાàªàª¨à«àª¡ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "સરાàªàª¨à«àª¡ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "સરાàªàª¨à«àª¡ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "સરાàªàª¨à«àª¡ 7.1"
@@ -1055,27 +1056,27 @@ msgstr "àªà«àª® થયà«àª² àª
મલà«àªàª°àª£"
msgid "Client forked"
msgstr "àªà«àª²àª¾àªàª¨à«àªàª®àª¾àª ફાàªàª¾ પડà«àª² àªà«"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1088,7 +1089,7 @@ msgstr "XOpenDisplay() નિષà«àª«àª³"
msgid "Failed to parse cookie data"
msgstr "àªà«àªà«àª¨à« માહિતà«àª¨à« પદàªà«àªà«àª¦àª¨ àªàª°àªµàª¾àª®àª¾àª નિષà«àª«àª³"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "રà«àªªàª°à«àªàª¾àªàªàª¨ ફાàªàª² '%s' નૠàªà«àª²àªµàª¾àª®àª¾àª નિષà«àª«àª³: %s"
@@ -1102,12 +1103,12 @@ msgstr "àªà«àªà« લà«àª¡ થયà«àª² નથà«. તà«àª¨àª¾àª વàªàª°
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "àª
àªà«àªàª¾àª¤ àªàªà«àª¸àªà«àª¨à«àª¶àª¨ '%s' માàªà« મળà«àª² સàªàª¦à«àª¶"
@@ -2185,39 +2186,39 @@ msgstr "àªà«àªà« માહિતà«àª¨à« લà«àª¡ àªàª°àªµàª¾àª®àª¾àª
msgid "Not yet implemented.\n"
msgstr "હàªà« àª
મલà«àªàª°àª£ થયà«àª² નથà«.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ડિમનનૠમારવામાઠનિષà«àª«àª³."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ડિમન ઠàªàªµàª¾àª¬ àªàªªàª¤à« નથà«."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2226,7 +2227,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn તાળાનૠદાàªàª² àªàª°à« શàªàª¾àª¤à« નથà«."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2243,7 +2244,7 @@ msgstr ""
"POLLOUT સà«àª¯à«àªàª¨ સાથૠàªàªªàª£à« àªàª¾àªà«àª² હતા -- àªàª¤àª¾àªàªªàª£ ના પàªà«àª¨à«àª snd_pcm_avail() નૠ0 પાàªà« મળૠ"
"àªà« àª
થવા બà«àªà« àªàª¿àªàª®àª¤ < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2261,15 +2262,15 @@ msgstr ""
"àªà« àª
થવા બà«àªà« àªàª¿àªàª®àª¤ < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "બàªàª§"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2277,6 +2278,9 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio સાàªàª¨à«àª¡ સરà«àªµàª°"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "સિસà«àªàª® બસનૠàªà«àª¡à« શàªàª¾àª¤à« નથà«: %s"
diff --git a/po/hi.po b/po/hi.po
index e406a5f..080931e 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-06-08 12:01+0530\n"
"Last-Translator: Rajesh Ranjan <rajesh672 at gmail.com>\n"
"Language-Team: Hindi <hindi.sf.net>\n"
@@ -20,7 +20,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -75,11 +75,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à¤à¤à¤¤à¤°à¤¿à¤ à¤à¤¡à¤¿à¤¯à¥"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "मà¥à¤¡à¥à¤®"
@@ -95,242 +95,242 @@ msgstr "नया dl लà¥à¤¡à¤° à¤à¤¬à¤à¤à¤¿à¤¤ à¤à¤°à¤¨à¥ मà¥à¤ व
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loader à¤à¥à¤¡à¤¼à¤¨à¥ मà¥à¤ विफल."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s सà¤à¤à¥à¤¤ पाया."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "बाहर हॠरहा हà¥."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' à¤à¤ªà¤¯à¥à¤à¥à¤¤à¤¾ ढà¥à¤à¤¢à¤¼à¤¨à¥ मà¥à¤ विफल."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' समà¥à¤¹ ढà¥à¤à¤¢à¤¼à¤¨à¥ मà¥à¤ विफल."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "'%s' (UID %lu) à¤à¤ªà¤¯à¥à¤à¥à¤¤à¤¾ व '%s' (GID %lu) समà¥à¤¹ पाया."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "'%s' à¤à¤ªà¤¯à¥à¤à¥à¤¤à¤¾ à¤à¤° '%s' समà¥à¤¹ à¤à¤¾ GID मà¥à¤² नहà¥à¤ à¤à¤¾à¤¤à¤¾ हà¥"
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "'%s' à¤à¤ªà¤¯à¥à¤à¥à¤¤à¤¾ à¤à¥ à¤à¤° निरà¥à¤¦à¥à¤¶à¤¿à¤à¤¾ '%s' नहà¥à¤ हà¥, à¤
नदà¥à¤à¤¾ à¤à¤° रहा हà¥."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' बनानॠमà¥à¤ विफल: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "समà¥à¤¹ सà¥à¤à¥ पानॠमà¥à¤ विफल: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID बदलनॠमà¥à¤ विफल: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID बदलनॠमà¥à¤ विफल: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "रà¥à¤ à¤
धिà¤à¤¾à¤° सफलतापà¥à¤°à¥à¤µà¤ à¤à¥à¤¡à¤¼à¤¾."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "à¤à¤¸ पà¥à¤²à¥à¤à¤«à¥à¤°à¥à¤® पर à¤
समरà¥à¤¥à¤¿à¤¤ तà¤à¤¤à¥à¤° वà¥à¤¯à¤¾à¤ªà¤ विधि."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) विफल: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à¤à¤®à¤¾à¤à¤¡ लाà¤à¤¨ विशà¥à¤²à¥à¤·à¤£ मà¥à¤ विफल."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "डà¥à¤®à¥à¤¨ नहà¥à¤ à¤à¤¾à¤°à¥à¤¯à¤¶à¥à¤²"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "डà¥à¤®à¥à¤¨ बतà¥à¤° PID %u à¤à¤² रहा हà¥"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "डà¥à¤®à¥à¤¨ हà¤à¤¾à¤¨à¥ मà¥à¤ विफल: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
"यह पà¥à¤°à¥à¤à¥à¤°à¤¾à¤® बतà¥à¤° रà¥à¤ à¤à¤²à¤¾à¤¨à¥ à¤à¥ लिठà¤à¤à¥à¤à¤¿à¤¤ नहà¥à¤ हॠ(unless --system is specified)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "रà¥à¤ à¤
धिà¤à¤¾à¤° à¤à¤°à¥à¤°à¥."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start not supported for system instances."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "तà¤à¤¤à¥à¤° मà¥à¤¡ मà¥à¤ à¤à¤² रहा हà¥, लà¥à¤à¤¿à¤¨ --disallow-exit सà¥à¤ नहà¥à¤!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "तà¤à¤¤à¥à¤° मà¥à¤¡ मà¥à¤ à¤à¤² रहा हà¥, लà¥à¤à¤¿à¤¨ --disallow-module-loading सà¥à¤ नहà¥à¤!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "तà¤à¤¤à¥à¤° मà¥à¤¡ मà¥à¤ à¤à¤² रहा हà¥, SHM मà¥à¤¡ बाधà¥à¤¯ रà¥à¤ª सॠनिषà¥à¤à¥à¤°à¤¿à¤¯!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "तà¤à¤¤à¥à¤° मà¥à¤¡ मà¥à¤ à¤à¤² रहा हà¥, निà¤à¤¾à¤¸ निषà¥à¤à¥à¤°à¤¿à¤¯ समय बाधà¥à¤¯ रà¥à¤ª सॠनिषà¥à¤à¥à¤°à¤¿à¤¯!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio पानॠमà¥à¤ विफल."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "पाà¤à¤ª विफल: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() विफल: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() विफल: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "डà¥à¤®à¥à¤¨ à¤à¤°à¤à¤ विफल."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "डà¥à¤®à¥à¤¨ à¤à¤°à¤à¤ सफल."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "यह पलà¥à¤¸à¤à¤¡à¤¿à¤¯à¥ %s हà¥."
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Compilation host: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilation CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "मà¥à¤à¤¬à¤¾à¤¨ पर à¤à¤² रहा हà¥: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU पाया."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "पà¥à¤·à¥à¤ à¤à¤à¤¾à¤° %lu बाà¤à¤ हà¥."
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "वà¥à¤²à¤à¥à¤°à¤¿à¤à¤¡ समरà¥à¤¥à¤¨ सॠà¤à¤à¤ªà¤¾à¤à¤²: हाà¤"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "वà¥à¤²à¤à¥à¤°à¤¿à¤à¤¡ समरà¥à¤¥à¤¨ सॠà¤à¤à¤ªà¤¾à¤à¤²: नहà¥à¤"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "वà¥à¤²à¤à¥à¤°à¤¿à¤à¤¡ विधि मà¥à¤ à¤à¤² रहा हà¥: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "à¤
नà¥à¤à¥à¤²à¤¿à¤¤ बिलà¥à¤¡: हाà¤"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "à¤
नà¥à¤à¥à¤²à¤¿à¤¤ बिलà¥à¤¡: नहà¥à¤"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG परिà¤à¤¾à¤·à¤¿à¤¤, सà¤à¥ निषà¥à¤à¥à¤°à¤¿à¤¯."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH परिà¤à¤¾à¤·à¤¿à¤¤, à¤à¥à¤µ तà¥à¤ पथ à¤à¤¸à¤°à¥à¤ निषà¥à¤à¥à¤°à¤¿à¤¯."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "सà¤à¥ à¤à¤¸à¤°à¥à¤ सà¤à¥à¤·à¤®."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "मशà¥à¤¨ ID पानॠमà¥à¤ विफल"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "मशà¥à¤¨ ID %s हà¥."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "मशà¥à¤¨ ID %s हà¥."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "रनà¤à¤¾à¤à¤® निरà¥à¤¦à¥à¤¶à¤¿à¤à¤¾ %s à¤à¤¾ पà¥à¤°à¤¯à¥à¤ à¤à¤° रहा हà¥."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "सà¥à¤à¥à¤ निरà¥à¤¦à¥à¤¶à¤¿à¤à¤¾ %s à¤à¤¾ पà¥à¤°à¤¯à¥à¤ à¤à¤° रहा हà¥."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "तà¤à¤¤à¥à¤° मà¥à¤¡ मà¥à¤ à¤à¤² रहा हà¥: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,42 +340,42 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() विफल."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ताà¤à¤¼à¤¾ à¤à¤à¥à¤ विà¤à¥à¤¦à¤¨ à¤à¤¾à¤à¤®à¤° à¤à¤ªà¤²à¤¬à¥à¤§! à¤à¤¨à¤à¤¦ लà¥à¤!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"à¤à¤ªà¤à¤¾ à¤à¤°à¥à¤¨à¥à¤² बà¥à¤°à¥ सà¥à¤¥à¤¿à¤¤à¤¿ मà¥à¤ हà¥! सलाह हॠà¤à¤¿ à¤à¤à¥à¤ विà¤à¥à¤¦à¤¨ यà¥à¤à¥à¤¤ लिनà¤à¥à¤¸ सà¤à¥à¤°à¤¿à¤¯ à¤à¤¿à¤¯à¤¾ à¤à¤¾à¤¨à¤¾ à¤à¤¾à¤¹à¤¿à¤!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() विफल."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "डà¥à¤®à¥à¤¨ à¤à¤°à¤à¤ à¤à¤°à¤¨à¥ मà¥à¤ विफल."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "बिना लà¥à¤¡ मà¥à¤¡à¥à¤¯à¥à¤² à¤à¥ डà¥à¤®à¥à¤¨ à¤à¤°à¤à¤, à¤à¤¾à¤® à¤à¤°à¤¨à¥ सॠà¤
सà¥à¤µà¥à¤à¤¾à¤° à¤à¤° रहा हà¥."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "डà¥à¤®à¥à¤¨ à¤à¤°à¤à¤à¤¨ पà¥à¤°à¥à¤£."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "डà¥à¤®à¥à¤¨ बनà¥à¤¦ à¤à¤¿à¤¯à¤¾ à¤à¤¾à¤¨à¤¾ à¤à¤°à¤à¤."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "डà¥à¤®à¥à¤¨ à¤
वरà¥à¤§à¤¿à¤¤."
@@ -692,12 +692,12 @@ msgstr "[%s:%u] à¤
वà¥à¤§ à¤à¤à¤¡ à¤à¤à¤¾à¤° '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ नाà¤à¤¸ सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "विनà¥à¤¯à¤¾à¤¸ फ़ाà¤à¤² à¤à¥à¤²à¤¨à¥ मà¥à¤ विफल: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -705,13 +705,14 @@ msgstr ""
"निरà¥à¤¦à¤¿à¤·à¥à¤ तयशà¥à¤¦à¤¾ à¤à¥à¤¨à¤² मानà¤à¤¿à¤¤à¥à¤° à¤à¥ पास à¤à¥à¤¨à¤² à¤à¥ à¤à¤¿à¤¨à¥à¤¨ सà¤à¤à¥à¤¯à¤¾ हॠà¤à¥à¤¨à¤² à¤à¥ तयशà¥à¤¦à¤¾ निरà¥à¤¦à¤¿à¤·à¥à¤ सà¤à¤à¥à¤¯à¤¾ "
"à¤à¥ बनिसà¥à¤ªà¤¤."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### विनà¥à¤¯à¤¾à¤¸ फ़ाà¤à¤² सॠपढ़à¥à¤: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "रà¥à¤ à¤
धिà¤à¤¾à¤° à¤à¥à¤¡à¤¼ रहा हà¥."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -722,7 +723,7 @@ msgstr "पलà¥à¤¸à¤à¤¡à¤¿à¤¯à¥ धà¥à¤µà¤¨à¤¿ तà¤à¤¤à¥à¤°"
msgid "Start the PulseAudio Sound System"
msgstr "पलà¥à¤¸à¤à¤¡à¤¿à¤¯à¥ धà¥à¤µà¤¨à¤¿ तà¤à¤¤à¥à¤° पà¥à¤°à¤¾à¤°à¤à¤ à¤à¤°à¥à¤"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "मà¥à¤¨à¥"
@@ -926,33 +927,33 @@ msgstr "à¤à¤ªà¤° पशà¥à¤ बायाà¤"
msgid "Top Rear Right"
msgstr "à¤à¤ªà¤° पशà¥à¤ दायाà¤"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à¤
वà¥à¤§)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "सà¥à¤à¥à¤°à¤¿à¤¯à¥"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "सरà¥à¤°à¤¾à¤à¤à¤¡ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "सरà¥à¤°à¤¾à¤à¤à¤¡ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "सरà¥à¤°à¤¾à¤à¤à¤¡ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "सरà¥à¤°à¤¾à¤à¤à¤¡ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "सरà¥à¤°à¤¾à¤à¤à¤¡ 7.1"
@@ -1056,27 +1057,27 @@ msgstr "à¤
नà¥à¤ªà¤¸à¥à¤¥à¤¿à¤¤ à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¤¯à¤¨"
msgid "Client forked"
msgstr "à¤à¥à¤²à¤¾à¤à¤à¤ विà¤à¤¾à¤à¤¿à¤¤"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1089,7 +1090,7 @@ msgstr "XOpenDisplay() विफल"
msgid "Failed to parse cookie data"
msgstr "à¤à¥à¤à¥ à¤à¤à¤à¤¡à¤¼à¤¾ à¤à¥ विशà¥à¤²à¥à¤·à¤£ मà¥à¤ विफल"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "विनà¥à¤¯à¤¾à¤¸ फ़ाà¤à¤² '%s' à¤à¥à¤²à¤¨à¥ मà¥à¤ विफल: %s"
@@ -1103,12 +1104,12 @@ msgstr "à¤à¥à¤ à¤à¥à¤à¥ नहà¥à¤ लà¥à¤¡ à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾.
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¤
à¤à¥à¤à¤¾à¤¤ विसà¥à¤¤à¤¾à¤° '%s' à¤à¥ लिठसà¤à¤¦à¥à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¤"
@@ -2191,39 +2192,39 @@ msgstr "à¤à¥à¤à¥ à¤à¤à¤à¤¡à¤¼à¤¾ लà¥à¤¡ à¤à¤°à¤¨à¥ मà¥à¤ वि
msgid "Not yet implemented.\n"
msgstr "à¤
à¤à¥ तठà¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¤¿à¤¤ नहà¥à¤.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio डà¥à¤®à¥à¤¨ à¤à¥ मारनॠमà¥à¤ विफल."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "डà¥à¤®à¥à¤¨ पà¥à¤°à¤¤à¤¿à¤à¥à¤°à¤¿à¤¯à¤¾ नहà¥à¤ दॠरहा हà¥."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2232,7 +2233,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn लà¥à¤ à¤à¥ पहà¥à¤à¤ नहà¥à¤ लॠसà¤à¤¤à¤¾ हà¥."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2249,7 +2250,7 @@ msgstr ""
"हमà¥à¤ POLLOUT सà¥à¤ à¤à¥ साथ तà¥à¤¯à¤¾à¤° à¤à¤¿à¤¯à¤¾ à¤à¤¯à¤¾ हॠ-- हालाà¤à¤à¤¿ परवरà¥à¤¤à¥ snd_pcm_avail() नॠ0 या "
"दà¥à¤¸à¤°à¤¾ मान < min_avail दिया."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2267,15 +2268,15 @@ msgstr ""
"दà¥à¤¸à¤°à¤¾ मान < min_avail दिया."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "बà¤à¤¦"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "à¤à¤à¥à¤ विशà¥à¤µà¤¸à¤¨à¥à¤¯à¤¤à¤¾à¤¯à¥à¤à¥à¤¤à¤¿ पà¥à¤²à¥à¤¬à¥à¤ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¤à¥à¤²à¤¿à¤«à¥à¤¨à¥ डà¥à¤¯à¥à¤ªà¥à¤²à¥à¤à¥à¤¸ (HSP/HFP)"
@@ -2283,6 +2284,9 @@ msgstr "à¤à¥à¤²à¤¿à¤«à¥à¤¨à¥ डà¥à¤¯à¥à¤ªà¥à¤²à¥à¤à¥à¤¸ (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "पलà¥à¤¸à¤à¤¡à¤¿à¤¯à¥ धà¥à¤µà¤¨à¤¿ सरà¥à¤µà¤°"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "तà¤à¤¤à¥à¤° बस सॠà¤à¤¨à¥à¤à¥à¤ नहà¥à¤ हॠसà¤à¤¤à¤¾ हà¥: %s"
diff --git a/po/it.po b/po/it.po
index edb1fd5..c952290 100644
--- a/po/it.po
+++ b/po/it.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-20 22:34+0200\n"
"Last-Translator: mario_santagiuliana <mario at marionline.it>\n"
"Language-Team: Italian <fedora-trans-it at redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Audio interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -94,93 +94,93 @@ msgstr "Allocazione del nuovo loader dl non riuscita."
msgid "Failed to add bind-now-loader."
msgstr "Aggiunta di bind-now-loader non riuscita."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Ottenuto il segnale %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Uscita."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ricerca dell'utente \"%s\" non riuscita."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ricerca del gruppo \"%s\" non riuscita."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Trovato l'utente \"%s\" (UID %lu) e il gruppo \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "Il GID dell'utente \"%s\" e del gruppo \"%s\" non corrispondono."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "La directory home dell'utente \"%s\" non è \"%s\", ignorato."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Creazione di \"%s\" non riuscita: %s"
# group list ????
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Cambio dell'elenco di gruppo non riuscito: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Cambio di GID non riuscito: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Cambio di UID non riuscito: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Privilegi di root abbandonati con successo."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -188,158 +188,158 @@ msgstr ""
"Questo programma non è pensato per essere eseguito come root (a meno di "
"specificare --system)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
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:583
+#: ../src/daemon/main.c:576
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:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"In esecuzione in modalità sistema, disabilitata in modo forzoso la modalità "
"SHM."
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"In esecuzione in modalità sistema, disabilitato in modo forzoso il tempo di "
"uscita per inattività ."
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definito, tutte le dichiarazioni sono disabilitate."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH definito, solo le dichiarazioni veloci di path sono disabilitate."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Tutte le dichiarazioni sono abilitate."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -349,17 +349,17 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
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:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -367,27 +367,27 @@ msgstr ""
"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
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:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Demone terminato."
@@ -739,12 +739,12 @@ msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -752,13 +752,14 @@ msgstr ""
"La mappa del canale predefinita specificata presenta un numero diverso di "
"canali rispetto a quello predefinito specificato."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lettura dal file di configurazione: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Abbandono dei privilegi di root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -769,7 +770,7 @@ msgstr "Sistema sonoro PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Avvia il sistema sonoro PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -975,33 +976,33 @@ msgstr "Superiore posteriore sinistro"
msgid "Top Rear Right"
msgstr "Superiore posteriore destro"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(non valido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1105,27 +1106,27 @@ msgstr "Implementazione mancante"
msgid "Client forked"
msgstr "Fork del client"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s ch %u %u Hz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1138,7 +1139,7 @@ msgstr "XOpenDisplay() non riuscita"
msgid "Failed to parse cookie data"
msgstr "Analisi dei dati cookie non riuscita"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Apertura del file di configurazione \"%s\" non riuscita: %s"
@@ -1152,12 +1153,12 @@ msgstr "Nessun cookie caricato. Tentativo di connettersi senza."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
@@ -2276,39 +2277,39 @@ msgstr "Caricamento dei dati cookie non riuscito\n"
msgid "Not yet implemented.\n"
msgstr "Non ancora implementato.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Uccisione del demone PulseAudio non riuscita."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Il demone non sta rispondendo."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2317,7 +2318,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2334,7 +2335,7 @@ msgstr ""
"Ci si è alzati con impostato POLLOUT -- come sempre un subsequent "
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2352,15 +2353,15 @@ msgstr ""
"snd_pcm_avail() ritorna 0 o un altro valore < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Spento"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Playback ad alta fidabilità (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Doppino Telefonico (HSP/HFP)"
@@ -2368,6 +2369,9 @@ msgstr "Doppino Telefonico (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Server sonoro PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Impossibile effettuare la connessione al bus di sistema: %s"
diff --git a/po/kn.po b/po/kn.po
index 94ff006..49b05cf 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-07 11:13+0530\n"
"Last-Translator: Shankar Prasad <svenkate at redhat.com>\n"
"Language-Team: Kannada <en at li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à²à²à²¤à²°à²¿à² à²à²¡à²¿à²¯à³"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "ಮಾಡà³à²®à³:"
@@ -91,92 +91,92 @@ msgstr "ಹà³à²¸ dl ಲà³à²¡à²°à³ à²
ನà³à²¨à³ ನಿಯà³à²à²¿à²¸à³à²µ
msgid "Failed to add bind-now-loader."
msgstr "bind-now-ಲà³à²¡à²°à³ à²
ನà³à²¨à³ ಸà³à²°à²¿à²¸à²²à²¾à²à²¿à²²à³à²²."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s ನಿà²à²¦ ಸà²à²à³à²¤à²µà³ ದà³à²°à³à²¤à²¿à²¦à³."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ನಿರà³à²à²®à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' à²
ನà³à²¨à³ ಪತà³à²¤à³ ಮಾಡಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "à²à³à²à²ªà³ '%s' à²
ನà³à²¨à³ ಪತà³à²¤à³ ಮಾಡಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' (UID %lu) ಹಾà²à³ à²à³à²à²ªà³ '%s' (GID %lu) à²à²à²¡à³à²¬à²à²¦à²¿à²¦à³."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' ರ GID ಹಾà²à³ à²à³à²à²ªà³ '%s' ತಾಳà³à²¯à²¾à²à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ಬಳà²à³à²¦à²¾à²° '%s' ರ ನà³à²²à³ à²à³à²¶à²µà³ '%s' à²à²à²¿à²²à³à²², à²à²²à²à³à²·à²¿à²¸à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' à²
ನà³à²¨à³ ರà²à²¿à²¸à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "à²à³à²à²ªà²¿à²¨ ಪà²à³à²à²¿à²¯à²¨à³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID à²
ನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID à²
ನà³à²¨à³ ಬದಲಾಯಿಸಲೠವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "ರà³à²à³ ಸವಲತà³à²¤à³à²à²³à²¨à³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ ಬಿಡಲಾà²à²¿à²¦à³."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯à²¾à²¦à³à²¯à²à²¤à²¦ à²à³à²°à²®à²à³à²à³ ಠಪà³à²²à²¾à²à³âಫಾರà³à²®à²¿à²¨à²²à³à²²à²¿ ಬà³à²à²¬à²²à²µà²¿à²²à³à²²."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à²à²à³à²à²¾ ಸಾಲನà³à²¨à³ ಪಾರà³à²¸à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "ಡà³à²®à²¨à³ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "ಡà³à²®à²¨à³ PID %u ಯಾà²à²¿ à²à²²à²¾à²¯à²¿à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²à³à²²à³à²²à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -184,158 +184,158 @@ msgstr ""
"ಠಪà³à²°à³à²à³à²°à²¾à²®à²¨à³à²¨à³ ರà³à²à³â à²à²à²¿ à²à²²à²¾à²¯à²¿à²¸à³à²µ à²à²¦à³à²§à³à²¶à²µà²¨à³à²¨à³ ಹà³à²à²¦à²¿à²²à³à²² (--system à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²¦à³ "
"à²à²¦à³à²¦à²²à³à²²à²¿ ಮಾತà³à²°)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "ನಿರà³à²µà²¾à²¹à² ಸವಲತà³à²¤à³à²à²³ à²
à²à²¤à³à²¯à²µà²¿à²¦à³."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯ ಸನà³à²¨à²¿à²µà³à²¶à²¦à²¿à²à²¦ --start ಬà³à²à²¬à²²à²¿à²¤à²µà²¾à²à²¿à²²à³à²²."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³, à²à²¦à²°à³ --disallow-exit à²
ನà³à²¨à³ ಹà³à²à²¦à²¿à²¸à²²à²¾à²à²¿à²²à³à²²!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³, à²à²¦à²°à³ --disallow-module-loading à²
ನà³à²¨à³ "
"ಹà³à²à²¦à²¿à²¸à²²à²¾à²à²¿à²²à³à²²!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, SHM à²à³à²°à²®à²µà²¨à³à²¨à³ à²à²¤à³à²¤à²¾à²¯à²ªà³à²°à³à²µà²à²µà²¾à²à²¿ "
"à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³à²¦à³, ನಿರà³à²à²®à²¿à²¸à³à²µ à²à²¡ ಸಮಯವನà³à²¨à³ à²à²¤à³à²¤à²¾à²¯à²ªà³à²°à³à²µà²à²µà²¾à²à²¿ "
"à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à³à²¤à³à²¤à²¿à²¦à³!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio à²
ನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "ಪà³à²ªà³â ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ಡà³à²®à²¨à³ à²à²°à²à²à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²à²¿ à²à²°à²à²à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à²à²¦à³ PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "à²à²à²ªà³à²²à³ ಮಾಡà³à²µ à²
ತಿಥà³à²¯: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à²à²à²ªà³à²²à³ ಮಾಡà³à²µ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "à²
ತಿಥà³à²¯à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¤à²à³à²³à³à²³à³à²¤à³à²¤à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUà²à²³à³ à²à²à²¡à³à²¬à²à²¦à²¿à²µà³."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "ಪà³à²à²¦ à²à²¾à²¤à³à²°à²µà³ %lu ಬà³à²à³âà²à²³à²¾à²à²¿à²µà³"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ಬà³à²à²¬à²²à²¦à³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³: ಹà³à²¦à³"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ಬà³à²à²¬à²²à²¦à³à²à²¦à²¿à²à³ à²à²à²ªà³à²²à³ ಮಾಡಲಾà²à²¿à²¦à³: à²à²²à³à²²"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¸à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: ಹà³à²¦à³"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "ಪà³à²°à²¶à²¸à³à²¤à²µà²¾à²¦ ನಿರà³à²®à²¾à²£: à²à²²à³à²²"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à²¿à²¦à³, à²à²²à³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³à²à²³à²¨à³à²¨à³ à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
"FASTPATH à²
ನà³à²¨à³ ಸà³à²à²¿à²¸à²²à²¾à²à²¿à²¦à³, à²à³à²µà²² ವà³à² ಮಾರà³à²à²¦ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³à²à²³à²¨à³à²¨à³ à²
ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "à²à²²à³à²²à²¾ ಪà³à²°à²¤à²¿à²ªà²¾à²¦à²¨à³à²à²³à²¨à³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "ಮà³à²¶à³à²¨à³ ID ಯನà³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "ಮà³à²¶à³à²¨à³ ID ಯೠ%s à²à²à²¿à²¦à³."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ಮà³à²¶à³à²¨à³ ID ಯೠ%s à²à²à²¿à²¦à³."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "à²à²²à²¾à²µà²£à²¾à²¸à²®à²¯(ರನà³âà²à³à²®à³) à²à³à²¶ %s à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "ಸà³à²¥à²¿à²¤à²¿ à²à³à²¶ %s à²
ನà³à²¨à³ ಬಳಸಿà²à³à²à²¡à³."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯ à²à³à²°à²®à²¦à²²à³à²²à²¿ à²à²²à²¾à²¯à²¿à²¸à²²à²¾à²à³à²¤à³à²¤à²¿à²¦à³: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -345,15 +345,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ತಾà²à²¾ ರà³à²¸à²²à³à²¯à³à²¶à²¨à³ à²à³à²®à²°à³ ಲà²à³à²¯à²µà²¿à²¦à³! Bon appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -361,27 +361,27 @@ msgstr ""
"ಮಹಾಶಯರà³, ನಿಮà³à²® à²à²°à³à²¨à²²à³ à²à³à²³à³à²¤à³à²¹à³à²à²¿à²¦à³! à²
ತà³à²¯à³à²¤à³à²¤à²® ರà³à²¸à²²à³à²¯à³à²¶à²¨à³ à²à³à²®à²°à³ à²
ನà³à²¨à³ ಶà²à³à²¤à²à³à²³à²¿à²¸à²²à²¾à²¦ "
"ಲಿನà²à³à²¸à²¨à³à²¨à³ ಬಳಸà³à²µà²à²¤à³ à²
ಡà³à²à³à²¯à²µà²°à³ ಸಲಹೠಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à²¾à²°à³!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²à²°à²à²à²¿à²¸à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ಲà³à²¡à³ ಮಾಡಲಾದ ಯಾವà³à²¦à³ ಡà³à²®à²¨à³ à²à²²à³à²²à²¦à³ à²à²°à²à²à²à³à²à²¡à²¿à²¦à³, à²à³à²²à²¸ ಮಾಡಲೠನಿರಾà²à²°à²¿à²¸à²¿à²¦à³."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ಡà³à²®à²¨à³ à²à²°à²à²à²à³à²³à²¿à²à³ ಪà³à²°à³à²£à²à³à²à²¡à²¿à²¦à³."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ಡà³à²®à²¨à³ ಸà³à²¥à²à²¿à²¤à²à³à²³à²¿à²à³à²¯à²¨à³à²¨à³ à²à²°à²à²à²¿à²¸à²²à²¾à²à²¿à²¦à³."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²
à²à²¤à³à²¯à²à³à²³à²¿à²¸à²²à²¾à²à²¿à²¦à³."
@@ -703,12 +703,12 @@ msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ಫà³à²°à²¾à²à³à²®à³à²à²à³
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à²
ಮಾನà³à²¯à²µà²¾à²¦ ನà³à²¸à³â ಹà²à²¤ '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ಸà²à²°à²à²¨à²¾ à²à²¡à²¤à²µà²¨à³à²¨à³ ತà³à²°à³à²¯à²²à³ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -716,13 +716,14 @@ msgstr ""
"ಸà³à²à²¿à²¸à²²à²¾à²¦ ಪà³à²°à³à²µà²¨à²¿à²¯à³à²à²¿à²¤ à²à²¾à²¨à²²à³ ನà²à³à²·à³à²¯à³ ಪà³à²°à³à²µà²¨à²¿à²¯à³à²à²¿à²¤ à²à²¾à²¨à²²à³âà²à²³ ಸà²à²à³à²¯à³à²à²³à²¿à²à²¿à²à²¤ ವಿà²à²¿à²¨à³à²¨à²µà²¾à²¦ "
"ಮಾರà³à²à²à²³ ಸà²à²à³à²¯à³à²¯à²¨à³à²¨à³ ಹà³à²à²¦à²¿à²¦à³."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ಸà²à²°à²à²¨à²¾ à²à²¡à²¤à²¦à²¿à²à²¦ à²à²¦à³: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "ರà³à²à³â ಸವಲತà³à²¤à³à²à²³à²¨à³à²¨à³ ಬಿಡಲಾà²à³à²¤à³à²¤à²¿à²¦à³."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -733,7 +734,7 @@ msgstr "PulseAudio ಧà³à²µà²¨à²¿ ವà³à²¯à²µà²¸à³à²¥à³"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio ಧà³à²µà²¨à²¿ ವà³à²¯à²µà²¸à³à²¥à³à²¯à²¨à³à²¨à³ à²à²°à²à²à²¿à²¸à²¿"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "ಮà³à²¨à³"
@@ -937,33 +938,33 @@ msgstr "ಮà³à²²à²¿à²¨ ಹಿà²à²¬à²¦à²¿à²¯ à²à²¡à²à²¾à²"
msgid "Top Rear Right"
msgstr "ಮà³à²²à²¿à²¨ ಹಿà²à²¬à²¦à²¿à²¯ ಬಲà²à²¾à²"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à²
ಮಾನà³à²¯)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ಸà³à²à³à²°à²¿à²¯à³"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ಸರà³à²à²¡à³â 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ಸರà³à²à²¡à³â 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ಸರà³à²à²¡à³â 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ಸರà³à²à²¡à³â 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ಸರà³à²à²¡à³â 7.1"
@@ -1067,27 +1068,27 @@ msgstr "à²
ನà³à²µà²¯à²¿à²¸à³à²µà²¿à²à³à²¯à³ à²à²¾à²£à²¿à²¸à³à²¤à³à²¤
msgid "Client forked"
msgstr "à²à³à²²à³à²à²à³ à²
ನà³à²¨à³ ಫà³à²°à³à²à³ ಮಾಡಲಾà²à²¿à²¦à³"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1100,7 +1101,7 @@ msgstr "XOpenDisplay() ವಿಫಲà²à³à²à²¡à²¿à²¦à³"
msgid "Failed to parse cookie data"
msgstr "à²à³à²à²¿ ದತà³à²¤à²¾à²à²¶à²µà²¨à³à²¨à³ ಪಾರà³à²¸à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ಸà²à²°à²à²¨à²¾ à²à²¡à²¤ '%s' à²
ನà³à²¨à³ ಲà³à²¡à³ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³: %s"
@@ -1115,12 +1116,12 @@ msgstr ""
msgid "fork(): %s"
msgstr "ಫà³à²°à³à²à³(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à²
à²à³à²à²¾à²¤ ವಿಸà³à²¤à²°à²£à³ '%s' à²à²à²¦ ಸà²à²¦à³à²¶à²µà²¨à³à²¨à³ ಪಡà³à²¦à³à²à³à²³à³à²³à²²à²¾à²à²¿à²¦à³"
@@ -2201,39 +2202,39 @@ msgstr "à²à³à²à²¿ ದತà³à²¤à²¾à²à²¶à²µà²¨à³à²¨à³ ಲà³à²¡à³ ಮಾಡ
msgid "Not yet implemented.\n"
msgstr "à²à²¨à³à²¨à³ ಸಹ à²
ನà³à²µà²¯à²¿à²¸à²²à²¾à²à²¿à²²à³à²².\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ಸಾà²à³à²à³(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "ಸà²à²ªà²°à³à²à²¿à²¸à³(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ಡà³à²®à²¨à³ à²
ನà³à²¨à³ à²à³à²²à³à²²à³à²µà²²à³à²²à²¿ ವಿಫಲà²à³à²à²¡à²¿à²¦à³."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ಡà³à²®à²¨à³ ಪà³à²°à²¤à²¿à²à³à²°à²¿à²¯à²¿à²¸à³à²¤à³à²¤à²¿à²²à³à²²."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "à²à²¯à³à²à³à²®à²¾à²¡à³(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "ಫà³à²°à³à²à³(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "à²à²¦à³(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "ಬರà³(): %s"
@@ -2242,7 +2243,7 @@ msgstr "ಬರà³(): %s"
msgid "Cannot access autospawn lock."
msgstr "ಸà³à²µà²¯à²à²¹à³à²à³à²à²¿à²¸à³à²µà²¿à²à³à²¯ ಲಾà²à³ à²
ನà³à²¨à³ ನಿಲà³à²à²¿à²¸à²¿à²à³à²³à³à²³à²²à³ ಸಾಧà³à²¯à²µà²¿à²²à³à²²."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2257,7 +2258,7 @@ msgstr ""
"ವಿà²à²¸à²¨à²à²¾à²°à²° à²à²®à²¨à²à³à²à³ ತನà³à²¨à²¿.POLLOUT ಸà³à²à³âನಿà²à²¦ ನಾವೠà²à²à³à²à³à²¤à³à²¤à³à²à³à²à²¡à²¿à²¦à³à²¦à³à²µà³ -- à²à²¦à²°à³ ನà²à²¤à²°à²¦ "
"snd_pcm_avail() 0 à²
ಥವ min_avail à²à³à²à²¿à²à²¤ à²à²¿à²à³à²à²¦à²¾à²¦ à²à²¨à³à²¨à³à²à²¦à³ ಮà³à²²à³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದà³."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2273,15 +2274,15 @@ msgstr ""
"snd_pcm_avail() 0 à²
ಥವ min_avail à²à³à²à²¿à²à²¤ à²à²¿à²à³à²à²¦à²¾à²¦ à²à²¨à³à²¨à³à²à²¦à³ ಮà³à²²à³à²¯à²µà²¨à³à²¨à³ ಮರಳಿಸಿದà³."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "à²à²¡"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "ಹೠಫಿಡಿಲಿà²à²¿ ಪà³à²²à³à²¬à³à²¯à²¾à²à³ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à²à³à²²à²¿à²«à³à²¨à²¿ ಡà³à²¯à³à²ªà³à²²à³à²à³à²¸à³â (HSP/HFP)"
@@ -2289,6 +2290,9 @@ msgstr "à²à³à²²à²¿à²«à³à²¨à²¿ ಡà³à²¯à³à²ªà³à²²à³à²à³à²¸à³â (HSP/HF
msgid "PulseAudio Sound Server"
msgstr "ಪಲà³à²¸à³âà²à²¡à²¿à²¯à³ ಧà³à²µà²¨à²¿ ಪರಿà²à²¾à²°à²"
+#~ msgid "select(): %s"
+#~ msgstr "à²à²¯à³à²à³à²®à²¾à²¡à³(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "ವà³à²¯à²µà²¸à³à²¥à³à²¯ ಬಸà³âà²à³ ಸà²à²ªà²°à³à²à²à³à²¡à²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²à²¿à²²à³à²²: %s"
diff --git a/po/ko.po b/po/ko.po
index 26f74e9..30f0341 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-13 08:37+0000\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2419
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -61,11 +61,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2403
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr ""
-#: ../src/pulsecore/sink.c:2408
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr ""
@@ -81,241 +81,241 @@ msgstr ""
msgid "Failed to add bind-now-loader."
msgstr ""
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr ""
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr ""
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr ""
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr ""
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr ""
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr ""
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr ""
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -325,41 +325,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr ""
@@ -605,24 +605,24 @@ msgstr ""
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
msgstr ""
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -633,7 +633,7 @@ msgstr ""
msgid "Start the PulseAudio Sound System"
msgstr ""
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr ""
@@ -837,33 +837,33 @@ msgstr ""
msgid "Top Rear Right"
msgstr ""
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr ""
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr ""
@@ -967,27 +967,27 @@ msgstr ""
msgid "Client forked"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr ""
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr ""
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr ""
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr ""
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr ""
@@ -1000,7 +1000,7 @@ msgstr ""
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr ""
@@ -1014,12 +1014,12 @@ msgstr ""
msgid "fork(): %s"
msgstr ""
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr ""
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
@@ -1882,39 +1882,39 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:146
+#: ../src/utils/pacmd.c:161
#, c-format
-msgid "select(): %s"
+msgid "poll(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr ""
@@ -1923,7 +1923,7 @@ msgstr ""
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -1934,7 +1934,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -1946,15 +1946,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
diff --git a/po/mr.po b/po/mr.po
index 56bc731..6980cce 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-06 13:43+0530\n"
"Last-Translator: Sandeep Shedmake <sandeep.shedmake at gmail.com>\n"
"Language-Team: marathi\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à¤à¤à¤¤à¤°à¥à¤ à¤à¤¡à¤¿à¤"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "मà¥à¤¡à¥à¤®"
@@ -91,242 +91,242 @@ msgstr "नवà¥à¤¨ dl दाà¤à¤²à¤à¤°à¥à¤¤à¤¾ वाà¤à¤ª à¤à¤°à¤£à¥à¤¯
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loader समावà¥à¤· à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "सà¤à¤à¥à¤¤ %s पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "बाहà¥à¤° पडत à¤à¤¹à¥."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' शà¥à¤§à¤£à¥ à¤
शà¤à¥à¤¯."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "à¤à¤ '%s' शà¥à¤§à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' (UID %lu) व à¤à¤ '%s' (GID %lu) à¤à¤¢à¤³à¤²à¥."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' व à¤à¤ '%s' à¤à¥ GID à¤à¥à¤³à¤¤ नाहà¥."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "वापरà¤à¤°à¥à¤¤à¤¾ '%s' à¤à¥ मà¥à¤à¥à¤¯ डिरà¥à¤à¥à¤à¥à¤°à¥ '%s' नाहà¥, दà¥à¤°à¥à¤²à¤à¥à¤· à¤à¤°à¤¤ à¤à¤¹à¥."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' बनवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "à¤à¤ यादॠबदलवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID बदलवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID बदलवणà¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "रà¥à¤ परवानà¤à¥ यशसà¥à¤µà¥à¤°à¤¿à¤¤à¥à¤¯à¤¾ वà¤à¤³à¤²à¥."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ à¤à¤° पदà¥à¤§à¤¤ या पà¥à¤²à¥
à¤à¤«à¥à¤°à¥à¤® à¤à¤°à¥à¤¤à¤¾ समरà¥à¤¥à¥à¤¤ नाहà¥."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à¤à¤¦à¥à¤¶ à¤à¤³ वाà¤à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "डिमन à¤à¤¾à¤°à¥à¤¯à¤°à¤¤ नाहà¥"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "डिमन PID %u नà¥à¤°à¥à¤ª à¤à¤¾à¤°à¥à¤¯à¤°à¤¤ à¤à¤¹à¥"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "डिमन नषà¥à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "हा à¤à¤¾à¤°à¥à¤¯à¤à¥à¤°à¤® रà¥à¤ नà¥à¤°à¥à¤ª à¤à¤¾à¤²à¤µà¤¿à¤£à¥à¤¯à¤¾à¤à¤°à¥à¤¤à¤¾ नाहॠ(à¤à¥à¤ªà¤°à¥à¤¯à¤à¤¤ --system निशà¥à¤à¤¿à¤¤ नाहà¥)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "रà¥à¤ परवानà¤à¥ à¤à¤µà¤¶à¥à¤¯à¤."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ à¤à¤à¤¨à¤¾à¤à¤à¤°à¥à¤¤à¤¾ --start समरà¥à¤¥à¥à¤¤ नाहà¥."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, परà¤à¤¤à¥ --disallow-exit निशà¥à¤à¤¿à¤¤ à¤à¥à¤²à¥ नाहà¥!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, परà¤à¤¤à¥ --disallow-module-loading निशà¥à¤à¤¿à¤¤ à¤à¥à¤²à¥ नाहà¥!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, SHM पदà¥à¤§à¤¤ à¤à¤¬à¤°à¤¨à¤°à¤¿à¤¤à¥à¤¯à¤¾ à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¤°à¤¤ à¤à¤¹à¥!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥ à¤
à¤à¤¤à¤°à¥à¤à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤, रिà¤à¤¾à¤®à¥ वà¥à¤³ à¤à¤¬à¤°à¤¨à¤°à¤¿à¤¤à¥à¤¯à¤¾ à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¤°à¤¤ à¤à¤¹à¥!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "पाà¤à¤ª à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() à¤
पयशà¥: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "डिमन सà¥à¤à¤¾à¤°à¥à¤à¤
प à¤
पयशà¥."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "डिमन सà¥à¤à¤¾à¤°à¥à¤à¤
प यशसà¥à¤µà¥."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "हॠPulseAudio %s à¤à¤¹à¥"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "à¤à¤à¤ªà¤¾à¤à¤²à¥à¤¶à¤¨ यà¤à¤®à¤¾à¤¨: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à¤à¤à¤ªà¤¾à¤à¤²à¥à¤¶à¤¨ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "यà¤à¤®à¤¾à¤¨ वर à¤à¤¾à¤°à¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs à¤à¤¢à¤³à¤²à¥."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "पान à¤à¤à¤¾à¤° %lu बाà¤à¤à¤¸à¥ à¤à¤¹à¥"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥ à¤à¤à¤ªà¤¾à¤à¤² à¤à¥à¤²à¥: हà¥à¤¯"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind समरà¥à¤¥à¤¨à¤¶à¥ à¤à¤à¤ªà¤¾à¤à¤² à¤à¥à¤²à¥: नाहà¥"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind पदà¥à¤§à¤¤à¥à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "à¤
नà¥à¤à¥à¤² बिलà¥à¤¡: हà¥à¤¯"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "à¤
नà¥à¤à¥à¤² बिलà¥à¤¡: नाहà¥"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG वरà¥à¤£à¥à¤à¥à¤¤, सरà¥à¤µ asserts à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH वरà¥à¤£à¥à¤à¥à¤¤, फà¤à¥à¤¤ à¤à¤²à¤¦ मारà¥à¤à¥à¤¯ asserts à¤
à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¥à¤²à¥."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "सरà¥à¤µ asserts à¤à¤¾à¤°à¥à¤¯à¤¾à¤¨à¥à¤µà¥à¤¤ à¤à¥à¤²à¥."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "मशà¥à¤¨ ID पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "मशà¥à¤¨ ID %s à¤à¤¹à¥."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "मशà¥à¤¨ ID %s à¤à¤¹à¥."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "रनà¤à¤¾à¤à¤® डिरà¥à¤à¥à¤à¥à¤°à¥ %s वापरत à¤à¤¹à¥."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "सà¥à¤¥à¤¿à¤¤à¥ डिरà¥à¤à¥à¤à¥à¤°à¥ %s वापरत à¤à¤¹à¥."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ पदà¥à¤§à¤¤à¥à¤¤ à¤à¤¾à¤°à¥à¤¯à¤°à¤¤: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -336,15 +336,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() à¤
पयशà¥."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "नवà¥à¤¨ à¤à¤à¥à¤-बिà¤à¤¦à¥à¤¤à¤¾ à¤à¤¾à¤à¤®à¤° à¤à¤ªà¤²à¤¬à¥à¤§! Bon appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -352,27 +352,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() à¤
पयशà¥."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "डिमन पà¥à¤°à¤¾à¤°à¤à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "विना विà¤à¤¾à¤ दाà¤à¤² à¤à¥à¤²à¥à¤¯à¤¾à¤¸ डिमन पà¥à¤°à¤¾à¤°à¤à¤ à¤à¤¾à¤²à¥, à¤à¤¾à¤°à¥à¤¯ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ नà¤à¤¾à¤°."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "डिमन सà¥à¤à¤¾à¤°à¥à¤à¤
प पà¥à¤°à¥à¤£ à¤à¤¾à¤²à¥."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "डिमन पà¥à¤°à¥à¤£à¤ªà¤£à¥ बà¤à¤¦ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¾à¤°à¤à¤ à¤à¥à¤²à¥."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "डिमन नषà¥à¤ à¤à¥à¤²à¥."
@@ -689,12 +689,12 @@ msgstr "[%s:%u] à¤
वà¥à¤§ तà¥à¤à¤¡à¥à¤¯à¤¾à¤à¥ à¤à¤à¤¾à¤° '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¤
वà¥à¤§ nice सà¥à¤¤à¤° '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "सà¤à¤¯à¥à¤à¤¨à¤¾ फाà¤à¤² à¤à¤à¤¡à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -702,13 +702,14 @@ msgstr ""
"निशà¥à¤à¤¿à¤¤ मà¥à¤²à¤à¥à¤¤ वाहिनॠमà¥
पà¤à¤¡à¥ निशà¥à¤à¤¿à¤¤ à¤à¤à¥à¤£ मà¥à¤²à¤à¥à¤¤ वाहिनॠपà¥à¤à¥à¤·à¤¾ वà¥à¤à¤³à¥ वाहिनॠसà¤à¤à¥à¤¯à¤¾ "
"समाविषà¥à¤à¥à¤¤ à¤à¤¹à¥."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### सà¤à¤¯à¥à¤à¤¨à¤¾ फाà¤à¤²: %s पासà¥à¤¨ वाà¤à¤¾ ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "रà¥à¤ परवानà¤à¥ वà¤à¤³à¤¤ à¤à¤¹à¥."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -719,7 +720,7 @@ msgstr "PulseAudio à¤à¤µà¤¾à¤ पà¥à¤°à¤£à¤¾à¤²à¥"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio à¤à¤µà¤¾à¤ पà¥à¤°à¤£à¤¾à¤²à¥ सà¥à¤°à¥ à¤à¤°à¤¾"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "मà¥à¤¨à¥"
@@ -923,33 +924,33 @@ msgstr "वरà¥à¤² पाठà¥à¤®à¤¾à¤à¤à¥ डावà¥"
msgid "Top Rear Right"
msgstr "वरà¥à¤² पाठà¥à¤®à¤¾à¤à¤à¥ à¤à¤à¤µà¥"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à¤
वà¥à¤§)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "सà¥à¤à¤¿à¤°à¥à¤"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "सराà¤à¤¨à¥à¤¡ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "सराà¤à¤¨à¥à¤¡ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "सराà¤à¤¨à¥à¤¡ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "सराà¤à¤¨à¥à¤¡ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "सराà¤à¤¨à¥à¤¡ 7.1"
@@ -1053,27 +1054,27 @@ msgstr "लाà¤à¥ à¤à¥à¤²à¥ à¤à¤¹à¥ à¤
सॠà¤à¤¢à¤³à¤²à¥ नाह
msgid "Client forked"
msgstr "à¤à¥à¤²à¤¾à¤à¤à¤ विà¤à¤¾à¤à¥à¤¤ à¤à¥à¤²à¥"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1086,7 +1087,7 @@ msgstr "XOpenDisplay() à¤
पयशà¥"
msgid "Failed to parse cookie data"
msgstr "à¤à¥à¤à¥ डà¥à¤à¤¾ वाà¤à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "सà¤à¤¯à¥à¤à¤¨à¤¾ फाà¤à¤² '%s' à¤à¤à¤¡à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥: %s"
@@ -1100,12 +1101,12 @@ msgstr "à¤à¥à¤à¥ दाà¤à¤² à¤à¥à¤²à¥ नाहà¥. à¤à¥à¤³à¤µà¤£à¥
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¤
परिà¤à¥à¤¤ वाढ '%s' à¤à¤°à¥à¤¤à¤¾ सà¤à¤¦à¥à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥"
@@ -2188,39 +2189,39 @@ msgstr "à¤à¥à¤à¥ डà¥à¤à¤¾ दाà¤à¤² à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पय
msgid "Not yet implemented.\n"
msgstr "à¤
à¤à¥à¤¨à¤¹à¥ लाà¤à¥ à¤à¥à¤²à¥ नाहà¥.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio डिमन पà¥à¤°à¥à¤£à¤ªà¤£à¥ नषà¥à¤ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
पयशà¥."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "डिमन पà¥à¤°à¤¤à¤¿à¤¸à¤¾à¤¦ दà¥à¤¤ नाहà¥."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2229,7 +2230,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn à¤à¥à¤²à¥à¤ª à¤à¤°à¥à¤¤à¤¾ पà¥à¤°à¤µà¥à¤¶ पà¥à¤°à¤¾à¤ªà¥à¤¯ à¤
शà¤à¥à¤¯."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2244,7 +2245,7 @@ msgstr ""
"POLLOUT दà¥à¤µà¤¾à¤°à¥ सà¤à¥à¤ हà¥à¤£à¥ शà¤à¥à¤¯ à¤à¤¹à¥ -- तरॠपरसà¥à¤ªà¤° snd_pcm_avail() नॠ0 पà¥à¤°à¤µà¤¿à¤²à¥ à¤à¤¿à¤à¤µà¤¾ à¤à¤¤à¤° "
"मà¥à¤²à¥à¤¯ < min_avail à¤
सावà¥."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2260,15 +2261,15 @@ msgstr ""
"मà¥à¤²à¥à¤¯ < min_avail à¤
सावà¥."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "बà¤à¤¦ à¤à¤°à¤¾"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "High Fidelity Playback (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telephony Duplex (HSP/HFP)"
@@ -2276,6 +2277,9 @@ msgstr "Telephony Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio à¤à¤µà¤¾à¤ सरà¥à¤µà¤°"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "पà¥à¤°à¤£à¤¾à¤²à¥ बसशॠà¤à¥à¤³à¤µà¤£à¥ à¤à¤°à¤£à¥à¤¯à¤¾à¤¸ à¤
शà¤à¥à¤¯: %s"
diff --git a/po/nl.po b/po/nl.po
index 452ff5b..92a9d98 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-15 21:04+0200\n"
"Last-Translator: Geert Warrink <geert.warrink at onsnet.nu>\n"
"Language-Team: Dutch <nl at li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Intern geluid"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -94,92 +94,92 @@ msgstr "Kon die nieuwe dl lader niet toekennen."
msgid "Failed to add bind-now-loader."
msgstr "Kon bind-now-loader niet toevoegen."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Ontving signaal %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Afsluiten."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Kon gebruiker '%s' niet vinden."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Kon groep '%s' niet vinden."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Gebruiker '%s' (UID %lu) en groep '%s' (GID %lu) gevonden."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID van gebruiker '%s' en van groep '%s' passen niet bij elkaar."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Persoonlijke map van gebruiker '%s' is niet '%s', negeer het."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Aanmaken van '%s': %s mislukte"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Veranderen van groeps lijst: '%s' mislukte"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Veranderen van GID: %s mislukte"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Veranderen van UID: %s mislukte"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Root rechten met succes laten vervallen."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Systeem brede mode wordt op dit platform niet ondersteund."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) mislukte: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Analyseren van de commandoregel mislukte."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Daemon draait niet"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon draait met PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Afschieten mislukt van daemon: '%s'"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -187,151 +187,151 @@ msgstr ""
"Dit programma is niet bedoeld om als root gedraaid te worden (behalve als --"
"system is opgegeven)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Root rechten vereisd"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start wordt niet ondersteund voor systeem instances"
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Draaiend in systeem mode, maar --disallow-exit is niet gezet!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Draaiend in systeem mode, maar --disallow-module-loading is niet gezet!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van SHM mode!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "Draaiend in systeem mode, geforceerd uitzetten van exit idle time!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Verkrijgen van stdio mislukte."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe mislukte: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() mislukte: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() mislukte: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Daemon opstarten mislukte."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Daemon met succes opgestart."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dit is PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Compilatie host: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilatie CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Draaiend op host: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPU's gevonden."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "Pagina grootte is %lu bytes"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Gecompileerd met Valgrind ondersteuning: ja"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Gecompileerd met Valgrind ondersteuning: nee"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Draaiend in valgrind mode: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimaal gebouwd: ja"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimaak gebouwd: nee"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG gedefinieerd, alle verklaringen uitgezet."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH gedefinieerd, alleen snel pad verklaringen uitgezet."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Alle verklaringen aangezet."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Machine ID verkrijgen mislukte"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "Machine ID is: %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Gebruik van runtime map %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Verbruik van state map %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Draaiend in systeem mode: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -341,15 +341,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() mislukte."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Verse high-resolution timers beschikbaar! Smakelijk eten!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -357,27 +357,27 @@ msgstr ""
"Kerel, je kernel stinkt! De aanbeveling van de chef is vandaag Linux met "
"aangezette high-resolution timers!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() mislukte."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Initialiseren van de daemon mislukte."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon opgestart zonder geladen modules, dat werkt niet."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Daemon opstarten is klaar."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Daemon afsluiten is begonnen."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Daemon is afgesloten."
@@ -704,24 +704,24 @@ msgstr ""
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+msgid "Cleaning up privileges."
msgstr ""
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -732,7 +732,7 @@ msgstr ""
msgid "Start the PulseAudio Sound System"
msgstr ""
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -936,33 +936,33 @@ msgstr "boven achter links"
msgid "Top Rear Right"
msgstr "boven achter rechts"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(ongeldig)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1066,27 +1066,27 @@ msgstr "Implementatie ontbreekt"
msgid "Client forked"
msgstr "Client afgesplitst"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1099,7 +1099,7 @@ msgstr ""
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr ""
@@ -1113,12 +1113,12 @@ msgstr ""
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
@@ -1989,39 +1989,39 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr ""
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr ""
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr ""
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr ""
@@ -2030,7 +2030,7 @@ msgstr ""
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2041,7 +2041,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2053,15 +2053,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
diff --git a/po/or.po b/po/or.po
index b6a2067..d487af1 100644
--- a/po/or.po
+++ b/po/or.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-09 13:16+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri at redhat.com>\n"
"Language-Team: Oriya <oriya-it at googlegroups.com>\n"
@@ -23,7 +23,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -80,11 +80,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à¬à¬ààନàତରàଣ ଧàà±à¬¨à¬¿"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "ମଡàମ"
@@ -100,92 +100,92 @@ msgstr "ନàତନ dl ଧାରà¬à¬à ବଣàà¬à¬¨ à¬à¬°à¬¿à¬¬à¬¾à¬°à
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loaderà¬à ଯàଠà¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "ସà¬à¬àତ %s ପାà¬à¬²à¬¾à¥¤"
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "à¬à¬¤àତàà¬à¬¿à¬¤ à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "à¬à¬¾à¬³à¬ '%s' à¬à à¬àà¬à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "ସମàହ '%s' à¬à à¬àà¬à¬¿ ପାà¬à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "à¬à¬¾à¬³à¬ '%s' (UID %lu) à¬à¬¬à¬ ସମàହ '%s' (GID %lu) ମିଳିଲା।"
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "à¬à¬¾à¬³à¬ '%s' à¬à¬¬à¬ ସମàହ '%s' ର GID ମàଳà¬à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "à¬à¬¾à¬³à¬ '%s' ର ମàà¬àà ଡିରàà¬àà¬àରàà¬à¬¿ '%s' ନàହà¬, à¬
à¬àରାହàà à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ନିରàମାଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "ସମàହ ତାଲିà¬à¬¾à¬à ପରିବରàତàତନ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID à¬à ପରିବରàତàତନ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID à¬à ପରିବରàତàତନ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "ମàà¬àà à¬à¬¾à¬³à¬ à¬
ଧିà¬à¬¾à¬°à¬à ସଫଳତାର ସହିତ ପà¬à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "ତନàତàରମà ଧାରା à¬à¬¹à¬¿ ପàଲାà¬à¬«à¬°àମରà à¬
ସମରàଥିତ।"
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "ପାଠàà ନିରàଦàଦàଶà¬à ବିଶàଳàଷଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "ଡàମନ à¬à¬¾à¬²àନାହିà¬"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "ଡàମନ PID %u ପରି à¬à¬¾à¬²àà¬
à¬à¬¿"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ଡàମନà¬à ବନàଦ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -193,150 +193,150 @@ msgstr ""
"à¬à¬¹à¬¿ ପàରà¬àରାମà¬à¬¿ ମàà¬àà à¬à¬¾à¬³à¬ à¬à¬¾à¬¬à¬°à à¬à¬²à¬¾à¬à¬¬à¬¾ ପାà¬à¬ ନିରàଦàଦିଷàଠହàà¬à¬¨à¬¾à¬¹à¬¿à¬ (unless --system is "
"specified)।"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "ମàà¬àà à¬à¬¾à¬³à¬ à¬
ଧିà¬à¬¾à¬° à¬à¬¬à¬¶ààà¬à¥¤"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start ତନàତàର ସàଥିତି ପାà¬à¬ ସମରàଥିତ ନàହà¬à¥¤"
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, à¬à¬¿à¬¨àତà --disallow-exit à¬à ସàଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, à¬à¬¿à¬¨àତà --disallow-module-loading à¬à ସàଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿à¬!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, SHM ଧାରାà¬à ବାଧàଯତାମàଳଠà¬à¬¾à¬¬à¬°à ନିଷàà¬àରିà à¬à¬°à¬¿à¬¥à¬¾à¬!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿, ପàରସàଥାନ ସàଥିର ସମàà¬à ବାଧàଯତାମàଳଠà¬à¬¾à¬¬à¬°à ନିଷàà¬àରିà à¬à¬°à¬¿à¬¥à¬¾à¬!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio à¬à à¬
ଧିà¬à¬¾à¬° à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "ପାà¬à¬ª ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() ବିଫଳ ହàà¬à¬à¬¿: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ଡàମନ à¬à¬°à¬®àଠବିଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "ଡàମନ à¬à¬°à¬®àଠସଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¬à¬¹à¬¾ ହàà¬à¬à¬¿ PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "ସà¬à¬à¬³à¬¨ à¬à¬§à¬¾à¬°: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ସà¬à¬à¬³à¬¨ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "à¬à¬§à¬¾à¬°à¬°à à¬à¬¾à¬²àà¬
à¬à¬¿: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ମିଳିà¬à¬¿à¥¤"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "ପàଷàଠା à¬à¬à¬¾à¬°à¬à¬¿ ହàà¬à¬à¬¿ %lu ବାà¬à¬"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ସମରàଥନ ସହିତ ସà¬à¬à¬³à¬¨ ହàà¬à¬à¬¿: yes"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ସମରàଥନ ସହିତ ସà¬à¬à¬³à¬¨ ହàà¬à¬à¬¿: no"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "à¬à¬ªà¬¯àà¬àତ ନିରàମାଣ: yes"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "à¬à¬ªà¬¯àà¬àତ ନିରàମାଣ: no"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG à¬à ବààାà¬ààା à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿, ସମସàତ ନିଶàà¬àà¬à ନିଷàà¬àରିà à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH à¬à ବààାà¬ààା à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿, à¬àବଳ ତàବàର ପଥ ନିଶàà¬àà¬à ନିଷàà¬àରିà à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "ସମସàତ ନିଶàà¬àà¬à ସà¬àରିà à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "ଯନàତàର ID ପାà¬à¬¬à¬¾à¬°à ବିଫଳ"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "ଯନàତàର ID à¬à¬¿ ହàà¬à¬à¬¿ %s।"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ଯନàତàର ID à¬à¬¿ ହàà¬à¬à¬¿ %s।"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "ପàରà¬à¬³à¬¿à¬¤ ଡିରàà¬àà¬àରà %s à¬à ବààବହାର à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "ସàଥିତି ଡିରàà¬àà¬àରà %s à¬à ବààବହାର à¬à¬°à¬¿à¥¤"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "ତନàତàର ଧାରାରà à¬à¬¾à¬²àà¬
à¬à¬¿: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -346,15 +346,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ବିଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ସତàଠà¬à¬àà¬-ବିà¬àଦନ ସମà ମାପଠà¬à¬ªà¬²à¬¬àଧ! Bon appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -362,27 +362,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() ବିଫଳ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ଡàମନà¬à à¬à¬°à¬®àଠà¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ଧାରଣ ହàà¬à¬¥à¬¿à¬¬à¬¾ à¬à¬à¬à¬¾à¬à¬¶à¬àଡ଼ିଠବିନା ଡàମନ à¬à¬°à¬®àଠହàà¬à¬à¬¿, à¬à¬¾à¬°àଯàà à¬à¬°à¬¿à¬¬à¬¾à¬à ବାରଣ à¬à¬°àà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ଡàମନ à¬à¬°à¬®àଠସମàପàରàଣàଣ ହàà¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ଡàମନ ବନàଦà¬à à¬à¬°à¬®àଠà¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ଡàମନà¬à ସମାପàତ à¬à¬°à¬¾à¬¯à¬¾à¬à¬à¬¿à¥¤"
@@ -698,12 +698,12 @@ msgstr "[%s:%u] à¬
ବàଧ à¬à¬£àଡ à¬à¬à¬¾à¬° '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¬
ବàଧ ସàନàଦର ସàତର '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ବିନààାସ ଫାà¬à¬² à¬àଲିବାରà ବିଫଳ: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -711,13 +711,14 @@ msgstr ""
"ନିରàଦàଦିଷàà¬à¬¿à¬¤ ପàରàବନିରàଦàଧାରିତ à¬ààାନàଲ ମààାପରà ପàରàବନିରàଦàଧାରିତ ସà¬à¬ààଠà¬ààାନàଲ ବààତିତ à¬à¬¿à¬¨àନ ସà¬à¬ààଠ"
"à¬ààାନàଲ à¬à¬²àଲàଠà¬
à¬à¬¿à¥¤"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ବିନààାସ ଫାà¬à¬²à¬°à ପଢ଼ନàତà: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "ମàà¬àà à¬à¬¾à¬³à¬ à¬
ଧିà¬à¬¾à¬°à¬àଡ଼ିà¬à ବାତିଲ à¬à¬°àà¬
à¬à¬¿à¥¤"
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -728,7 +729,7 @@ msgstr "PulseAudio ଧàà±à¬¨à¬¿ ତନàତàର"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio ଧàà±à¬¨à¬¿ ତନàତàରà¬à à¬à¬°à¬®àଠà¬à¬°à¬¨àତà"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "ମàନà"
@@ -932,33 +933,33 @@ msgstr "à¬à¬ªà¬° ପଠବାମ ପାà¬"
msgid "Top Rear Right"
msgstr "à¬à¬ªà¬° ପଠଡ଼ାହାଣ ପାà¬"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à¬
ବàଧ)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ଷàà¬àରିà¬"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "à¬à¬¤àଠପାରàଶàà± 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "à¬à¬¤àଠପାରàଶàà± 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "à¬à¬¤àଠପାରàଶàà± 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "à¬à¬¤àଠପାରàଶàà± 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "à¬à¬¤àଠପାରàଶàà± 7.1"
@@ -1062,27 +1063,27 @@ msgstr "à¬
ନàପସàଥିତ ପàରààà¬"
msgid "Client forked"
msgstr "à¬àରାହଠଶାà¬à¬¾à¬¯àà¬àତ ହàà¬à¬à¬¿"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1095,7 +1096,7 @@ msgstr "XOpenDisplay() ବିଫଳ ହàà¬à¬à¬¿"
msgid "Failed to parse cookie data"
msgstr "à¬àà¬à¬¿ ତଥààà¬à ବିଶàଳàଷଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ବିନààାସ ଫାà¬à¬² '%s' à¬à à¬àଲିବାରà ବିଫଳ: %s"
@@ -1109,12 +1110,12 @@ msgstr "à¬àଣସି à¬àà¬à¬¿ ଧାରଣ à¬à¬°à¬¾à¬¯à¬¾à¬à¬¨à¬¾à¬¹à¬¿
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¬
à¬à¬£à¬¾ à¬
ନàଲà¬àନ '%s' ପାà¬à¬ ସନàଦàଶ à¬àରହଣ à¬à¬°à¬¿à¬
à¬à¬¿"
@@ -2192,39 +2193,39 @@ msgstr "à¬àà¬à¬¿ ତଥàà ଧାରଣ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫ
msgid "Not yet implemented.\n"
msgstr "à¬
ପରàଯààନàତ à¬à¬¾à¬°àଯààà¬à¬¾à¬°à ହàà¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "ସà¬àà¬(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "ସà¬à¬¯àଠà¬à¬°à¬¨àତà(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio ଡàମନà¬à ବନàଦ à¬à¬°à¬¿à¬¬à¬¾à¬°à ବିଫଳ।"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ଡàମନ à¬à¬¤àତର ଦàà¬à¬¨à¬¾à¬¹à¬¿à¬à¥¤"
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "ବାà¬à¬¨àତà(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "ପଢ଼ନàତà(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "ଲàà¬à¬¨àତà(): %s"
@@ -2233,7 +2234,7 @@ msgstr "ଲàà¬à¬¨àତà(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn à¬
ପରିବରàତàତନààତାà¬à à¬
à¬à¬¿à¬à¬®àà à¬à¬°à¬¿à¬¹àଠନାହିà¬"
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2250,7 +2251,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2268,15 +2269,15 @@ msgstr ""
"returned 0 or another value < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "à¬
ଫ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "à¬à¬àଠଫିଡିଲିà¬à¬¿ ପà¬à¬à¬²à¬¾ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¬àଲିଫàନି ଡàààପàଲàà¬àସ (HSP/HFP)"
@@ -2284,6 +2285,9 @@ msgstr "à¬àଲିଫàନି ଡàààପàଲàà¬àସ (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio ଧàà±à¬¨à¬¿ ସରàà¬à¬°"
+#~ msgid "select(): %s"
+#~ msgstr "ବାà¬à¬¨àତà(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "ତନàତàର ପରିପଥ ସହିତ ସà¬à¬¯àଠà¬à¬°à¬¿à¬ªà¬¾à¬°à¬¿à¬¬à ନାହିà¬: %s"
diff --git a/po/pa.po b/po/pa.po
index fe5a31f..cad0000 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-06-06 07:38+0530\n"
"Last-Translator: A S Alam <aalam at users.sf.net>\n"
"Language-Team: American English <punjabi-users at lists.sf.net>\n"
@@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -70,11 +70,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à¨
ੰਦਰà©à¨¨à© à¨à¨¡à©à¨"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "ਮਾਡਮ"
@@ -90,241 +90,241 @@ msgstr "ਨਵਾਠdl ਲà©à¨¡à¨° ਦà©à¨£ ਲਠਫà©à¨²à©à¨¹à¥¤"
msgid "Failed to add bind-now-loader."
msgstr "ਬਾà¨à¨à¨¡-ਨਾà¨-ਲà©à¨¡à¨° à¨à©à©à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹ ਹà©à¨à¨à¥¤"
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%s ਸਿà¨à¨¨à¨² ਮਿਲਿਠਹà©à¥¤"
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ਬੰਦ à¨à©à¨¤à¨¾ à¨à¨¾ ਰਿਹਾ ਹà©à¥¤"
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' ਯà©à¨à¨¼à¨° ਲੱà¨à¨£ ਵਿੱਠਫà©à¨²à©à¨¹ ਹà©à¨à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' à¨à¨°à©à©±à¨ª ਲੱà¨à¨£ ਵਿੱਠਫà©à¨² ਹà©à¨à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ਯà©à¨à¨¼à¨° '%s' (UID %lu) à¨
ਤ੠à¨à¨°à©à©±à¨ª '%s' (GID %lu) ਲੱà¨à© ਹਨ।"
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ਯà©à¨à¨¼à© '%s' à¨
ਤ੠à¨à¨°à©à©±à¨ª '%s' ਦਾ GID ਮà©à¨² ਨਹà©à¨ à¨à¨¾à¨à¨¦à©à¥¤"
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ਯà©à¨à¨¼à© '%s' ਦ੠à¨à¨° ਡਾà¨à¨°à©à¨à¨à¨°à© '%s' ਨਹà©à¨, à¨
ਣਡਿੱਠਾ à¨à¨° ਰਿਹਾ।"
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' ਬਣਾà¨à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "à¨à¨°à©à©±à¨ª ਲਿਸਠਬਦਲਣ ਲਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID ਬਦਲਣ ਲਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID ਬਦਲਣ ਲਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "ਰà©à¨ à¨
ਧਿà¨à¨¾à¨° ਸਫਲਤਾਪà©à¨°à¨ ਹà¨à¨¾à¨ à¨à¨à¥¤"
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "à¨à¨¸ ਪਲà©à¨à¨«à¨¾à¨°à¨® ਤ੠ਸਿਸà¨à¨® ਸੰਬੰਧ੠ਮà©à¨¡ ਨà©à©° ਸਹਿਯà©à¨ ਨਹà©à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ਫà©à¨²à©à¨¹ ਹà©à¨à¨: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à¨à¨®à¨¾à¨à¨¡ ਲਾà¨à¨¨ ਪਾਰਸ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹à¥¤"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "ਡà©à¨®à¨¨ à¨à©±à¨² ਨਹà©à¨ ਰਿਹਾ"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "ਡà©à¨®à¨¨ PID %u ਤà©à¨° ਤ੠à¨à©±à¨² ਰਿਹਾ ਹà©"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ਡà©à¨®à¨¨ à¨à¨¤à¨® à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à¨à¨¹ ਪਰà©à¨à¨°à¨¾à¨® ਰà©à¨ ਦ੠ਤà©à¨° ਤ੠à¨à¨²à¨¾à¨à¨£ ਲਠਨਹà©à¨ ਹ੠(à¨à¨¦à©à¨ ਤੱਠ--system ਦਿੱਤਾ ਨਹà©à¨ à¨à¨¾à¨à¨¦à¨¾)।"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "ਰà©à¨ à¨
ਧਿà¨à¨¾à¨°à¨¾à¨ ਦ੠ਲà©à© ਹà©à¥¤"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start ਨà©à©° ਸਿਸà¨à¨® ਮà©à¨à¨¿à¨à¨ ਲਠਸਹਿਯà©à¨ ਨਹà©à¨ ਹà©à¥¤"
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, ਪਰ --disallow-exit ਸà©à©±à¨ ਨਹà©à¨ à¨à©à¨¤à¨¾!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, ਪਰ --disallow-module-loading ਸà©à©±à¨ ਨਹà©à¨ à¨à©à¨¤à¨¾!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, à¨à¨¼à¨¬à¨°à¨¦à¨¸à¨¤à© SHM ਮà©à¨¡ ਨà©à©° à¨
ਯà©à¨ à¨à¨° ਰਿਹਾ ਹà©!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©, à¨à¨¼à¨¬à¨°à¨¦à¨¸à¨¤à© idle à¨à¨¾à¨à¨² ਬੰਦ ਨà©à©° à¨
ਯà©à¨ à¨à¨° ਰਿਹਾ ਹà©!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "ਸà¨à©à¨¡à©à¨ ਪà©à¨°à¨¾à¨ªà¨¤ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹à¥¤"
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe ਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() ਫà©à¨²à©à¨¹ ਹà©: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() ਫà©à¨²à©à¨¹ ਹà©: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਫà©à¨²à©à¨¹ ਹà©à¨à¥¤"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਸਫ਼ਲ ਹà©à¨à¥¤"
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à¨à¨¹ ਪਲਸà¨à¨¡à©à¨ %s ਹà©"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "à¨à©°à¨ªà¨¾à¨à¨²à©à¨¶à¨¨ ਹà©à¨¸à¨: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "à¨à©°à¨ªà¨¾à¨à¨²à©à¨¶à¨¨ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "ਹà©à¨¸à¨ ਤ੠à¨à©±à¨² ਰਿਹਾ ਹà©: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs ਲੱà¨à©à¥¤"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "ਪà©à¨à¨¼ ਸਾà¨à¨à¨¼ %lu ਬਾà¨à¨ ਹà©"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind ਸਹਿਯà©à¨ ਨਾਲ à¨à©°à¨ªà¨¾à¨à¨²: ਹਾà¨"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind ਸਹਿਯà©à¨ ਨਾਲ à¨à©°à¨ªà¨¾à¨à¨²: ਨਹà©à¨"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Valgrind ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "à¨à¨ªà¨à©à¨®à¨¾à¨à©à¨¡ ਬਿਲਡ: ਹਾà¨"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "à¨à¨ªà¨à©à¨®à¨¾à¨à©à¨¡ ਬਿਲਡ: ਨਹà©à¨"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG ਪਰਿà¨à¨¾à¨¶à¨¤, ਸਠasserts à¨
ਯà©à¨ ਹਨ।"
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH ਪਰਿà¨à¨¾à¨¶à¨¤, ਸਿਰਫ ਫਾਸਠਪਾਥ asserts à¨
ਯà©à¨ ਹਨ।"
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "ਸਠasserts ਯà©à¨ à¨à©à¨¤à© ਹਨ।"
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "ਮਸ਼à©à¨¨ ID ਪà©à¨°à¨¾à¨ªà¨¤ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "ਮਸ਼à©à¨¨ ID %s ਹà©à¥¤"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ਮਸ਼à©à¨¨ ID %s ਹà©à¥¤"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "ਰਨà¨à¨¾à¨à¨® ਡਾà¨à¨°à©à¨à¨à¨°à© %s ਦ੠ਵਰਤà©à¨à¥¤"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "ਸà¨à©à¨ ਡਾà¨à¨°à©à¨à¨à¨°à© %s ਦ੠ਵਰਤà©à¨à¥¤"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "ਸਿਸà¨à¨® ਮà©à¨¡ ਵਿੱਠà¨à©±à¨² ਰਿਹਾ ਹà©: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -334,42 +334,42 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() ਫà©à¨²à©à¨¹ ਹà©à¥¤"
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ਤਾà©à© ਹਾà¨-ਰà©à©à©à¨²à©à¨¶à¨¨ à¨à¨¾à¨à¨®à¨° à¨à¨ªà¨²à©±à¨¬à¨§ ਹà©! Bon appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
"ਮਿੱਤਰਾ, ਤà©à¨°à¨¾ à¨à¨°à¨¨à¨² ਪà©à¨°à¨¾à¨£à¨¾ ਹà©! à¨à©à¨« ਦ੠à¨
ੱਠਦ੠ਸਿਫਾਰਸ਼ ਹਾà¨-ਰà©à©à©à¨²à©à¨¶à¨¨ à¨à¨¾à¨à¨®à¨° ਯà©à¨ ਨਾਲ ਲà©à¨¨à¨à¨¸ ਹà©!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() ਫà©à¨²à©à¨¹ ਹà©à¥¤"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à© à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹à¥¤"
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਬਿਨਾਠà¨à¨¿à¨¸à© ਲà©à¨¡ à¨à©à¨¤à© ਮà©à¨¡à¨¿à¨à¨², à¨à©°à¨® à¨à¨°à¨¨ ਤà©à¨ ਰà©à¨ ਰਿਹਾ ਹà©à¥¤"
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ਡà©à¨®à¨¨ ਸ਼à©à¨°à©à¨à¨¤à© ਮà©à¨à©°à¨®à¨²à¥¤"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ਡà©à¨®à¨¨ ਬੰਦ à¨à¨°à¨¨à¨¾ ਸ਼à©à¨°à© ਹ੠à¨à¨¿à¨à¥¤"
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ਡà©à¨®à¨¨ ਬੰਦ ਹ੠à¨à¨¿à¨à¥¤"
@@ -686,24 +686,25 @@ msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ ਫਰà©à¨à¨®à©à¨à¨ à¨
à¨à¨¾à¨° '
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à¨
ਢà©à©±à¨à¨µà¨¾à¨ nice ਲà©à¨µà¨² '%s'।"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ਸੰਰà¨à¨¨à¨¾ ਫਾà¨à¨² à¨à©à¨²à©à¨¹à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ਸੰਰà¨à¨¨à¨¾ ਫਾà¨à¨² ਵਿੱà¨à©à¨ ਪà©à¨¿à¨: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "ਰà©à¨ à¨
ਧਿà¨à¨¾à¨° ਹà¨à¨¾ ਰਿਹਾ ਹà©à¥¤"
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -714,7 +715,7 @@ msgstr "ਪਲਸà¨à¨¡à©à¨ ਸਾà¨à¨à¨¡ ਸਿਸà¨à¨®"
msgid "Start the PulseAudio Sound System"
msgstr "ਪਲਸà¨à¨¡à©à¨ ਸਾà¨à¨à¨¡ ਸਿਸà¨à¨® à¨à¨²à¨¾à¨"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "ਮà©à¨¨à©"
@@ -918,33 +919,33 @@ msgstr "à¨à©±à¨¤à© ਪਿੱà¨à© à¨à©±à¨¬à©"
msgid "Top Rear Right"
msgstr "à¨à©±à¨¤à© ਪਿੱà¨à© ਸੱà¨à©"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à¨
ਢà©à©±à¨à¨µà¨¾à¨)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ਸà¨à©à¨°à©à¨"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ਸਰਾà¨à¨à¨¡à¨¿à©°à¨ 7.1"
@@ -1048,27 +1049,27 @@ msgstr "à¨à©à¨°-ਮà©à¨à©à¨¦ ਨਿਰਧਾਰਨ"
msgid "Client forked"
msgstr "à¨à¨²à¨¾à¨à¨ à¨
ੱਡ à¨à©à¨¤à¨¾"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1081,7 +1082,7 @@ msgstr "XOpenDisplay() ਫà©à¨²à©à¨¹ ਹà©"
msgid "Failed to parse cookie data"
msgstr "à¨à©à¨à© ਡਾà¨à¨¾ ਪਾਰਸ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à©à¨¹"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ਸੰਰà¨à¨¨à¨¾ ਫਾà¨à¨² '%s' ਨà©à©° à¨à©à¨²à©à¨¹à¨£ ਵਿੱਠਫà©à¨²à©à¨¹: %s"
@@ -1095,12 +1096,12 @@ msgstr "à¨à©à¨ à¨à©à¨à© ਲà©à¨¡ ਨਹà©à¨ à¨à©à¨¤à©à¥¤ à¨à¨¸ ਤ
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à¨
ਣà¨à¨¾à¨£à© à¨à¨à¨¸à¨à©à¨à¨¶à¨¨ '%s' ਲਠਸà©à¨¨à©à¨¹à¨¾ ਮਿਲਿਠਹà©"
@@ -2179,39 +2180,39 @@ msgstr "à¨à©à¨à© ਡਾà¨à¨¾ ਲà©à¨¡ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²\n"
msgid "Not yet implemented.\n"
msgstr "ਹਾਲ੠ਬਣਾà¨à¨ ਨਹà©à¨à¥¤\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "ਪਲਸà¨à¨¡à©à¨ ਡà©à¨®à¨¨ ਬੰਦ à¨à¨°à¨¨ ਵਿੱਠਫà©à¨²à¥¤"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "ਡà©à¨®à¨¨ à¨à¨µà¨¾à¨¬ ਨਹà©à¨ ਦ੠ਰਹà©à¥¤"
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2220,7 +2221,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn ਲਾਠਵਰਤ ਨਹà©à¨ ਸà¨à¨¦à¨¾à¥¤"
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2237,7 +2238,7 @@ msgstr ""
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
"returned 0 or another value < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2255,15 +2256,15 @@ msgstr ""
"returned 0 or another value < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "ਬੰਦ"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "ਹਾਠਫਡà©à¨²à¨¿à¨à© ਪਲà©à¨
ਬà©à¨ (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à¨à©à¨²à©à¨«à©à¨¨à© ਡà©à¨ªà¨²à©à¨à¨¸ (HSP/HFP)"
@@ -2271,6 +2272,9 @@ msgstr "à¨à©à¨²à©à¨«à©à¨¨à© ਡà©à¨ªà¨²à©à¨à¨¸ (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "ਪਲਸà¨à¨¡à©à¨ ਸਾà¨à¨à¨¡ ਡਰਾà¨à¨µà¨°"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "ਸਿਸà¨à¨® ਬੱਸ ਨਾਲ à¨à©à©à¨¨ ਨਹà©à¨ ਸà¨à¨¿à¨: %s"
diff --git a/po/pl.po b/po/pl.po
index 371de41..a24543c 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-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-07-28 21:54+0200\n"
"Last-Translator: Piotr DrÄ
g <piotrdrag at gmail.com>\n"
"Language-Team: Polish <pl at li.org>\n"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -72,11 +72,11 @@ msgstr ""
"kanaÅów> plugin=<nazwa wtyczki ladspa> label=<etykieta wtyczki ladspa> "
"control=<lista wartoÅci kontroli wejÅcia oddzielona przecinkami>"
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "WewnÄtrzny dźwiÄk"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -93,92 +93,92 @@ msgstr "Przydzielenie nowego programu wczytujÄ
cego dl nie powiodÅo siÄ."
msgid "Failed to add bind-now-loader."
msgstr "Dodanie bind-now-loader nie powiodÅo siÄ."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Otrzymano sygnaÅ %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "WyÅÄ
czanie."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Znalezienie użytkownika \"%s\" nie powiodÅo siÄ."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Znalezienie grupy \"%s\" nie powiodÅo siÄ."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Znaleziono użytkownika \"%s\" (UID %lu) i grupÄ \"%s\" (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID użytkownika \"%s\" i grupy \"%s\" nie zgadzajÄ
siÄ."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Folder domowy użytkownika \"%s\" nie jest \"%s\", ignorowanie."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Utworzenie \"%s\" nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Zmiana listy grup nie powiodÅa siÄ: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Zmiana GID nie powiodÅa siÄ: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Zmiana UID nie powiodÅa siÄ: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "PomyÅlnie porzucono uprawnienia roota."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Tryb systemowy nie jest obsÅugiwany na tej platformie."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceÅ nie powiodÅa siÄ."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -186,155 +186,155 @@ msgstr ""
"Ten program nie powinien byÄ uruchomiany jako root (chyba, że podano --"
"system)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Wymagane sÄ
uprawnienia roota."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start nie jest obsÅugiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
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:583
+#: ../src/daemon/main.c:576
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:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyÅÄ
czenia trybu SHM!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
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:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejÅcia/wyjÅcia nie powiodÅo siÄ."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódÅ siÄ: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "PomyÅlnie uruchomiono demona."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsÅugÄ
Valgrind: tak"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsÅugÄ
Valgrind: nie"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "Podano NDEBUG, wszystkie asercje zostaÅy wyÅÄ
czone."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "Podano FASTPATH, tylko szybkie asercje Åcieżek zostaÅy wyÅÄ
czone."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Wszystkie asercje sÄ
wÅÄ
czone."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodÅo siÄ"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr "Identyfikator sesji to %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -350,15 +350,15 @@ msgstr ""
"ProszÄ przeczytaÄ http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode, "
"gdzie wyjaÅniono, dlaczego tryb systemowy jest zwykle zÅym pomysÅem."
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Åwieże zegary o wysokiej rozdzielczoÅci! Smacznego!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -366,27 +366,27 @@ msgstr ""
"KoleÅ, twoje jÄ
dro Åmierdzi! Szef kuchni poleca dzisiaj Linuksa w wÅÄ
czonymi "
"zegarami o wysokiej rozdzielczoÅci!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych moduÅów, odmawianie pracy."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ZakoÅczono uruchamianie demona."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyÅÄ
czenie demona."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Demon zostaÅ zniszczony."
@@ -712,12 +712,12 @@ msgstr "[%s:%u] NieprawidÅowy rozmiar fragmentu \"%s\"."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodÅo siÄ: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -725,13 +725,14 @@ msgstr ""
"Podana domyÅlna mapa kanaÅów ma innÄ
liczbÄ kanaÅów niż podana domyÅlna "
"liczba kanaÅów."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Odczytano z pliku konfiguracji: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Porzucanie uprawnieÅ roota."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -742,7 +743,7 @@ msgstr "System dźwiÄku PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Uruchomienie systemu dźwiÄku PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -946,33 +947,33 @@ msgstr "Górny tylny lewy"
msgid "Top Rear Right"
msgstr "Górny tylny prawy"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(nieprawidÅowe)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1076,27 +1077,27 @@ msgstr "Brak implementacji"
msgid "Client forked"
msgstr "Rozdzielono klienta"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1109,7 +1110,7 @@ msgstr "XOpenDisplay() nie powiodÅo siÄ"
msgid "Failed to parse cookie data"
msgstr "Analiza danych ciasteczka nie powiodÅo siÄ"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Otwarcie pliku konfiguracji \"%s\" nie powiodÅo siÄ: %s"
@@ -1123,12 +1124,12 @@ msgstr "Nie wczytano ciasteczka. Próbowanie poÅÄ
czenia siÄ bez niego."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Otrzymano komunikat z nieznanego powodu \"%s\""
@@ -2199,41 +2200,41 @@ msgstr "Wczytanie danych ciasteczka nie powiodÅo siÄ\n"
msgid "Not yet implemented.\n"
msgstr "Niezaimplementowane.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
"Demon PulseAudio nie jest uruchomiony, lub nie jest uruchomiony jako demon "
"sesji."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "gniazdo(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Zniszczenie demona PulseAudio nie powiodÅo siÄ."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Demon nie odpowiada."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2242,7 +2243,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Nie można uzyskaÄ dostÄpu do blokady automatycznego wznawiania."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2259,7 +2260,7 @@ msgstr ""
"Wybudzono za pomocÄ
ustawienia POLLOUT - ale jednoczesne wywoÅanie "
"snd_pcm_avail() zwróciÅo zero lub innÄ
wartoÅÄ < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2277,15 +2278,15 @@ msgstr ""
"snd_pcm_avail() zwróciÅo zero lub innÄ
wartoÅÄ < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "WyÅÄ
cz"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Odtwarzanie o wysokiej dokÅadnoÅci (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplex telefoniczny (HSP/HFP)"
@@ -2293,6 +2294,9 @@ msgstr "Duplex telefoniczny (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Serwer dźwiÄku PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Nie można poÅÄ
czyÄ siÄ z magistralÄ
systemowÄ
: %s"
diff --git a/po/pt.po b/po/pt.po
index e077d09..0119905 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Rui Gouveia <rui.gouveia at globaltek.pt>\n"
"Language-Team: pt <fedora-trans-pt at redhat.com>\n"
@@ -12,7 +12,7 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: PORTUGAL\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, fuzzy, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -70,11 +70,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Ãudio Interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -90,92 +90,92 @@ msgstr "Não foi possÃvel alocar o novo carregador \"dl\"."
msgid "Failed to add bind-now-loader."
msgstr "Não foi possÃvel adicionar \"bind-now-loader\"."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Foi obtido o sinal %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "A sair."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha ao procurar o utilizador '%s'."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha ao procurar o grupo '%s'."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Foi encontrado utilizador '%s' (UID %lu) e grupo '%s' (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID do utilizador '%s' e do grupo '%s' não coincidem."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Directório pessoal do utilizador '%s' não é '%s'. A ignorar."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha ao criar o '%s': %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falhou a alteração da lista de grupos: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Não foi possÃvel mudar o GID: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Não foi possÃvel mudar o UID: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Privilégios de root cedidos com sucesso."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Modo de sistema não suportado nesta plataforma."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Não foi possÃvel processar linha de comando."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Serviço não está a executar"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Serviço a executar como PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Tentativa de matar serviço falhou: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -183,154 +183,154 @@ msgstr ""
"Este programa não pretende ser executado como root (a não ser que a opção --"
"system seja especificada)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "São necessários privilégios de root."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start não é suportado para instâncias do sistema."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "A executar em modo de sistema, mas --disallow-exit não está definido!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"A executar em modo de sistema, mas --disallow-module-loading não está "
"definido!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "A executar em modo de sistema, a forçar a desactivação do modo SHM!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"A executar em modo de sistema, a forçar a desactivação da saÃda por "
"inactividade!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Não foi possÃvel adquirir o stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe falhou: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() falhou: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() falhou: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Arranque do serviço falhou."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Arranque do serviço sucedeu."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Isto é PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Máquina de compilação: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS utilizadas na compilação: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "A executar na máquina: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Foram encontrados %u CPUs."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "Tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte para Valgrind: sim"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte para Valgrind: não"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "A executar em modo \"valgrind\": %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimizado: sim"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Compilação optimizada: não"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todas as declarações desactivadas."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definido, apenas as declarações \"fast path\" desactivadas."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Todas as declarações desactivadas."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "A tentativa de ler o ID da máquina falhou"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "O ID da máquina é %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "A sessão está fechada"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Execução a utilizar o directório %s"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "A manter o estado no directório %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Execução em modo de sistema: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -340,15 +340,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timer \"frescos\" de alta resolução disponÃveis. Bom apetite!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -356,27 +356,27 @@ msgstr ""
"Oh pá, o teu kernel não presta! O prato do dia recomendado é Linux com "
"timers de alta resolução activos!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Falha ao inicializar serviço."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Serviço arrancou sem módulos carregados. A recusar trabalhar."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Arranque do serviço completo."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Encerramento do serviço iniciado."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Serviço terminado."
@@ -706,12 +706,12 @@ msgstr "[%s:%u] Tamanho do fragmento inválido '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] nÃvel nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha ao abrir ficheiro de configuração: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -719,13 +719,14 @@ msgstr ""
"O mapa de canais especificado tem um número de canais diferente do número de "
"canais definido por omissão."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Ler configuração a partir do ficheiro: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "A largar privilégios de root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -736,7 +737,7 @@ msgstr "Sistema de Som PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Inciar o Sistema de Som PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -940,33 +941,33 @@ msgstr "Topo Traseira Esquerda"
msgid "Top Rear Right"
msgstr "Topo Traseira Direita"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(inválido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Estéreo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1070,27 +1071,27 @@ msgstr "Implementação em falta"
msgid "Client forked"
msgstr "Cliente efectuou um fork"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1103,7 +1104,7 @@ msgstr "XOpenDisplay() falhou"
msgid "Failed to parse cookie data"
msgstr "Não foi possÃvel processar dados da cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Falha ao abrir ficheiro de configuração '%s': %s"
@@ -1117,12 +1118,12 @@ msgstr "Nenhuma cookie carregada. A tentar ligar sem cookie."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Recebida mensagem para extensão desconhecida '%s'"
@@ -2016,39 +2017,39 @@ msgstr "Não foi possÃvel carregar os dados da cookie\n"
msgid "Not yet implemented.\n"
msgstr "Ainda não implementado.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Não foi possÃvel terminar o serviço PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Serviço não responde."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2057,7 +2058,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "ImpossÃvel aceder ao lock \"autospawn\"."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2074,7 +2075,7 @@ msgstr ""
"Fomos acordados pelo conjunto POLLOUT -- contudo uma chamada a seguir de "
"snd_pcm_avail() retornou 0 ou outro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2092,15 +2093,15 @@ msgstr ""
"snd_pcm_avail() retornou 0 ou outro valor < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Desligado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodução Alta Fidelidade (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Telefonia Duplex (HSP/HFP)"
@@ -2108,6 +2109,9 @@ msgstr "Telefonia Duplex (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de Som PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Incapaz de se ligar ao bus de sistema: %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 20365ee..e48cc04 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-08 14:46+0000\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-08-08 19:02-0300\n"
"Last-Translator: Igor Pires Soares <igor at projetofedora.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br at redhat.com>\n"
@@ -19,8 +19,7 @@ msgstr ""
"X-Poedit-Language: Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:775
-#: ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr "%s %s"
@@ -28,43 +27,65 @@ msgstr "%s %s"
#: ../src/modules/alsa/alsa-util.c:1023
#, 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."
+"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 ""
-"O snd_pcm_avail() retornou um valor que é excepcionalmente grande: %lu bytes (%lu ms).\n"
-"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, relate esse problema aos desenvolvedores do ALSA."
+"O snd_pcm_avail() retornou um valor que é excepcionalmente grande: %lu bytes "
+"(%lu ms).\n"
+"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema aos desenvolvedores do ALSA."
#: ../src/modules/alsa/alsa-util.c:1064
#, 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."
+"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 ""
-"O snd_pcm_delay() retornou um valor que é excepcionalmente grande: %li bytes (%s%lu ms).\n"
-"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, relate esse problema aos desenvolvedores do ALSA."
+"O snd_pcm_delay() retornou um valor que é excepcionalmente grande: %li bytes "
+"(%s%lu ms).\n"
+"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema aos desenvolvedores do ALSA."
#: ../src/modules/alsa/alsa-util.c:1111
#, 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."
+"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 ""
-"O snd_pcm_mmap_begin() retornou um valor que é excepcionalmente grande: %lu bytes (%lu ms).\n"
-"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, relate esse problema aos desenvolvedores do ALSA."
+"O snd_pcm_mmap_begin() retornou um valor que é excepcionalmente grande: %lu "
+"bytes (%lu ms).\n"
+"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema aos desenvolvedores do ALSA."
#: ../src/modules/module-ladspa-sink.c:49
msgid "Virtual LADSPA sink"
msgstr "Destino Virtual LADSPA"
#: ../src/modules/module-ladspa-sink.c:53
-msgid "sink_name=<name for the sink> sink_properties=<properties for the sink> master=<name of sink to filter> format=<sample format> rate=<sample rate> channels=<number of channels> channel_map=<channel map> plugin=<ladspa plugin name> label=<ladspa plugin label> control=<comma seperated list of input control values>"
-msgstr "sink_name=<nome do destino> sink_properties=<propriedades do destino> master=<nome do destino a ser filtrado> format=<formato de amostragem> rate=<taxa da amostragem> channels=<número de canais> channel_map=<mapa dos canais> plugin=<nome do plugin ladspa> label=<rótulo do plugin ladspa> control=<lista separada por vÃrgulas dos valores de controle da entrada>"
+msgid ""
+"sink_name=<name for the sink> sink_properties=<properties for the sink> "
+"master=<name of sink to filter> format=<sample format> rate=<sample rate> "
+"channels=<number of channels> channel_map=<channel map> plugin=<ladspa "
+"plugin name> label=<ladspa plugin label> control=<comma seperated list of "
+"input control values>"
+msgstr ""
+"sink_name=<nome do destino> sink_properties=<propriedades do destino> "
+"master=<nome do destino a ser filtrado> format=<formato de amostragem> "
+"rate=<taxa da amostragem> channels=<número de canais> channel_map=<mapa dos "
+"canais> plugin=<nome do plugin ladspa> label=<rótulo do plugin ladspa> "
+"control=<lista separada por vÃrgulas dos valores de controle da entrada>"
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Ãudio interno"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -80,283 +101,300 @@ msgstr "Falha ao alocar o novo carregador dl."
msgid "Failed to add bind-now-loader."
msgstr "Falha em adicionar o bind-now-loader."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Sinal %s recebido."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Saindo."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Falha em encontrar o usuário '%s'."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Falha em encontrar o grupo '%s'."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Usuário '%s' (UID %lu) e grupo '%s' (GID %lu) encontrados."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "O GID do usuário'%s' e do grupo '%s' não combinam."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "O diretório Home do usuário '%s' não é '%s', ignorando."
-#: ../src/daemon/main.c:212
-#: ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Falha em criar '%s': %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Falha em alterar a lista de grupos: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Falha em mudar o GID: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Falha em mudar o UID: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "Os privilégios do root foram retirados com sucesso."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Falha em interpretar a linha de comando."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:568
-msgid "This program is not intended to be run as root (unless --system is specified)."
-msgstr "Este programa não é para ser executado como root (a não ser que --system seja especificado)."
+#: ../src/daemon/main.c:561
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Este programa não é para ser executado como root (a não ser que --system "
+"seja especificado)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Privilégios de root requeridos."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
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:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
-msgstr "Executando no modo system, mas --disallow-module-loading não foi configurado!"
+msgstr ""
+"Executando no modo system, mas --disallow-module-loading não foi configurado!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
-msgstr "Executando no modo system, desabilitando forçadamente o exit idle time!"
+msgstr ""
+"Executando no modo system, desabilitando forçadamente o exit idle time!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:643
-#: ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs localizadas."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definido, todas as declarações desabilitadas."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
-msgstr "FASTPATH definido, somente as declarações do \"fast path\" foram desabilitadas."
+msgstr ""
+"FASTPATH definido, somente as declarações do \"fast path\" foram "
+"desabilitadas."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Todas as declarações habilitadas."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr "O ID da sessão é %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
-"OK, so you are running PA in system mode. Please note that you most likely shouldn't be doing that.\n"
-"If you do it nonetheless then it's your own fault if things don't work as expected.\n"
-"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an explanation why system mode is usually a bad idea."
+"OK, so you are running PA in system mode. Please note that you most likely "
+"shouldn't be doing that.\n"
+"If you do it nonetheless then it's your own fault if things don't work as "
+"expected.\n"
+"Please read http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode for an "
+"explanation why system mode is usually a bad idea."
msgstr ""
-"OK, então você está executando o PA no modo de sistema. Por favor, note que é mais provável que você não deveria estar fazendo isso.\n"
-"Todavia, se você o fizer, então a culpa será sua se as coisas não funcionarem como esperado.\n"
-"Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para obter um explicação sobre porque o modo de sistema é uma má idéia."
-
-#: ../src/daemon/main.c:804
+"OK, então você está executando o PA no modo de sistema. Por favor, note que "
+"é mais provável que você não deveria estar fazendo isso.\n"
+"Todavia, se você o fizer, então a culpa será sua se as coisas não "
+"funcionarem como esperado.\n"
+"Por favor, leia o http://pulseaudio.org/wiki/WhatIsWrongWithSystemMode para "
+"obter um explicação sobre porque o modo de sistema é uma má idéia."
+
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponÃveis! Bon appetit!"
-#: ../src/daemon/main.c:816
-msgid "Dude, your kernel stinks! The chef's recommendation today is Linux with high-resolution timers enabled!"
-msgstr "Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de alta resolução habilitados!"
+#: ../src/daemon/main.c:809
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
+"alta resolução habilitados!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
-msgstr "O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
+msgstr ""
+"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Daemon terminado."
@@ -371,37 +409,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 (only returns exit code)\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"
-" --log-meta[=BOOL] Include code location in log messages\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"
+" -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"
@@ -412,10 +461,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"
@@ -426,56 +477,79 @@ msgstr ""
" -h, --help Mostra esta ajuda\n"
" --version Mostra a versão\n"
" --dump-conf Descarrega a configuração padrão\n"
-" --dump-modules Descarrega a lista de módulos disponÃveis\n"
-" --dump-resample-methods Descarrega os métodos de reamostragem\n"
-" --cleanup-shm Limpa os segmentos de memória compartilhados\n"
-" --start Inicia o daemon se ele não estiver em execução\n"
+" --dump-modules Descarrega a lista de módulos "
+"disponÃveis\n"
+" --dump-resample-methods Descarrega os métodos de "
+"reamostragem\n"
+" --cleanup-shm Limpa os segmentos de memória "
+"compartilhados\n"
+" --start Inicia o daemon se ele não estiver "
+"em execução\n"
" -k --kill Encerra um daemon em execução\n"
-" --check Verifica se há um daemon em execução (somente retorna o código de saÃda)\n"
+" --check Verifica se há um daemon em execução "
+"(somente retorna o código de saÃda)\n"
"\n"
"OPÃÃES:\n"
-" --system[=BOOL] Executa como uma instância do sistema em escala ampla\n"
+" --system[=BOOL] Executa como uma instância do "
+"sistema em escala ampla\n"
" -D, --daemonize[=BOOL] Torna-se um daemom após o inÃcio\n"
" --fail[=BOOL] Sai quando a partida falha\n"
" --high-priority[=BOOL] Tenta definir um nÃvel alto de nice\n"
" (disponÃvel apenas, quando SUID ou\n"
" com RLIMIT_NICE) elevado\n"
-" --realtime[=BOOL] Tenta habilitar o escalonamento em tempo real\n"
-" (disponÃvel apenas como root, quando SUID ou\n"
+" --realtime[=BOOL] Tenta habilitar o escalonamento em "
+"tempo real\n"
+" (disponÃvel apenas como root, quando "
+"SUID ou\n"
" com RLIMIT_RTPRIO) elevado\n"
-" --disallow-module-loading[=BOOL] Não permite carga/descarga de módulo requerido pelo usuário\n"
+" --disallow-module-loading[=BOOL] Não permite carga/descarga de módulo "
+"requerido pelo usuário\n"
" depois da partida\n"
-" --disallow-exit[=BOOL] Não permite saÃda requisitada pelo usuário\n"
-" --exit-idle-time=SECS Termina um daemon quando ocioso e este\n"
+" --disallow-exit[=BOOL] Não permite saÃda requisitada pelo "
+"usuário\n"
+" --exit-idle-time=SECS Termina um daemon quando ocioso e "
+"este\n"
" tempo foi decorrido\n"
-" --module-idle-time=SECS Descarrega os módulos autocarregáveis quando ociosos e\n"
+" --module-idle-time=SECS Descarrega os módulos "
+"autocarregáveis quando ociosos e\n"
" este tempo foi decorrido\n"
-" --scache-idle-time=SECS Descarrega amostras quando ociosas e\n"
+" --scache-idle-time=SECS Descarrega amostras quando ociosas "
+"e\n"
" este tempo foi decorrido\n"
-" --log-level[=LEVEL] Aumenta ou define o grau de detalhamento\n"
+" --log-level[=LEVEL] Aumenta ou define o grau de "
+"detalhamento\n"
" -v Aumenta o nÃvel de detalhamento\n"
" --log-target={auto,syslog,stderr} Especifica o destino do log\n"
-" --log-meta[=BOOL] Inclui a localização do código na mensagem de log\n"
-" --log-time[=BOOL] Inclui carimbos de hora nas mensagens de log\n"
-" --log-backtrace=FRAMES Inclui um backtrace na mensagem de log\n"
-" -p, --dl-search-path=PATH Define o caminho de pesquisa para objetos (plugins)\n"
+" --log-meta[=BOOL] Inclui a localização do código na "
+"mensagem de log\n"
+" --log-time[=BOOL] Inclui carimbos de hora nas "
+"mensagens de log\n"
+" --log-backtrace=FRAMES Inclui um backtrace na mensagem de "
+"log\n"
+" -p, --dl-search-path=PATH Define o caminho de pesquisa para "
+"objetos (plugins)\n"
" dinamicamente compartilhados\n"
-" --resample-method=METHOD Usa o método de reamostragem especificado\n"
+" --resample-method=METHOD Usa o método de reamostragem "
+"especificado\n"
" (Veja --dump-resample-methods para\n"
" valores possÃveis)\n"
" --use-pid-file[=BOOL] Cria um arquivo PID\n"
-" --no-cpu-limit[=BOOL] Não instala um limitador de carga de CPU em\n"
+" --no-cpu-limit[=BOOL] Não instala um limitador de carga de "
+"CPU em\n"
" plataformas que o suportem.\n"
-" --disable-shm[=BOOL] Desabilita o suporte à memória compartilhada.\n"
+" --disable-shm[=BOOL] Desabilita o suporte à memória "
+"compartilhada.\n"
"\n"
"SCRIPT DE INÃCIO:\n"
" -L, --load=\"ARGUMENTOS DO MÃDULO\" Carrega um plugin especificado com\n"
" o argumento especificado\n"
" -F, --file=NOME_DO_ARQUIVO Executa o script especificado\n"
-" -C Abre uma linha de comando no TTY em execução\n"
+" -C Abre uma linha de comando no TTY em "
+"execução\n"
" depois da partida\n"
"\n"
-" -n Não carrega o arquivo de script padrão\n"
+" -n Não carrega o arquivo de script "
+"padrão\n"
#: ../src/daemon/cmdline.c:247
msgid "--daemonize expects boolean argument"
@@ -486,8 +560,12 @@ msgid "--fail expects boolean argument"
msgstr "--fail espera argumento booleano"
#: ../src/daemon/cmdline.c:264
-msgid "--log-level expects log level argument (either numeric in range 0..4 or one of debug, info, notice, warn, error)."
-msgstr "--log-level espera um argumento em nÃvel de log (seja numérico na faixa de 0..4 seja algum entre debug, info, notice, warn, error)."
+msgid ""
+"--log-level expects log level argument (either numeric in range 0..4 or one "
+"of debug, info, notice, warn, error)."
+msgstr ""
+"--log-level espera um argumento em nÃvel de log (seja numérico na faixa de "
+"0..4 seja algum entre debug, info, notice, warn, error)."
#: ../src/daemon/cmdline.c:276
msgid "--high-priority expects boolean argument"
@@ -643,22 +721,27 @@ msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:540
-msgid "The specified default channel map has a different number of channels than the specified default number of channels."
-msgstr "O mapa padrão dos canais especificado tem um número diferente de canais do que o número de canais padrão especificado."
+#: ../src/daemon/daemon-conf.c:546
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+"O mapa padrão dos canais especificado tem um número diferente de canais do "
+"que o número de canais padrão especificado."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lido do arquivo de configuração: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Descartando os privilégios de root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -669,8 +752,7 @@ msgstr "Sistema de som PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "Iniciar o sistema de som PulseAudio"
-#: ../src/pulse/channelmap.c:105
-#: ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -874,36 +956,33 @@ msgstr "Posterior Superior Esquerdo"
msgid "Top Rear Right"
msgstr "Posterior Superior Direito"
-#: ../src/pulse/channelmap.c:478
-#: ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239
-#: ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285
-#: ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(Inválido)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1007,33 +1086,32 @@ msgstr "Implementação faltando"
msgid "Client forked"
msgstr "Cliente bifurcado"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
-#: ../src/pulse/client-conf-x11.c:55
-#: ../src/utils/pax11publish.c:100
+#: ../src/pulse/client-conf-x11.c:55 ../src/utils/pax11publish.c:100
msgid "XOpenDisplay() failed"
msgstr "XOpenDisplay() falhou"
@@ -1041,7 +1119,7 @@ msgstr "XOpenDisplay() falhou"
msgid "Failed to parse cookie data"
msgstr "Falhou ao analisar os dados do cookie"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Falha em abrir o arquivo de configuração '%s': %s"
@@ -1055,12 +1133,12 @@ msgstr "Nenhum cookie foi carregado. Tentativa de conexão sem eles."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Foi recebida uma mensagem para uma extensão desconhecida '%s'"
@@ -1093,8 +1171,7 @@ msgstr "pa_stream_write() falhou: %s"
msgid "pa_stream_begin_write() failed: %s"
msgstr "pa_stream_begin_write() falhou: %s"
-#: ../src/utils/pacat.c:237
-#: ../src/utils/pacat.c:267
+#: ../src/utils/pacat.c:237 ../src/utils/pacat.c:267
#, c-format
msgid "pa_stream_peek() failed: %s"
msgstr "pa_stream_peek() falhou: %s"
@@ -1238,29 +1315,48 @@ 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, s24le, s24be,\n"
-" s24-32le, s24-32be (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, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (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"
-" --property=PROPERTY=VALUE Set the specified property to the specified value.\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"
+" --property=PROPERTY=VALUE Set the specified property to the "
+"specified value.\n"
" --raw Record/play raw PCM data.\n"
" --file-format=FFORMAT Record/play formatted PCM data.\n"
" --list-file-formats List available file formats.\n"
@@ -1273,34 +1369,56 @@ msgstr ""
" -r, --record Cria uma conexão para gravação\n"
" -p, --playback Cria uma conexão para reprodução\n"
"\n"
-" -v, --verbose Habilita operações no modo detalhado\n"
+" -v, --verbose Habilita operações no modo "
+"detalhado\n"
"\n"
" -s, --server=SERVIDOR Nome do servidor a conectar-se\n"
-" -d, --device=DISPOSITIVO O nome do destino/fonte a conectar-se\n"
-" -n, --client-name=NOME Como chamar este cliente no servidor\n"
+" -d, --device=DISPOSITIVO O nome do destino/fonte a "
+"conectar-se\n"
+" -n, --client-name=NOME Como chamar este cliente no "
+"servidor\n"
" --stream-name=NOME Como chamar este fluxo no servidor\n"
-" --volume=VOLUME Especifica a faixa (linear) inicial de volume no intervalo 0...65536\n"
-" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem em Hz (o padrão é 44100)\n"
-" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, um de s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be, s24le, s24be,\n"
-" s24-32le, s24-32be (o padrão é s16ne)\n"
-" --channels=CANAIS O número de canais, 1 para mono, 2 para estéreo\n"
+" --volume=VOLUME Especifica a faixa (linear) inicial "
+"de volume no intervalo 0...65536\n"
+" --rate=TAXA_DE_AMOSTRAGEM Taxa de amostragem em Hz (o "
+"padrão é 44100)\n"
+" --format=FORMATO_DE_AMOSTRAGEM Tipo de amostragem, um de s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be, "
+"s24le, s24be,\n"
+" s24-32le, s24-32be (o padrão é "
+"s16ne)\n"
+" --channels=CANAIS O número de canais, 1 para mono, 2 "
+"para estéreo\n"
" (o padrão é 2)\n"
-" --channel-map=MAPA_DE_CANAIS Mapeamento de canais a ser usado no lugar do padrão\n"
-" --fix-format Obtém o formato da amostragem do destino onde o fluxo\n"
+" --channel-map=MAPA_DE_CANAIS Mapeamento de canais a ser usado "
+"no lugar do padrão\n"
+" --fix-format Obtém o formato da amostragem do "
+"destino onde o fluxo\n"
" está sendo conectado.\n"
-" --fix-rate Obtém a taxa de amostragem do destino onde o fluxo está\n"
+" --fix-rate Obtém a taxa de amostragem do "
+"destino onde o fluxo está\n"
" sendo conectado.\n"
-" --fix-channels Obtém o número de canais e o mapa de canais\n"
-" do destino onde o fluxo está sendo conectado.\n"
-" --no-remix Não realizar upmix nem downmix dos canais.\n"
-" --no-remap Mapear os canais por Ãndice em vez de nome.\n"
-" --latency=BYTES Requisitar a latência especificada em bytes.\n"
-" --process-time=BYTES Requisitar o tempo de processo especificado por requisições em bytes.\n"
-" --property=PROPRIEDADE=VALOR Define a propriedade especificada para o valor especificado.\n"
-" --raw Grava/reproduz dados PCM não tratados.\n"
-" --file-format=FORMATO_DO_ARQ. Grava/reproduz dados PCM formatados.\n"
-" --list-file-formats Lista os formatos de arquivo disponÃveis.\n"
+" --fix-channels Obtém o número de canais e o mapa de "
+"canais\n"
+" do destino onde o fluxo está sendo "
+"conectado.\n"
+" --no-remix Não realizar upmix nem downmix dos "
+"canais.\n"
+" --no-remap Mapear os canais por Ãndice em vez "
+"de nome.\n"
+" --latency=BYTES Requisitar a latência especificada "
+"em bytes.\n"
+" --process-time=BYTES Requisitar o tempo de processo "
+"especificado por requisições em bytes.\n"
+" --property=PROPRIEDADE=VALOR Define a propriedade especificada "
+"para o valor especificado.\n"
+" --raw Grava/reproduz dados PCM não "
+"tratados.\n"
+" --file-format=FORMATO_DO_ARQ. Grava/reproduz dados PCM "
+"formatados.\n"
+" --list-file-formats Lista os formatos de arquivo "
+"disponÃveis.\n"
#: ../src/utils/pacat.c:727
#, c-format
@@ -1375,8 +1493,12 @@ msgid "Failed to open audio file."
msgstr "Falha ao abrir o arquivo de áudio."
#: ../src/utils/pacat.c:956
-msgid "Warning: specified sample specification will be overwritten with specification from file."
-msgstr "Aviso: a especificação de amostragem especificada será sobrescrita pela especificação do arquivo."
+msgid ""
+"Warning: specified sample specification will be overwritten with "
+"specification from file."
+msgstr ""
+"Aviso: a especificação de amostragem especificada será sobrescrita pela "
+"especificação do arquivo."
#: ../src/utils/pacat.c:959
msgid "Failed to determine sample specification from file."
@@ -1396,8 +1518,11 @@ msgstr "Aviso: falha ao gravar o mapa de canais no arquivo."
#: ../src/utils/pacat.c:1005
#, c-format
-msgid "Opening a %s stream with sample specification '%s' and channel map '%s'."
-msgstr "Abrindo um fluxo %s com a especificação de amostragem \"%s\" e mapeamento de canais \"%s\"."
+msgid ""
+"Opening a %s stream with sample specification '%s' and channel map '%s'."
+msgstr ""
+"Abrindo um fluxo %s com a especificação de amostragem \"%s\" e mapeamento de "
+"canais \"%s\"."
#: ../src/utils/pacat.c:1006
msgid "recording"
@@ -1419,8 +1544,7 @@ msgstr "io_new() falhou."
msgid "pa_context_new() failed."
msgstr "pa_context_new() falhou."
-#: ../src/utils/pacat.c:1066
-#: ../src/utils/pactl.c:1122
+#: ../src/utils/pacat.c:1066 ../src/utils/pactl.c:1122
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_new() falhou: %s"
@@ -1456,16 +1580,16 @@ msgstr "Falha ao prosseguir: %s\n"
#: ../src/utils/pasuspender.c:147
#, c-format
msgid "WARNING: Sound server is not local, not suspending.\n"
-msgstr "AVISO: O servidor de som não é local, Sound server is not local, não está em suspenso.\n"
+msgstr ""
+"AVISO: O servidor de som não é local, Sound server is not local, não está em "
+"suspenso.\n"
-#: ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:814
+#: ../src/utils/pasuspender.c:159 ../src/utils/pactl.c:814
#, c-format
msgid "Connection failure: %s\n"
msgstr "Falha na conexão: %s\n"
-#: ../src/utils/pasuspender.c:176
-#: ../src/utils/pactl.c:820
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:820
#, c-format
msgid "Got SIGINT, exiting.\n"
msgstr "Recebido o SIGINT, saindo.\n"
@@ -1482,7 +1606,8 @@ 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 [options] ... \n"
@@ -1503,20 +1628,17 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pasuspender.c:277
-#: ../src/utils/pactl.c:1104
+#: ../src/utils/pasuspender.c:277 ../src/utils/pactl.c:1104
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falhou.\n"
-#: ../src/utils/pasuspender.c:290
-#: ../src/utils/pactl.c:1116
+#: ../src/utils/pasuspender.c:290 ../src/utils/pactl.c:1116
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pasuspender.c:298
-#: ../src/utils/pactl.c:1127
+#: ../src/utils/pasuspender.c:298 ../src/utils/pactl.c:1127
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falhou.\n"
@@ -1613,14 +1735,12 @@ msgstr ""
"\tPropriedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:261
-#: ../src/utils/pactl.c:353
+#: ../src/utils/pactl.c:261 ../src/utils/pactl.c:353
#, c-format
msgid "\tPorts:\n"
msgstr "\tPortas:\n"
-#: ../src/utils/pactl.c:267
-#: ../src/utils/pactl.c:359
+#: ../src/utils/pactl.c:267 ../src/utils/pactl.c:359
#, c-format
msgid "\tActive Port: %s\n"
msgstr "\tPorta ativa: %s\n"
@@ -1669,18 +1789,10 @@ msgstr ""
"\tPropriedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:338
-#: ../src/utils/pactl.c:394
-#: ../src/utils/pactl.c:429
-#: ../src/utils/pactl.c:466
-#: ../src/utils/pactl.c:525
-#: ../src/utils/pactl.c:526
-#: ../src/utils/pactl.c:536
-#: ../src/utils/pactl.c:580
-#: ../src/utils/pactl.c:581
-#: ../src/utils/pactl.c:587
-#: ../src/utils/pactl.c:630
-#: ../src/utils/pactl.c:631
+#: ../src/utils/pactl.c:338 ../src/utils/pactl.c:394 ../src/utils/pactl.c:429
+#: ../src/utils/pactl.c:466 ../src/utils/pactl.c:525 ../src/utils/pactl.c:526
+#: ../src/utils/pactl.c:536 ../src/utils/pactl.c:580 ../src/utils/pactl.c:581
+#: ../src/utils/pactl.c:587 ../src/utils/pactl.c:630 ../src/utils/pactl.c:631
#: ../src/utils/pactl.c:638
msgid "n/a"
msgstr "n/a"
@@ -1871,8 +1983,7 @@ msgstr ""
"\tPropriedades:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:646
-#: ../src/utils/pactl.c:656
+#: ../src/utils/pactl.c:646 ../src/utils/pactl.c:656
#, c-format
msgid "Failure: %s\n"
msgstr "Falha: %s\n"
@@ -1908,8 +2019,10 @@ msgid ""
" -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 [opções] stat\n"
"%s [opções] list\n"
@@ -1931,7 +2044,8 @@ msgstr ""
" --version Mostra a versão\n"
"\n"
" -s, --server=SERVER O nome do servidor a ser conectado\n"
-" -n, --client-name=NAME Como chamar este cliente no servidor \n"
+" -n, --client-name=NAME Como chamar este cliente no "
+"servidor \n"
#: ../src/utils/pactl.c:880
#, c-format
@@ -1959,11 +2073,14 @@ msgstr "Falha em abrir o arquivo de som.\n"
#: ../src/utils/pactl.c:944
msgid "Failed to determine sample specification from file.\n"
-msgstr "Falha ao determinar a especificação de amostragem a partir do arquivo.\n"
+msgstr ""
+"Falha ao determinar a especificação de amostragem a partir do arquivo.\n"
#: ../src/utils/pactl.c:951
msgid "Warning: Failed to determine sample specification from file.\n"
-msgstr "Aviso: falha ao determinar a especificação da amostragem a partir do arquivo.\n"
+msgstr ""
+"Aviso: falha ao determinar a especificação da amostragem a partir do "
+"arquivo.\n"
#: ../src/utils/pactl.c:961
msgid "You have to specify a sample name to play\n"
@@ -1990,12 +2107,20 @@ msgid "You have to specify a module index\n"
msgstr "Você deve especificar um Ãndice de um módulo\n"
#: ../src/utils/pactl.c:1037
-msgid "You may not specify more than one sink. You have to specify a boolean value.\n"
-msgstr "Você não pode especificar mais de um destino. Você tem que especificar um valor booleano.\n"
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Você não pode especificar mais de um destino. Você tem que especificar um "
+"valor booleano.\n"
#: ../src/utils/pactl.c:1050
-msgid "You may not specify more than one source. You have to specify a boolean value.\n"
-msgstr "Você não pode especificar mais de uma fonte. Você tem que especificar um valor booleano.\n"
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Você não pode especificar mais de uma fonte. Você tem que especificar um "
+"valor booleano.\n"
#: ../src/utils/pactl.c:1062
msgid "You have to specify a card name/index and a profile name\n"
@@ -2020,14 +2145,17 @@ 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 display] [-S server] [-O sink] [-I source] [-c file] [-d|-e|-i|-r]\n"
"\n"
-" -d Mostra os dados atuais do PulseAudio associados ao display X11 (padrão)\n"
+" -d Mostra os dados atuais do PulseAudio associados ao display X11 "
+"(padrão)\n"
" -e Exporta os dados locais do PulseAudio para um display X11 \n"
-" -i Importa os dados do PulseAudio de um display X11 para as variáveis de ambiente locais e para o arquivo de cookie.\n"
+" -i Importa os dados do PulseAudio de um display X11 para as variáveis "
+"de ambiente locais e para o arquivo de cookie.\n"
" -r Remove os dados do PulseAudio do display X11\n"
#: ../src/utils/pax11publish.c:94
@@ -2090,84 +2218,93 @@ msgstr "Falha em carregar os dados do cookie\n"
msgid "Not yet implemented.\n"
msgstr "Ainda não implementado.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
-msgstr "Nenhum daemon do PulseAudio em execução ou não está em execução como daemon de sessão."
+msgstr ""
+"Nenhum daemon do PulseAudio em execução ou não está em execução como daemon "
+"de sessão."
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Falha ao matar o daemon do PulseAudio."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "O daemon não responde."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156
-#: ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189
-#: ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
-#: ../src/pulsecore/lock-autospawn.c:136
-#: ../src/pulsecore/lock-autospawn.c:219
+#: ../src/pulsecore/lock-autospawn.c:136 ../src/pulsecore/lock-autospawn.c:219
msgid "Cannot access autospawn lock."
msgstr "Não foi possÃvel acessar a trava de autogeração."
-#: ../src/modules/alsa/alsa-sink.c:449
-#: ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
-"ALSA woke us up to write new data to the device, but there was actually nothing to write!\n"
-"Most likely this is a bug in the ALSA driver '%s'. Please report this issue to the ALSA developers.\n"
-"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail."
+"ALSA woke us up to write new data to the device, but there was actually "
+"nothing to write!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
-"O ALSA nos acordou para gravar novos dados no dispositivo, mas não há nada a ser gravado!\n"
-"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, relate esse problema para os desenvolvedores do ALSA.\n"
-"Nós fomos acordados com o conjunto POLLOUT -- entretanto, a snd_pcm_avail() subseqüente retornou 0 ou outro valor < min_avail."
+"O ALSA nos acordou para gravar novos dados no dispositivo, mas não há nada a "
+"ser gravado!\n"
+"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema para os desenvolvedores do ALSA.\n"
+"Nós fomos acordados com o conjunto POLLOUT -- entretanto, a snd_pcm_avail() "
+"subseqüente retornou 0 ou outro valor < min_avail."
-#: ../src/modules/alsa/alsa-source.c:429
-#: ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
-"ALSA woke us up to read new data from the device, but there was actually nothing to read!\n"
-"Most likely this is a bug in the ALSA driver '%s'. Please report this issue to the ALSA developers.\n"
-"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail."
+"ALSA woke us up to read new data from the device, but there was actually "
+"nothing to read!\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers.\n"
+"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail() "
+"returned 0 or another value < min_avail."
msgstr ""
-"O ALSA nos acordou para ler novos dados no dispositivo, mas não há nada a ser lido!\n"
-"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, relate esse problema para os desenvolvedores do ALSA.\n"
-"Nós fomos acordados com o conjunto POLLIN -- entretanto, a snd_pcm_avail() subseqüente retornou 0 ou outro valor < min_avail."
+"O ALSA nos acordou para ler novos dados no dispositivo, mas não há nada a "
+"ser lido!\n"
+"à mais provável que isso seja um erro no driver \"%s\" do ALSA. Por favor, "
+"relate esse problema para os desenvolvedores do ALSA.\n"
+"Nós fomos acordados com o conjunto POLLIN -- entretanto, a snd_pcm_avail() "
+"subseqüente retornou 0 ou outro valor < min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "Desligado"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodução de alta fidelidade (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Duplex telefônico (HSP/HFP)"
@@ -2175,92 +2312,129 @@ msgstr "Duplex telefônico (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "Servidor de som PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Não foi possÃvel conectar com o barramento do sistema: %s"
+
#~ msgid "Cannot get caller from PID: %s"
#~ msgstr "Não foi possÃvel obter quem chamou pelo PID: %s"
+
#~ msgid "Cannot set UID on caller object."
#~ msgstr "Não foi possÃvel definir o UID sobre o objeto que chamou."
+
#~ msgid "Failed to get CK session."
#~ msgstr "Falha em obter a sessão CK."
+
#~ msgid "Cannot set UID on session object."
#~ msgstr "Não foi possÃvel definir o UID do objeto da sessão."
+
#~ msgid "Cannot allocate PolKitAction."
#~ msgstr "Não foi possÃvel alocar o PolKitAction."
+
#~ msgid "Cannot set action_id"
#~ msgstr "Não foi possÃvel definir a action_id"
+
#~ msgid "Cannot allocate PolKitContext."
#~ msgstr "Não foi possÃvel alocar o PolKitContext."
+
#~ msgid "Cannot initialize PolKitContext: %s"
#~ msgstr "Não foi possÃvel iniciar o PolKitContext: %s"
+
#~ msgid "Could not determine whether caller is authorized: %s"
#~ msgstr "Não foi possÃvel determinar se o solicitante está autorizado: %s"
+
#~ msgid "Cannot obtain auth: %s"
#~ msgstr "Não foi possÃvel obter auth: %s"
+
#~ msgid "PolicyKit responded with '%s'"
#~ msgstr "PolicyKit respondeu com '%s'"
+
#~ msgid ""
#~ "High-priority scheduling (negative Unix nice level) for the PulseAudio "
#~ "daemon"
#~ msgstr ""
#~ "Escalonamento de alta prioridade (nÃvel de nice Unix negativo) para o "
#~ "daemon do PulseAudio"
+
#~ msgid "Real-time scheduling for the PulseAudio daemon"
#~ msgstr "Escalonamento em tempo real para o daemon do PulseAudio"
+
#~ msgid ""
#~ "System policy prevents PulseAudio from acquiring high-priority scheduling."
#~ msgstr ""
#~ "Uma polÃtica do sistema impede que o PulseAudio adquira escalonamento de "
#~ "alta prioridade."
+
#~ msgid ""
#~ "System policy prevents PulseAudio from acquiring real-time scheduling."
#~ msgstr ""
#~ "Uma polÃtica do sistema impede que o PulseAudio adquira o escalonamento "
#~ "em tempo real."
+
#~ msgid "read() failed: %s\n"
#~ msgstr "read() falhou: %s\n"
+
#~ msgid "pa_context_connect() failed: %s\n"
#~ msgstr "pa_context_connect() falhou: %s\n"
+
#~ msgid "We're in the group '%s', allowing high-priority scheduling."
#~ msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
+
#~ msgid "We're in the group '%s', allowing real-time scheduling."
#~ msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
+
#~ msgid "PolicyKit grants us acquire-high-priority privilege."
#~ msgstr ""
#~ "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade."
+
#~ msgid "PolicyKit refuses acquire-high-priority privilege."
#~ msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
+
#~ msgid "PolicyKit grants us acquire-real-time privilege."
#~ msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real."
+
#~ msgid "PolicyKit refuses acquire-real-time privilege."
#~ msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
+
#~ 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."
+
#~ msgid "Successfully increased RLIMIT_RTPRIO"
#~ msgstr "RLIMIT_RTPRIO aumentado com sucesso"
+
#~ msgid "RLIMIT_RTPRIO failed: %s"
#~ msgstr "RLIMIT_RTPRIO falhou: %s"
+
#~ msgid "Giving up CAP_NICE"
#~ msgstr "Abandonando CAP_NICE"
+
#~ 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."
+
#~ msgid "Limited capabilities successfully to CAP_SYS_NICE."
#~ msgstr "As capacidades foram limitadas com sucesso para CAP_SYS_NICE."
+
#~ msgid "time_new() failed.\n"
#~ msgstr "time_new() falhou.\n"
+
#~ msgid "Stream successfully created\n"
#~ msgstr "Fluxo criado com sucesso\n"
+
#~ msgid "Stream errror: %s\n"
#~ msgstr "Erro de fluxo: %s\n"
+
#~ msgid "Connection established.\n"
#~ msgstr "Conexão estabelecida.\n"
+
#~ msgid ""
#~ "%s [options] [FILE]\n"
#~ "\n"
@@ -2299,6 +2473,7 @@ msgstr "Servidor de som PulseAudio"
#~ " --volume=VOLUME Especifica o volume inicial "
#~ "(linear) no intervalo 0...65536\n"
#~ " --channel-map=CHANNELMAP Define o mapa do canal para uso\n"
+
#~ msgid ""
#~ "paplay %s\n"
#~ "Compiled with libpulse %s\n"
@@ -2307,12 +2482,16 @@ msgstr "Servidor de som PulseAudio"
#~ "paplay %s\n"
#~ "Compilado com libpulse %s\n"
#~ "Linkado com libpulse %s\n"
+
#~ msgid "Invalid channel map\n"
#~ msgstr "Mapa de canais inválido\n"
+
#~ msgid "Failed to open file '%s'\n"
#~ msgstr "Falha ao abrir o arquivo '%s'\n"
+
#~ msgid "Channel map doesn't match file.\n"
#~ msgstr "O mapa dos canais não coincide com o arquivo.\n"
+
#~ msgid "Using sample spec '%s'\n"
#~ msgstr "Usando a especificação da amostragem '%s'\n"
@@ -2331,14 +2510,19 @@ msgstr "Servidor de som PulseAudio"
#, fuzzy
#~ msgid "--log-time boolean argument"
#~ msgstr "--disallow-exit argumento booleano"
+
#~ msgid "Default sink name (%s) does not exist in name register."
#~ msgstr "O nome padrão do destino (%s) não existe no registro de nomes."
+
#~ msgid "Buffer overrun, dropping incoming data\n"
#~ msgstr "Houve estouro de buffer, os dados que chegaram foram descartados\n"
+
#~ msgid "pa_stream_drop() failed: %s\n"
#~ msgstr "pa_stream_drop() falhou: %s\n"
+
#~ msgid "muted"
#~ msgstr "mudo"
+
#~ msgid ""
#~ "*** Autoload Entry #%u ***\n"
#~ "Name: %s\n"
@@ -2351,10 +2535,13 @@ msgstr "Servidor de som PulseAudio"
#~ "Tipo: %s\n"
#~ "Módulo: %s\n"
#~ "Argumento: %s\n"
+
#~ msgid "sink"
#~ msgstr "destino"
+
#~ msgid "source"
#~ msgstr "fonte"
+
#~ msgid ""
#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
#~ "For enabling real-time scheduling please acquire the appropriate "
@@ -2364,12 +2551,13 @@ msgstr "Servidor de som PulseAudio"
#~ "outra vez.\n"
#~ " Para habilitar o escalonamento em tempo real, por favo, adquira os "
#~ "privilégios adequados pelo PolicyKit, ou torne-se membro do'"
+
#~ msgid ""
#~ "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this "
#~ "user."
#~ msgstr ""
#~ "', ou eleve o RLIMIT_NICE/RLIMIT_RTPRIO dos limites do recurso para este "
#~ "usuário."
+
#~ msgid "socketpair(): %s"
#~ msgstr "socketpair(): %s"
-
diff --git a/po/sr.po b/po/sr.po
index 371c7b5..e25dc24 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: MiloÅ¡ KomarÄeviÄ <kmilos at gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr at redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -76,11 +76,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "УнÑÑÑаÑÑи звÑк"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Ðодем"
@@ -96,92 +96,92 @@ msgstr "ÐеÑÑпеÑно ÑмеÑÑаÑе новог dl ÑÑиÑаваÑа."
msgid "Failed to add bind-now-loader."
msgstr "ÐеÑÑпеÑно додаваÑе âповежи одмаÑ
â ÑÑиÑаваÑа."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "ÐобиÑ
Ñигнал %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ÐапÑÑÑам."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе Ð¼Ð¾Ð³Ñ Ð½Ð°Ñи коÑиÑника â%sâ."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе Ð¼Ð¾Ð³Ñ Ð½Ð°Ñи гÑÑÐ¿Ñ â%sâ."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "ÐаÑени ÑÑ ÐºÐ¾ÑиÑник â%sâ (UID %lu) и гÑÑпа â%sâ (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID коÑиÑника â%sâ Ñе не поклапа Ñа гÑÑпом â%sâ."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ÐиÑни диÑекÑоÑиÑÑм коÑиÑника â%sâ ниÑе â%sâ, занемаÑÑÑем."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "ÐеÑÑпеÑно пÑавÑеÑе â%sâ: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "ÐеÑÑпеÑна пÑомена гÑÑпног ÑпиÑка: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "ÐеÑÑпеÑна пÑомена GID-а: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "ÐеÑÑпеÑна пÑомена UID-а: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "УÑпеÑно одбаÑена root овлаÑÑеÑа."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Режим за ÑиÑав ÑиÑÑем ниÑе подÑжан на Ð¾Ð²Ð¾Ñ Ð¿Ð»Ð°ÑÑоÑми."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) ниÑе ÑÑпело: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "ÐеÑÑпеÑно ÑÑмаÑеÑе командне линиÑе."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Ðемон ниÑе покÑенÑÑ"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Ðемон Ñе покÑенÑÑ Ñа PID-ом %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ÐеÑÑпеÑно ÑбиÑаÑе демона: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -189,153 +189,153 @@ msgstr ""
"ÐиÑе намеÑавано да Ñе Ð¾Ð²Ð°Ñ Ð¿ÑогÑам покÑеÑе из root налога (оÑим Ñ ÑлÑÑаÑÑ "
"када Ñе --system наведено)"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "ÐоÑÑебна ÑÑ root овлаÑÑеÑа."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start ниÑе подÑжано за ÑиÑÑемÑке пÑимеÑке."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, али --disallow-exit ниÑе поÑÑавÑено!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, али --disallow-module-loading ниÑе поÑÑавÑено!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, пÑиÑилно онемогÑÑÑÑем SHM Ñежим!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ, пÑиÑилно онемогÑÑÑÑем гаÑеÑе поÑле одÑеÑеног "
"вÑемена миÑоваÑа!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "ÐеÑÑпеÑно пÑоналажеÑе ÑÑандаÑдног Ñлаза/излаза."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "ÐеÑÑпеÑно пÑÑÑаÑе подаÑака кÑоз Ñев: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа fork(): %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "ÐеÑÑпела ÑÑнкÑиÑа read(): %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "ÐеÑÑпеÑно покÑеÑаÑе демона."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Ðемон ÑÑпеÑно покÑенÑÑ."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ðво Ñе PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "ÐомаÑин компаÑлиÑаÑа: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS компаÑлиÑаÑа: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "ÐокÑенÑÑ Ð½Ð° домаÑинÑ: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "ÐаÑао %u пÑоÑеÑоÑ(а)"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "ÐелиÑина ÑÑÑаниÑе Ñе %lu баÑÑова"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "ÐомпаÑлиÑано Ñа подÑÑком за Valgrind: да"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "ÐомпаÑлиÑано Ñа подÑÑком за Valgrind: не"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "ÐокÑенÑÑ Ñ Valgrind ÑежимÑ: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "ÐпÑимизована изгÑадÑа: да"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "ÐпÑимизована изгÑадÑа: не"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG деÑиниÑан, Ñва обавеÑÑеÑа иÑкÑÑÑена."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH деÑиниÑан, Ñамо обавеÑÑеÑа бÑзе пÑÑаÑе иÑкÑÑÑена."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Сва обавеÑÑеÑа омогÑÑена."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "ÐеÑÑпеÑно добавÑаÑе ÐРмаÑине"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "ÐРмаÑине Ñе %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ÐРмаÑине Ñе %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "ÐоÑиÑÑи Ñе %s извÑÑни диÑекÑоÑиÑÑм."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "ÐоÑиÑÑи Ñе %s диÑекÑоÑиÑÑм ÑÑаÑа."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "ÐокÑенÑÑо Ñ ÑиÑÑемÑком ÑежимÑ: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -345,15 +345,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_pid_file_create()."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ÐоÑÑÑпни ÑÑ Ð½Ð¾Ð²Ð¸ бÑоÑаÑи виÑоке ÑезолÑÑиÑе! ÐÑиÑаÑно!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -361,27 +361,27 @@ msgstr ""
"ÐаÑе ÑезгÑо ниÑе добÑо подеÑено за pulseaudio! ÐÑепоÑÑÑÑÑе Ðам Ñе да "
"коÑиÑÑиÑе Linux ÑезгÑо Ñа омогÑÑеним бÑоÑаÑима виÑоке ÑезолÑÑиÑе."
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "ÐеÑÑпела ÑÑнкÑиÑа pa_core_new()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "ÐеÑÑпеÑно покÑеÑаÑе демона."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Ðемон Ñе покÑенÑÑ Ð±ÐµÐ· иÑедног ÑÑиÑаног модÑла, одбиÑа да Ñади."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ÐокÑеÑаÑе демона ÑÑпеÑно."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ÐокÑенÑÑо гаÑеÑе демона."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Рад демона Ñе пÑекинÑÑ."
@@ -707,12 +707,12 @@ msgstr "[%s:%u] ÐеиÑпÑавна велиÑина одломка â%sâ."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ÐеиÑпÑаван ниво пÑиоÑиÑеÑа â%sâ."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "ÐеÑÑпело оÑваÑаÑе даÑоÑеке подеÑаваÑа: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -720,13 +720,14 @@ msgstr ""
"Ðаведена мапа канала има нема иÑÑи бÑÐ¾Ñ ÐºÐ°Ð½Ð°Ð»Ð° као ÑÑо Ñе наведено Ñ "
"подÑазÑмеваном бÑоÑÑ ÐºÐ°Ð½Ð°Ð»Ð°."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ÐÑоÑиÑÐ°Ñ Ð¸Ð· даÑоÑеке подеÑаваÑа: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "ÐдбаÑÑÑем root повлаÑÑиÑе."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -737,7 +738,7 @@ msgstr "PulseAudio звÑÑни ÑиÑÑем"
msgid "Start the PulseAudio Sound System"
msgstr "ÐокÑени PulseAudio звÑÑни ÑиÑÑем"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Ðоно"
@@ -941,33 +942,33 @@ msgstr "ÐоÑÑи позадинÑки леви"
msgid "Top Rear Right"
msgstr "ÐоÑÑи позадинÑки деÑни"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(неиÑпÑавно)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "СÑеÑео"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ÐкÑÑжÑÑÑÑи 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ÐкÑÑжÑÑÑÑи 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ÐкÑÑжÑÑÑÑи 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ÐкÑÑжÑÑÑÑи 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ÐкÑÑжÑÑÑÑи 7.1"
@@ -1072,27 +1073,27 @@ msgstr "ÐиÑе одÑаÑено"
msgid "Client forked"
msgstr "ÐлиÑÐµÐ½Ñ Ð¸Ð·ÑаÑван"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1105,7 +1106,7 @@ msgstr "ÐеÑÑпела ÑÑнкÑиÑа XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "ÐеÑÑпеÑно ÑÑмаÑеÑе подаÑака из колаÑиÑа"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "ÐеÑÑпеÑно оÑваÑаÑе даÑоÑеке подеÑаваÑа â%sâ: %s"
@@ -1119,12 +1120,12 @@ msgstr "ÐолаÑÐ¸Ñ Ð½Ð¸Ñе ÑÑиÑан. ÐокÑÑавам Ñе повез
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "ÐÑимио поÑÑÐºÑ Ð·Ð° непознаÑи локал â%sâ"
@@ -2201,39 +2202,39 @@ msgstr "ÐеÑÑпеÑно ÑÑиÑаваÑе даÑоÑека колаÑиÑа\
msgid "Not yet implemented.\n"
msgstr "ÐиÑе ÑÐ¾Ñ Ð¸Ð¼Ð¿Ð»ÐµÐ¼ÐµÐ½ÑиÑано.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "ÐиÑе ÑÑпело ÑбиÑаÑе PulseAudio демона."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Ðемон Ñе не одазива."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2243,7 +2244,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "ÐиÑе могÑÑе пÑиÑÑÑпиÑи даÑоÑеÑи закÑÑÑаваÑа за ÑамоÑмножаваÑе."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2260,7 +2261,7 @@ msgstr ""
"ÐÑобÑÑени Ñмо Ñа поÑÑавÑеним POLLOUT-ом -- али ÑледеÑи snd_pcm_avail() Ñе "
"вÑаÑио 0 или Ð½ÐµÐºÑ Ð´ÑÑÐ³Ñ Ð²ÑедноÑÑ Ð¼Ð°ÑÑ Ð¾Ð´ min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2278,15 +2279,15 @@ msgstr ""
"вÑаÑио 0 или Ð½ÐµÐºÑ Ð´ÑÑÐ³Ñ Ð²ÑедноÑÑ Ð¼Ð°ÑÑ Ð¾Ð´ min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "ÐÑкÑÑÑено"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "РепÑодÑкÑиÑа виÑоке ÑаÑноÑÑи (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "ÐвоÑÑÑано ÑелеÑониÑаÑе (HSP/HFP)"
@@ -2294,6 +2295,9 @@ msgstr "ÐвоÑÑÑано ÑелеÑониÑаÑе (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio звÑÑни ÑиÑÑем"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "ÐиÑе Ñе могÑÑе пÑикÑÑÑиÑи на ÑиÑÑемÑÐºÑ Ð¼Ð°Ð³Ð¸ÑÑÑалÑ: %s"
diff --git a/po/sr at latin.po b/po/sr at latin.po
index ddbacad..7db8734 100644
--- a/po/sr at latin.po
+++ b/po/sr at latin.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-07 23:02+0100\n"
"Last-Translator: MiloÅ¡ KomarÄeviÄ <kmilos at gmail.com>\n"
"Language-Team: Serbian <fedora-trans-sr at redhat.com>\n"
@@ -19,7 +19,7 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 0.3\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -76,11 +76,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "Unutrašnji zvuk"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Modem"
@@ -96,92 +96,92 @@ msgstr "NeuspeÅ¡no smeÅ¡tanje novog dl uÄitavaÄa."
msgid "Failed to add bind-now-loader."
msgstr "NeuspeÅ¡no dodavanje âpoveži odmahâ uÄitavaÄa."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Dobih signal %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Napuštam."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ne mogu naÄi korisnika â%sâ."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ne mogu naÄi grupu â%sâ."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "NaÄeni su korisnik â%sâ (UID %lu) i grupa â%sâ (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID korisnika â%sâ se ne poklapa sa grupom â%sâ."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "LiÄni direktorijum korisnika â%sâ nije â%sâ, zanemarujem."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "NeuspeÅ¡no pravljenje â%sâ: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Neuspešna promena grupnog spiska: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Neuspešna promena GID-a: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Neuspešna promena UID-a: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "UspeÅ¡no odbaÄena root ovlaÅ¡Äenja."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "Režim za Äitav sistem nije podržan na ovoj platformi."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nije uspelo: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "NeuspeÅ¡no tumaÄenje komandne linije."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Demon nije pokrenut"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon je pokrenut sa PID-om %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Neuspešno ubijanje demona: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -189,154 +189,154 @@ msgstr ""
"Nije nameravano da se ovaj program pokreÄe iz root naloga (osim u sluÄaju "
"kada je --system navedeno)"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Potrebna su root ovlaÅ¡Äenja."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start nije podržano za sistemske primerke."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "Pokrenuto u sistemskom režimu, ali --disallow-exit nije postavljeno!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Pokrenuto u sistemskom režimu, ali --disallow-module-loading nije "
"postavljeno!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Pokrenuto u sistemskom režimu, prisilno onemoguÄujem SHM režim!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Pokrenuto u sistemskom režimu, prisilno onemoguÄujem gaÅ¡enje posle odreÄenog "
"vremena mirovanja!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Neuspešno pronalaženje standardnog ulaza/izlaza."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "Neuspešno puštanje podataka kroz cev: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "Neuspela funkcija fork(): %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "Neuspela funkcija read(): %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Demon uspešno pokrenut."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Ovo je PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "DomaÄin kompajliranja: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompajliranja: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "Pokrenut na domaÄinu: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Našao %u procesor(a)"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "VeliÄina stranice je %lu bajtova"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Kompajlirano sa podrškom za Valgrind: da"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Kompajlirano sa podrškom za Valgrind: ne"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Pokrenut u Valgrind režimu: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimizovana izgradnja: da"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "Optimizovana izgradnja: ne"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG definisan, sva obaveÅ¡tenja iskljuÄena."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH definisan, samo obaveÅ¡tenja brze putanje iskljuÄena."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "Sva obaveÅ¡tenja omoguÄena."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "Neuspešno dobavljanje IB mašine"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "IB mašine je %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "Koristi se %s izvršni direktorijum."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "Koristi se %s direktorijum stanja."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "Pokrenuto u sistemskom režimu: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -346,15 +346,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "Neuspela funkcija pa_pid_file_create()."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Dostupni su novi brojaÄi visoke rezolucije! Prijatno!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -362,27 +362,27 @@ msgstr ""
"VaÅ¡e jezgro nije dobro podeÅ¡eno za pulseaudio! PreporuÄuje Vam se da "
"koristite Linux jezgro sa omoguÄenim brojaÄima visoke rezolucije."
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "Neuspela funkcija pa_core_new()."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Neuspešno pokretanje demona."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Demon je pokrenut bez ijednog uÄitanog modula, odbija da radi."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "Pokretanje demona uspešno."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "Pokrenuto gašenje demona."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "Rad demona je prekinut."
@@ -708,12 +708,12 @@ msgstr "[%s:%u] Neispravna veliÄina odlomka â%sâ."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neispravan nivo prioriteta â%sâ."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Neuspelo otvaranje datoteke podešavanja: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -721,13 +721,14 @@ msgstr ""
"Navedena mapa kanala ima nema isti broj kanala kao Å¡to je navedeno u "
"podrazumevanom broju kanala."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ProÄitaj iz datoteke podeÅ¡avanja: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "Odbacujem root povlastice."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -738,7 +739,7 @@ msgstr "PulseAudio zvuÄni sistem"
msgid "Start the PulseAudio Sound System"
msgstr "Pokreni PulseAudio zvuÄni sistem"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -942,33 +943,33 @@ msgstr "Gornji pozadinski levi"
msgid "Top Rear Right"
msgstr "Gornji pozadinski desni"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(neispravno)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "Stereo"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "OkružujuÄi 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "OkružujuÄi 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "OkružujuÄi 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "OkružujuÄi 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "OkružujuÄi 7.1"
@@ -1073,27 +1074,27 @@ msgstr "Nije odraÄeno"
msgid "Client forked"
msgstr "Klijent izraÄvan"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1106,7 +1107,7 @@ msgstr "Neuspela funkcija XOpenDisplay()"
msgid "Failed to parse cookie data"
msgstr "NeuspeÅ¡no tumaÄenje podataka iz kolaÄiÄa"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "NeuspeÅ¡no otvaranje datoteke podeÅ¡avanja â%sâ: %s"
@@ -1120,12 +1121,12 @@ msgstr "KolaÄiÄ nije uÄitan. PokuÅ¡avam se povezati bez kolaÄiÄa."
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Primio poruku za nepoznati lokal â%sâ"
@@ -2203,39 +2204,39 @@ msgstr "NeuspeÅ¡no uÄitavanje datoteka kolaÄiÄa\n"
msgid "Not yet implemented.\n"
msgstr "Nije još implementirano.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "Nije uspelo ubijanje PulseAudio demona."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Demon se ne odaziva."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2245,7 +2246,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Nije moguÄe pristupiti datoteci zakljuÄavanja za samoumnožavanje."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2262,7 +2263,7 @@ msgstr ""
"ProbuÄeni smo sa postavljenim POLLOUT-om -- ali sledeÄi snd_pcm_avail() je "
"vratio 0 ili neku drugu vrednost manju od min_avail."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2280,15 +2281,15 @@ msgstr ""
"vratio 0 ili neku drugu vrednost manju od min_avail."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "IskljuÄeno"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "Reprodukcija visoke taÄnosti (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "Dvostrano telefoniranje (HSP/HFP)"
@@ -2296,6 +2297,9 @@ msgstr "Dvostrano telefoniranje (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio zvuÄni sistem"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Nije se moguÄe prikljuÄiti na sistemsku magistralu: %s"
diff --git a/po/sv.po b/po/sv.po
index 3bf80f2..eb9ee47 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-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\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,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -60,12 +60,12 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
#, fuzzy
msgid "Internal Audio"
msgstr "Internt fel"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr ""
@@ -82,92 +82,92 @@ msgstr "Misslyckades med att öppna ljudfil.\n"
msgid "Failed to add bind-now-loader."
msgstr ""
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "Fick signal %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "Avslutar."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Misslyckades med att hitta användaren \"%s\"."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Misslyckades med att hitta gruppen \"%s\"."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr ""
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr ""
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "Hemkatalogen för användaren \"%s\" är inte \"%s\", ignorerar."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Misslyckades med att skapa \"%s\": %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr ""
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr ""
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr ""
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr ""
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr ""
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -175,151 +175,151 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, c-format
msgid "Session ID is %s."
msgstr ""
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -329,41 +329,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr ""
@@ -612,25 +612,25 @@ msgstr ""
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
-#: ../src/daemon/caps.c:65
+#: ../src/daemon/caps.c:62
#, fuzzy
-msgid "Dropping root privileges."
+msgid "Cleaning up privileges."
msgstr "Släpper root-behörighet."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -641,7 +641,7 @@ msgstr ""
msgid "Start the PulseAudio Sound System"
msgstr ""
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Mono"
@@ -845,34 +845,34 @@ msgstr ""
msgid "Top Rear Right"
msgstr ""
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
#, fuzzy
msgid "(invalid)"
msgstr "Ogiltig"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr ""
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr ""
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr ""
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr ""
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr ""
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr ""
@@ -976,27 +976,27 @@ msgstr ""
msgid "Client forked"
msgstr ""
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr ""
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr ""
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr ""
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr ""
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr ""
@@ -1009,7 +1009,7 @@ msgstr "XOpenDisplay() misslyckades"
msgid "Failed to parse cookie data"
msgstr ""
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Misslyckades med att öppna konfigurationsfilen \"%s\": %s"
@@ -1023,12 +1023,12 @@ msgstr ""
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr ""
@@ -1910,39 +1910,39 @@ msgstr ""
msgid "Not yet implemented.\n"
msgstr "Ãnnu inte implementerad.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr ""
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr ""
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -1951,7 +1951,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr ""
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -1962,7 +1962,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -1974,15 +1974,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
@@ -1990,6 +1990,9 @@ msgstr ""
msgid "PulseAudio Sound Server"
msgstr ""
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "PolicyKit responded with '%s'"
#~ msgstr "PolicyKit svarade med \"%s\""
diff --git a/po/ta.po b/po/ta.po
index 73da25e..b1cd2c5 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-12 05:02+0530\n"
"Last-Translator: I. Felix <ifelix at redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta at redhat.com>\n"
@@ -34,7 +34,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -91,11 +91,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à®à®à¯à®ªà¯à®± à®à®à®¿à®¯à¯"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "மாதிரி"
@@ -111,242 +111,242 @@ msgstr "பà¯à®¤à®¿à®¯ dl à®à®±à¯à®±à¯à®ªà®µà®°à¯ à®à®¤à¯à®à¯à®à®¿à®°
msgid "Failed to add bind-now-loader."
msgstr "à®à®ªà¯à®ªà¯à®¤à¯ பிணà¯à®à¯à®à¯à®®à¯ à®à®±à¯à®ªà®¿à®¯à¯ à®à¯à®°à¯à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "%sà®à¯à®à¯ à®à®¿à®à¯à®©à®²à¯ à®à®¿à®à¯à®¤à¯à®¤à¯à®µà®¿à®à¯à®à®¤à¯."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "வà¯à®³à®¿à®¯à¯à®±à¯à®¤à®²à¯."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "'%s' பயனர௠à®à®£à¯à®à¯à®ªà®¿à®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "'%s' à®à¯à®´à¯à®µà¯ à®à®£à¯à®à¯à®ªà®¿à®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "'%s'பயனர௠à®à®£à¯à®à¯à®ªà®¿à®à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à®¾à®°à¯ (UID %lu) மறà¯à®±à¯à®®à¯ à®à¯à®´à¯ '%s' (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID ன௠பயனர௠'%s' மறà¯à®±à¯à®®à¯ '%s' à®à¯à®´à¯à®µà¯à®à®©à¯ à®à®¤à¯à®¤à¯ பà¯à®à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "à®®à¯à®à®ªà¯à®ªà¯ à®
à®à¯à®µà¯ பயனரான'%s' '%s'à®à®²à¯, பà¯à®±à®à¯à®à®£à®¿à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s'à® à®à®°à¯à®µà®¾à®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "à®à¯à®´à¯à®ªà¯ பà®à¯à®à®¿à®¯à®²à¯ மாறà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GIDà®à¯à®à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UIDà®à¯à®à¯ மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "à®°à¯à®à¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® விà®à®ªà¯à®ªà®à¯à®à®¤à¯."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "à®à®¨à¯à®¤ தளதà¯à®¤à®¿à®²à¯ à®à®£à®¿à®©à®¿à®¯à®¿à®©à¯ திறநà¯à®¤ à®®à¯à®±à¯à®®à¯ தà¯à®£à¯à®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à®à®à¯à®à®³à¯ வரிய௠மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "à®à¯à®®à¯à®©à¯ à®à®¯à®à¯à®à®µà®¿à®²à¯à®²à¯"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "PID %uவா஠à®à¯à®®à¯à®©à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "à®à¯à®®à¯à®©à¯à®à¯à®à¯ à®®à¯à®à®¿à®µà¯ à®à®à¯à®à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à®à®¨à¯à®¤ நிரல௠ரà¯à®à¯à®à®¾à® à®à®¯à®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯ (--system à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à®¾à®¤ வரà¯)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "à®°à¯à®à¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ தà¯à®µà¯à®ªà¯à®ªà®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start à®à®£à®¿à®©à®¿ நிà®à®´à¯à®µà®¿à®²à¯ தà¯à®£à¯à®ªà¯à®°à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, à®à®©à®¾à®²à¯ --disallow-exit à®
à®®à¯à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, à®à®©à®¾à®²à¯ --disallow-module-loading à®
à®®à¯à®à¯à®à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, SHM à®®à¯à®±à¯à®®à¯ à®à¯à®¯à®²à¯à®¨à¯à®à¯à®à¯à®¤à®²à¯ à®à®à¯à®à®¾à®¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "à®à®£à®¿à®©à®¿ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯, வà¯à®±à¯à®®à¯ நà¯à®°à®¤à¯à®¤à¯ à®à¯à®¯à®²à¯à®¨à¯à®à¯à® à®à®à¯à®à®¾à®¯à®ªà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio஠பà¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "பà¯à®ªà¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "வாà®à®¿à®ªà¯à®ªà®¤à®¿à®²à¯() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "à®à¯à®®à¯à®©à¯ தà¯à®µà®à¯à®à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "à®à¯à®®à¯à®©à¯ வà¯à®±à¯à®±à®¿à®à®°à®®à®¾à® தà¯à®µà®à¯à®à®à®ªà¯à®ªà®à¯à®à®¤à¯."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à®à®¤à¯ தான௠பளà¯à®¸à¯ à®à®à®¿à®¯à¯ %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "தà¯à®à¯à®à¯à®à®ªà¯à®ªà®à¯à® பà¯à®°à®µà®²à®©à¯: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "தà¯à®à¯à®ªà¯à®ªà¯ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "பà¯à®°à®µà®²à®©à®¾à® à®à®¯à®à¯à®à¯à®à®¿à®±à®¤: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "CPUs %uவில௠à®à®¾à®£à®ªà¯à®ªà®à¯à®à®¿à®±à®¤à¯ ."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "பà®à¯à® à®
ளவà¯à®à®³à¯ %lu பà¯à®à¯à®¸à¯"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Compiled with Valgrind support: yes"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Compiled with Valgrind support: no"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "Optimized build: yes"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "à®à¯à®°à¯à®à¯à®à®®à®¾à®© à®à®°à¯à®µà®¾à®à¯à®à®®à¯: à®à®²à¯à®²à¯"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "à®à®£à®¿à®©à®¿ à®à¯à®±à®¿à®¯à¯à®à¯ பà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "à®à®£à®¿à®©à®¿ à®à¯à®±à®¿à®¯à¯à®à¯ %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "à®à®£à®¿à®©à®¿ à®à¯à®±à®¿à®¯à¯à®à¯ %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "à®à®à¯à®®à¯à®¨à¯à®°à®®à¯ %s à®
à®à¯à®µà¯ பயனà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "%s நில௠à®
à®à¯à®µà®¿à®©à¯ பயனà¯à®ªà®à¯à®¤à¯à®¤à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "à®à®£à®¿à®©à®¿à®¯à®¿à®©à¯ à®®à¯à®±à¯à®®à¯à®¯à®¿à®²à¯ à®à®¯à®à¯à®à¯à®à®¿à®±à®¤à¯: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -356,15 +356,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "à®à®¯à®°à¯à®¨à¯à®¤ திரà¯à®¤à¯à®¤à®¿à®±à®©à¯ நà¯à®°à®®à¯à®à®¾à®à¯à®à®¿ à®à®¿à®à¯à®à¯à®à®¿à®³à®¤à¯! Bon appetit!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -372,27 +372,27 @@ msgstr ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "à®à¯à®®à¯à®©à¯ à®à®°à®®à¯à®ªà®¿à®ªà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "à®à¯à®®à®¾à®©à¯ தà¯à®µà®à¯à®à®®à¯ à®à®¨à¯à®¤ தà¯à®à¯à®¤à®¿à®à®³à¯à®®à¯ à®à®±à¯à®±à®ªà¯à®ªà®à®¾à®®à®²à¯, வà¯à®²à¯à®¯à¯ நிராà®à®°à®¿à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "à®à¯à®®à¯à®©à¯ தà¯à®µà®à¯à®à¯à®µà®¤à¯ à®®à¯à®à®¿à®µà®à¯à®¨à¯à®¤à®¤à¯."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "à®à¯à®®à¯à®©à¯ பணிநிறà¯à®¤à¯à®¤à®®à¯ à®®à¯à®©à¯à®à®¿à®±à®¤à¯."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "à®à¯à®®à¯à®©à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à¯à®¤à¯."
@@ -709,12 +709,12 @@ msgstr "[%s:%u] தவறான பà®à¯à®ªà¯à®ªà¯ à®
ளவ௠'%s'."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] தவறான நலà¯à®² நில௠'%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "à®à®à¯à®à®®à¯à®à¯à®à®ªà¯à®ªà®à¯à® à®à¯à®ªà¯à®ªà®¿à®©à¯ திறபà¯à®ªà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -722,13 +722,14 @@ msgstr ""
"à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à¯à® à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ à®à¯à®©à®²à¯ à®®à¯à®ªà¯ வà¯à®±à¯à®ªà®à¯à® à®à¯à®©à®²à¯à®à®³à®¿à®©à¯ à®à®£à¯à®£à®¿à®à¯à®à¯à®¯à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à¯à® "
"à®®à¯à®©à¯à®©à®¿à®°à¯à®ªà¯à®ªà¯ à®à¯à®©à®²à¯à®à®³à®¿à®©à¯ à®à®£à¯à®£à®¿à®à¯à®à¯à®¯à¯ வி஠à®à¯à®£à¯à®à¯à®³à¯à®³à®¤à¯"
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### à®à®à¯à®à®®à¯à®ªà¯à®ªà¯ à®à¯à®ªà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ வாà®à®¿à®à¯à®à®µà¯à®®à¯: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "à®°à¯à®à¯ à®®à¯à®©à¯à®©à¯à®°à®¿à®®à¯à®à®³à¯ விà®à¯à®ªà®à¯à®à®¿à®±à®¤à¯."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -739,7 +740,7 @@ msgstr "பளà¯à®¸à¯ à®à®à®¿à®¯à¯ à®à®²à®¿ à®à®£à®¿à®©à®¿"
msgid "Start the PulseAudio Sound System"
msgstr "பளà¯à®¸à¯ à®à®à®¿à®¯à¯ à®à®²à®¿ à®à®£à®¿à®©à®¿à®¯à¯ தà¯à®µà®à¯à®à®µà¯à®®"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "à®®à¯à®©à¯"
@@ -943,33 +944,33 @@ msgstr "à®®à¯à®²à¯ பின௠à®à®à®¤à¯"
msgid "Top Rear Right"
msgstr "à®®à¯à®²à¯ பின௠வலதà¯"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(தவறான)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ஸà¯à®à®¿à®°à®¿à®¯à¯"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Surround 7.1"
@@ -1073,27 +1074,27 @@ msgstr "விà®à¯à®ªà®à¯à® à®à¯à®¯à®²à¯à®ªà®¾à®à¯"
msgid "Client forked"
msgstr "à®à®¿à®³à¯à®¯à®©à¯ நà¯à®à¯à®à®ªà¯à®ªà®à¯à®à®¤à¯"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1106,7 +1107,7 @@ msgstr "XOpenà®à®¾à®à¯à®à®¿() தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯"
msgid "Failed to parse cookie data"
msgstr "à®à¯à®à¯à®à¯ தரவ௠மாறà¯à®±à¯à®µà®¤à®¿à®²à¯ தà¯à®²à¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "'%s'à®à®à¯à®à®®à¯à®à¯à®à®ªà¯à®ªà®à¯à® à®à¯à®ªà¯à®ªà®¿à®©à¯ திறà®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
@@ -1120,12 +1121,12 @@ msgstr "à®à¯à®à¯à®à®¿ à®à®±à¯à®±à®ªà¯à®ªà®à®µà®¿à®²à¯à®²à¯. à®à®£à¯
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "தà¯à®°à®¿à®¯à®¾à®¤ தà¯à®à®°à®¿à®à¯à®à®¿à®¯à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ '%s'à®à¯à®à¯ à®à¯à®¯à¯à®¤à®¿à®à®³à¯ பà¯à®±à®ªà¯à®ªà®à¯à®à®©"
@@ -2210,39 +2211,39 @@ msgstr "à®à¯à®à¯à®à¯ தரவ௠à®à®±à¯à®± à®®à¯à®à®¿à®¯à®µà®¿à®²à¯
msgid "Not yet implemented.\n"
msgstr "à®à®©à¯à®©à¯à®®à¯ à®à¯à®¯à®²à¯à®ªà®à¯à®¤à¯à®¤à®ªà®à®µà®¿à®²à¯à®²à¯.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio daemon஠நிறà¯à®¤à¯à®¤ à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "à®à¯à®®à¯à®©à¯ பதிலளிà®à¯à® மறà¯à®à¯à®à®¿à®±à®¤à¯."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2251,7 +2252,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "autospawn பà¯à®à¯à®à¯ à®
ணà¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2262,7 +2263,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2274,15 +2275,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
@@ -2291,6 +2292,9 @@ msgstr ""
msgid "PulseAudio Sound Server"
msgstr "பளà¯à®¸à¯ à®à®à®¿à®¯à¯ à®à®²à®¿ à®à®£à®¿à®©à®¿"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "à®à®£à®¿à®©à®¿ பஸà¯à®¸à¯ à®à®£à¯à®à¯à® à®®à¯à®à®¿à®¯à®µà®¿à®²à¯à®²à¯: %s"
diff --git a/po/te.po b/po/te.po
index bf3ec2d..f28b689 100644
--- a/po/te.po
+++ b/po/te.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx.te\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-08 18:21+0530\n"
"Last-Translator: Krishna Babu K <kkrothap at redhat.com>\n"
"Language-Team: Telugu <en at li.org>\n"
@@ -21,7 +21,7 @@ msgstr ""
"\n"
"\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "à°
à°à°¤à°°à±à°à°¤ à°à°¡à°¿à°¯à±"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "à°®à±à°¡à±à°®à±"
@@ -94,241 +94,241 @@ msgstr "à°à±à°¤à±à°¤ dl à°²à±à°¡à°°à± à°à±à°à°¾à°¯à°¿à°à°à±à°à°²à±
msgid "Failed to add bind-now-loader."
msgstr "bind-now-loader à°à°¤à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "à°¸à°à°à±à°¤à°®à± %s à°ªà±à°à°¦à°¿à°¨à°¦à°¿."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "నిషà±à°à±à°°à°®à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s'నౠà°à°¨à±à°à±à°¨à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "సమà±à°¹à° '%s' à°à°¨à±à°à±à°¨à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s' (UID %lu) మరియౠసమà±à°¹à°®à± '%s' (GID %lu) à°à°¨à°¬à°¡à°¿à°¨à°µà°¿."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s' మరియౠసమà±à°¹à°®à± '%s' à°¯à±à°à±à° GID సరితà±à°à°²à±à°¦à±."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "వినియà±à°à°¦à°¾à°°à°¿ '%s' à°¯à±à°à±à° నివాస à°¡à±à°°à±à°à±à°à°°à± '%s' à°à°¾à°¦à±, వదిలివà±à°¯à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "'%s' à°¸à±à°·à±à°à°¿à°à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "సమà±à°¹ à°à°¾à°¬à°¿à°¤à°¾ మారà±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "GID మారà±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "UID మారà±à°à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "root à°
à°¨à±à°®à°¤à±à°²à± విà°à°¯à°µà°à°¤à°à°à°¾ తిసివà±à°¯à°¬à°¡à°¿à°¨à°¾à°¯à°¿."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "à° à°ªà±à°²à°¾à°à±âఫాఠనà°à°¦à± సిసà±à°à°®à± తరహా à°°à±à°¤à°¿ మదà±à°¦à°¤à±à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "à°à°¦à±à°¶ వరà±à°¸à°¨à± పారà±à°¶à± à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "à°¡à±à°®à±à°¨à± నడà±à°à±à° à°²à±à°¦à±"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "à°¡à±à°®à±à°¨à± PID %u వలౠనడà±à°à±à°à±à°¨à±à°¨à°¦à°¿"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "à°¡à±à°®à±à°¨à± à°à°à°ªà±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "à° à°ªà±à°°à±à°à±à°°à°¾à°®à± root లా నడà±à°ªà°µà°²à°¸à°¿à°à°¦à°¿ à°à°¾à°¦à± (--system à°¤à±à°²à°¿à°ªà°¿à°¤à± తపà±à°ª)"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "Root à°
à°¨à±à°®à°¤à±à°²à± à°
వసరమà±."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "--start సిసà±à°à°®à± à°¸à°à°à°µà°¾à°² à°¦à±à°µà°¾à°°à°¾ మదà±à°¦à°¤à±à°¯à°¬à°¡à°¦à±."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "సిసà±à°à°®à± à°®à±à°¡à± à°¨à°à°¦à± నడà±à°ªà±à°¤à±à°à°¦à°¿, à°
యితౠ--disallow-exit à°
మరà±à°à°²à±à°¦à±!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°à±à°à±à°¨à±à°¨à°¦à°¿, à°
యితౠ--disallow-module-loading à°
మరà±à°à°²à±à°¦à±!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°ªà±à°à±à°¨à±à°¨à°¦à°¿, బలవà°à°¤à°à°à°¾ SHM à°°à±à°¤à°¿à°¨à°¿ à°
à°à±à°¤à°¨à°®à± à°à±à°¸à±à°¤à±à°à°¦à°¿!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°à±à°à±à°¨à±à°¨à°¦à°¿, బలవà°à°¤à°à°à°¾ నిషà±à°à±à°°à°®à°£ à°µà±à°§à°¾ సమయానà±à°¨à°¿ à°
à°à±à°¤à°¨à°®à± à°à±à°¯à±à°à±à°¨à±à°¨à°¦à°¿!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "stdio à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "à°ªà±à°°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork() విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read() విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à° విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à°®à± సఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "à°à°¦à°¿ PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ à°¹à±à°¸à±à°à±: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "నిరà±à°µà°°à±à°¤à°¨ CFLAGS: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "à°¹à±à°¸à±à°à±à°¨à± నడà±à°ªà±à°à±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUలనౠà°à°¨à±à°à±à°¨à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "à°ªà±à°à± పరిమాణమౠ%lu à°¬à±à°à±à°²à±"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à± నిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿: à°
à°µà±à°¨à±"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "Valgrind మదà±à°¦à°¤à±à°¤à± నిరà±à°µà°°à±à°¤à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿: à°²à±à°¦à±"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "valgrind à°°à±à°¤à°¿à°¨à°à°¦à± నడà±à°ªà±à°à±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "à°à°ªà±à°à°¿à°®à±à°à±à°¡à± à°¬à±à°²à±à°¡à±: à°
à°µà±à°¨à±"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "à°à°ªà±à°à°¿à°®à±à°à±à°¡à± à°¬à±à°²à±à°¡à±: à°à°¾à°¦à±"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "NDEBUG నిరà±à°µà°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿, à°
à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± à°
à°à±à°¤à°¨à°®à±à°¨à°µà°¿."
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "FASTPATH నిరà±à°µà°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿, ఫాసà±à°à± పాతౠసà±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± మాతà±à°°à°®à± à°
à°à±à°¤à°¨à°®à±à°¨à°µà°¿."
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "à°
à°¨à±à°¨à°¿ à°¸à±à°¥à°¿à°°à°°à°¾à°¶à±à°²à± à°à±à°¤à°¨à°®à±à°¨à°µà°¿."
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "మిషనౠID à°ªà±à°à°¦à±à°à°à± విఫలమà±à°à°¦à°¿"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "మిషనౠID %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "à°°à°¨à±âà°à±à°®à± à°¡à±à°°à±à°à±à°à°°à±à°¨à± à°µà±à°ªà°¯à±à°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "à°¸à±à°¥à°¿à°¤à°¿ à°¡à±à°°à±à°à±à°à°°à±à°¨à± à°µà±à°ªà°¯à±à°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿ %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "సిసà±à°à°®à± à°°à±à°¤à°¿à°¨à°à°¦à± à°µà±à°ªà°¯à±à°à°¿à°à°à±à°à±à°¨à±à°¨à°¦à°¿: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -338,41 +338,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "తాà°à°¾ à°
ధిà°-à°¤à±à°µà±à°°à°¤ à°à°¾à°²à°¸à±à°à°¿à°à°²à± à°
à°à°¦à±à°¬à°¾à°à±à°²à± à°µà±à°¨à±à°¨à°¾à°¯à°¿! బానౠà°à°ªà°à±à°à±!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "మితà±à°°à°®à°¾, నౠà°à±à°°à±à°¨à°²à± à°à±à°¡à°¿à°ªà±à°¯à°¿à°à°¦à°¿! à°
ధిà°-à°¤à±à°µà±à°°à°¤ à°à°¾à°²à°¸à±à°à°à°¿à°²à°¨à± à°à±à°¤à°¨à°®à± à°à±à°¯à°®à°¨à°¿ à°¸à±à°à°¿à°à°à°¡à°®à±à°¨à°¦à°¿!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new() విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "à°¡à±à°®à±à°¨à± సిదà±à°¦à°®à±à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "à°à°µà°¿à°§à°®à±à°¨ మాడà±à°¯à±à°³à±à°³à± à°²à±à°¡à°µà°à±à°à°¡à°¾ à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à°®à±, పనిà°à±à°¯à±à°à°à± తిరసà±à°à°°à°¿à°à°à°¬à°¡à°¿à°à°¦à°¿."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "à°¡à±à°®à±à°¨à± à°ªà±à°°à°¾à°°à°à°à°®à± à°ªà±à°°à±à°¤à±à°¨à°¦à°¿."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "à°¡à±à°®à±à°¨à± à°®à±à°¸à°¿à°µà±à°¤ సిదà±à°¦à°®à±à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "à°¡à±à°®à±à°¨à± à°
à°à°¤à°®à±à°à±à°¯à°¬à°¡à°¿à°à°¦à°¿."
@@ -689,12 +689,12 @@ msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ à°®à±à°à±à° పరిమాణమౠ'
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] à°à±à°²à±à°²à°¨à°¿ సాదా à°¸à±à°¥à°¾à°¯à°¿ '%s'."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "à°à°à±à°¤à±à°à°°à°£ దసà±à°¤à±à°°à°®à±à°¨à± à°¤à±à°°à±à°à±à°à°à± విఫలమà±à°à°¦à°¿: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -702,13 +702,14 @@ msgstr ""
"à°¤à±à°²à±à°ªà°¬à°¡à°¿à°¨ à°
à°ªà±à°°à°®à±à°¯ à°ªà±à°°à°¾à°¸à°¾à°°à°®à°¾à°°à±à°à° మాపౠతà±à°²à±à°ªà°¬à°¡à°¿à°¨ à°
à°ªà±à°°à°®à±à°¯ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°à°®à±à°² à°à°¨à±à°¨à°¾ విà°à°¿à°¨à±à°¨ à°ªà±à°°à°¸à°¾à°°à°®à°¾à°°à±à°à°®à±à°² "
"à°¸à°à°à±à°¯à°¨à± à°à°²à°¿à°à°¿à°µà±à°à°¦à°¿."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### à°à°à±à°¤à±à°à°°à°£ దసà±à°¤à±à°°à°®à±à°¨à±à°à°¡à°¿ à°à°¦à±à°µà±à°®à±: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "root à°
à°¨à±à°®à°¤à±à°²à°¨à± à°¤à±à°¸à°¿à°µà±à°¯à±à°à±à°¨à±à°¨à°¦à°¿."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -719,7 +720,7 @@ msgstr "PulseAudio శబà±à°¦à°ªà± సిసà±à°à°®à±"
msgid "Start the PulseAudio Sound System"
msgstr "PulseAudio శబà±à°¦à°ªà± సిసà±à°à°®à±âనౠపà±à°°à°¾à°°à°à°à°¿à°à°à±à°®à±"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "à°®à±à°¨à±"
@@ -923,33 +924,33 @@ msgstr "à°ªà±à°¨ à°µà±à°¨à±à° à°à°¡à°®à°µà±à°ªà±"
msgid "Top Rear Right"
msgstr "à°ªà±à°¨ à°µà±à°¨à±à° à°à±à°¡à°¿à°µà±à°ªà±à°¨"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(à°à±à°²à±à°²à°¨à°¿)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "à°¸à±à°à±à°°à°¿à°¯à±"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "సరà±à°à°¡à± 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "సరà±à°à°¡à± 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "సరà±à°à°¡à± 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "సరà±à°à°¡à± 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "సరà±à°à°¡à± 7.1"
@@ -1053,27 +1054,27 @@ msgstr "తపà±à°ªà°¿à°ªà±à°¯à°¿à°¨ యిà°à°ªà±à°²à°¿à°®à±à°à°à±à°·
msgid "Client forked"
msgstr "à°à°à±à°·à°¿à°¦à°¾à°°à°¿ à°ªà±à°°à±à°à± à°à±à°¸à°¿à°¨"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1086,7 +1087,7 @@ msgstr "XOpenDisplay() విఫలమà±à°à°¦à°¿"
msgid "Failed to parse cookie data"
msgstr "à°à±à°à± à°¡à°¾à°à°¾ పారà±à°¶à± à°à±à°¯à±à°à°à± విఫలమà±à°à°¦à°¿"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "à°à°à±à°¤à±à°à°°à°£ దసà±à°¤à±à°°à°®à± '%s' à°¤à±à°°à±à°µà±à°à°à± విఫలమà±à°à°¦à°¿: %s"
@@ -1100,12 +1101,12 @@ msgstr "à° à°à±à°à± à°²à±à°¡à°µà°²à±à°¦à±. à°²à±à°à±à°à°¡à°¾ à°
à°¨
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "à°¤à±à°²à°¿à°¯à°¨à°¿ à°ªà±à°¡à°¿à°à°¿à°à°ªà± à°à±à°°à°à± à°¸à°à°¦à±à°¶à°®à± à°¸à±à°µà±à°à°°à°¿à°à°à°¿à°à°¦à°¿ '%s'"
@@ -2186,39 +2187,39 @@ msgstr "à°à±à°à± à°¡à°¾à°à°¾ à°²à±à°¡à± à°à±à°¯à±à°à°à± విఫ
msgid "Not yet implemented.\n"
msgstr "à°à°à°à°¾ యిà°à°ªà±à°²à°¿à°®à±à°à°à± à°à±à°¯à°²à±à°¦à±\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "PulseAudio à°¡à±à°®à±à°¨à± నాశనఠà°à±à°¯à±à°à°²à± విఫలమà±à°à°¦à°¿."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "à°¡à±à°®à±à°¨à± à°¸à±à°ªà°à°¦à°¿à°à°à±à°à°²à±à°¦à±."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2227,7 +2228,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "à°à°à±à°¸à±à°ªà°¾à°¨à± తాళà°à°¨à± యాà°à±à°¸à°¿à°¸à± à°à±à°¯à°²à±à°¦à±."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2243,7 +2244,7 @@ msgstr ""
"మనమౠPOLLOUT à°
మరà±à°ªà± à°¦à±à°µà°¾à°°à°¾ à°à°¾à°à°°à±à° పరà°à°¬à°¡à°¿à°¨à°¾à°®à± -- à°à°®à±à°¨à°ªà±à°ªà°à°¿à°à°¿ snd_pcm_avail() à°
à°¨à±à°¨à°¦à°¿ 0 నౠ"
"యిసà±à°¤à±à°à°¦à°¿ à°²à±à°¦à°¾ à°µà±à°°à±à° విలà±à°µ < min_avail యిసà±à°¤à±à°à°¦à°¿."
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2260,15 +2261,15 @@ msgstr ""
"యిసà±à°¤à±à°à°¦à°¿ à°²à±à°¦à°¾ à°µà±à°°à±à° విలà±à°µ < min_avail యిసà±à°¤à±à°à°¦à°¿."
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "à°à°«à±"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "హౠఫà±à°¡à°¿à°²à°¿à°à°¿ à°ªà±à°²à±à°¬à±à°¯à°¾à°à± (A2DP)"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "à°à±à°²à°¿à°«à±à°¨à± à°¡à±à°ªà±à°²à±à°à±à°¸à± (HSP/HFP)"
@@ -2276,6 +2277,9 @@ msgstr "à°à±à°²à°¿à°«à±à°¨à± à°¡à±à°ªà±à°²à±à°à±à°¸à± (HSP/HFP)"
msgid "PulseAudio Sound Server"
msgstr "పలà±à°¸à± à°à°¡à°¿à°¯à± à°¸à±à°à°¡à± à°¸à±à°µà°¿à°"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "సిసà±à°à°®à± బసà±âà°¨à°à± à°
à°¨à±à°¸à°à°§à°¾à°¨à°®à± à°à°¾à°²à±à°à°ªà±à°¯à°¿à°à°¦à°¿: %s"
diff --git a/po/uk.po b/po/uk.po
index ebf4518..2a543b3 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-18 11:13+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor at ukr.net>\n"
"Language-Team: Ukrainian <translation at linux.org.ua>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -74,11 +74,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "ÐбÑдоване аÑдÑо"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "Ðодем"
@@ -97,92 +97,92 @@ msgstr ""
msgid "Failed to add bind-now-loader."
msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñи bind-now-loader."
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "ÐÑÑимано Ñигнал %s."
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "ÐавеÑÑÐµÐ½Ð½Ñ ÑобоÑи."
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñи коÑиÑÑÑваÑа «%s»."
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñи гÑÑÐ¿Ñ Â«%s»."
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "Ðнайдено коÑиÑÑÑваÑа «%s» (UID %lu) Ñ Ð³ÑÑÐ¿Ñ Â«%s» (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "GID коÑиÑÑÑваÑа «%s» Ñ Ð³ÑÑпи «%s» не збÑгаÑÑÑÑÑ."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ÐомаÑнÑм каÑалогом коÑиÑÑÑваÑа «%s» не Ñ Â«%s», Ð´Ð°Ð½Ñ Ð¿ÑоÑгноÑовано."
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Ðе вдалоÑÑ ÑÑвоÑиÑи «%s»: %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼ÑниÑи ÑпиÑок гÑÑп: %s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼ÑниÑи GID: %s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð¼ÑниÑи UID: %s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "ÐÑогÑама ÑÑпÑÑно позбÑлаÑÑ Ð¿Ñав доÑÑÑÐ¿Ñ ÐºÐ¾ÑиÑÑÑваÑа root."
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "ÐагалÑноÑиÑÑемний Ñежим не пÑдÑÑимÑÑÑÑÑÑ Ð½Ð° ÑÑй плаÑÑоÑмÑ."
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "СпÑоба виконаÑи setrlimit(%s, (%u, %u)) бÑла невдалоÑ: %s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "Ðе вдалоÑÑ Ð¾Ð±ÑобиÑи ÑÑдок команди."
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑлÑÐ¶Ð±Ñ Ð½Ðµ запÑÑено"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑлÑÐ¶Ð±Ñ Ð·Ð°Ð¿ÑÑено Ñк PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²ÐµÑÑиÑи ÑобоÑÑ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби: %s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -190,156 +190,156 @@ msgstr ""
"Ð¦Ñ Ð¿ÑогÑÐ°Ð¼Ñ Ð½Ðµ пÑизнаÑено Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑÐºÑ Ð²Ñд ÑÐ¼ÐµÐ½Ñ ÐºÐ¾ÑиÑÑÑваÑа root (ÑкÑо не "
"вказано паÑамеÑÑа --system)."
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "ÐоÑÑÑÐ±Ð½Ñ Ð¿Ñава доÑÑÑÐ¿Ñ ÐºÐ¾ÑиÑÑÑваÑа root."
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr ""
"ÐаÑамеÑÑ --start не пÑдÑÑимÑÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑемниÑ
екземплÑÑÑв пÑогÑами."
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, але не вÑÑановлено --disallow-exit!"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, але не вÑÑановлено --disallow-module-"
"loading!"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, пÑимÑÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑÐµÐ¶Ð¸Ð¼Ñ SHM!"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"ÐапÑÑк Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ, пÑимÑÑове Ð²Ð¸Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ ÑÐµÐ¶Ð¸Ð¼Ñ Ð¿Ð°ÑамеÑÑÑв "
"ÑаÑÑ Ð²Ð¸Ñ
Ð¾Ð´Ñ Ð·Ð° вÑдÑÑÑноÑÑÑ Ð°ÐºÑивноÑÑÑ!"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "Ðе вдалоÑÑ Ð¾ÑÑимаÑи stdio."
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "СпÑоба ÑÑвоÑÐµÐ½Ð½Ñ ÐºÐ°Ð½Ð°Ð»Ñ Ð·Ð°Ð²ÐµÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ fork() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ read() завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾: %s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "СпÑоба запÑÑÐºÑ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "Ð¤Ð¾Ð½Ð¾Ð²Ñ ÑлÑÐ¶Ð±Ñ ÑÑпÑÑно запÑÑено."
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "Це PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "ÐÑзол збиÑаннÑ: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS збиÑаннÑ: %s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "ÐапÑÑено на вÑзлÑ: %s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "Ðнайдено %u пÑоÑеÑоÑÑв."
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "РозмÑÑ ÑÑоÑÑнки доÑÑвнÑÑ %lu байÑам"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "ÐÑбÑано з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ Valgrind: Ñак"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "ÐÑбÑано з пÑдÑÑÐ¸Ð¼ÐºÐ¾Ñ Valgrind: нÑ"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "ÐапÑÑк Ñ ÑÐµÐ¶Ð¸Ð¼Ñ valgrind: %s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "ÐÑбÑано з опÑимÑзаÑÑÑÑ: Ñак"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "ÐÑбÑано з опÑимÑзаÑÑÑÑ: нÑ"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr ""
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr ""
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "СпÑоба оÑÑимаÑи ÑденÑиÑÑкаÑÐ¾Ñ ÑиÑÑеми завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "ÐденÑиÑÑкаÑÐ¾Ñ ÑиÑÑеми %s."
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "ÐденÑиÑÑкаÑÐ¾Ñ ÑиÑÑеми %s."
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "ÐаÑалог запÑÑкÑ: %s."
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "ÐаÑалог ÑÑанÑ: %s."
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "ÐапÑÑÐºÑ Ñ Ð·Ð°Ð³Ð°Ð»ÑноÑиÑÑÐµÐ¼Ð½Ð¾Ð¼Ñ ÑежимÑ: %s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -349,15 +349,15 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_pid_file_create() зазнала невдаÑÑ."
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "ÐоÑÑÑÐ¿Ð½Ñ ÑвÑÐ¶Ñ Ð²Ð¸ÑокоÑоÑÐ½Ñ ÑаймеÑи! СмаÑного!"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -365,29 +365,29 @@ msgstr ""
"ЧÑвак, ÑÐ²Ð¾Ñ ÑдÑо â лайно! ÐÑÑÑÑ Ð¿Ð°Ñани ÑекомендÑÑÑÑ Linux з ÑвÑмкненими "
"виÑокоÑоÑними ÑаймеÑами!"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ pa_core_new() зазнала невдаÑÑ."
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "Ðе вдалоÑÑ ÑнÑÑÑалÑзÑваÑи ÑÐ¾Ð½Ð¾Ð²Ñ ÑлÑжбÑ."
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"ÐапÑÑк ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби без жодного заванÑаженого модÑлÑ, ÑлÑжба не бÑде "
"пÑаÑездаÑноÑ."
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "ÐапÑÑк ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби завеÑÑено."
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "ÐнÑÑÑйовано завеÑÑÐµÐ½Ð½Ñ ÑобоÑи ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби."
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби пеÑеÑвано."
@@ -721,12 +721,12 @@ msgstr "[%s:%u] ÐекоÑекÑний ÑозмÑÑ ÑÑагменÑа «%s»."
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] ÐекоÑекÑний ÑÑÐ²ÐµÐ½Ñ nice «%s»."
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи Ñайл налаÑÑÑванÑ: %s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
msgid ""
"The specified default channel map has a different number of channels than "
"the specified default number of channels."
@@ -734,13 +734,14 @@ msgstr ""
"У вказанÑй ÑиповÑй каÑÑÑ ÐºÐ°Ð½Ð°Ð»Ñв визнаÑаÑÑÑÑÑ ÑнÑа кÑлÑкÑÑÑÑ ÐºÐ°Ð½Ð°Ð»Ñв, нÑж "
"Ñипова кÑлÑкÑÑÑÑ ÐºÐ°Ð½Ð°Ð»Ñв."
-#: ../src/daemon/daemon-conf.c:616
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ÐÑоÑиÑано з Ñайла налаÑÑÑванÑ: %s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "ÐозбÑваÑмоÑÑ Ð¿Ñав доÑÑÑÐ¿Ñ root."
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -751,7 +752,7 @@ msgstr "ÐвÑкова ÑиÑÑема PulseAudio"
msgid "Start the PulseAudio Sound System"
msgstr "ÐапÑÑÑиÑи звÑÐºÐ¾Ð²Ñ ÑиÑÑÐµÐ¼Ñ PulseAudio"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "Ðоно"
@@ -955,33 +956,33 @@ msgstr "ÐеÑÑ
нÑй заднÑй лÑвий"
msgid "Top Rear Right"
msgstr "ÐеÑÑ
нÑй заднÑй пÑавий"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "(некоÑекÑний)"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "СÑеÑео"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "Ðб'Ñмний 4.0"
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "Ðб'Ñмний 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "Ðб'Ñмний 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "Ðб'Ñмний 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "Ðб'Ñмний 7.1"
@@ -1085,27 +1086,27 @@ msgstr "ÐÑдÑÑÑÐ½Ñ ÑеалÑзаÑÑÑ"
msgid "Client forked"
msgstr "ÐлÑÑÐ½Ñ ÑозгалÑжено"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uкан. %uÐÑ"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f ÐÐ"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f ÐÐ"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f кÐ"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u Ð"
@@ -1118,7 +1119,7 @@ msgstr "СпÑоба Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ XOpenDisplay() завеÑÑилаÑÑ Ð½
msgid "Failed to parse cookie data"
msgstr "Ðе вдалоÑÑ Ð¾Ð±ÑобиÑи Ð´Ð°Ð½Ñ ÐºÑки"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "Ðе вдалоÑÑ Ð²ÑдкÑиÑи Ñайл налаÑÑÑÐ²Ð°Ð½Ð½Ñ Â«%s»: %s"
@@ -1133,12 +1134,12 @@ msgstr ""
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "ÐÑÑимано повÑÐ´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñо невÑдомий додаÑок «%s»"
@@ -2224,40 +2225,40 @@ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½ÑажиÑи Ð´Ð°Ð½Ñ ÐºÑки\n"
msgid "Not yet implemented.\n"
msgstr "Ще не ÑеалÑзовано.\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0): %s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect(): %s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr ""
"СпÑоба завеÑÑÐµÐ½Ð½Ñ ÑобоÑи ÑÐ¾Ð½Ð¾Ð²Ð¾Ñ ÑлÑжби PulseAudio завеÑÑилаÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾."
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "Фонова ÑлÑжба не вÑдповÑдаÑ."
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select(): %s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork(): %s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2266,7 +2267,7 @@ msgstr "write(): %s"
msgid "Cannot access autospawn lock."
msgstr "Ðе вдалоÑÑ Ð·Ð½ÑÑи блокÑÐ²Ð°Ð½Ð½Ñ Ð°Ð²ÑомаÑиÑного ÑозгалÑженнÑ."
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2277,7 +2278,7 @@ msgid ""
"returned 0 or another value < min_avail."
msgstr ""
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2289,15 +2290,15 @@ msgid ""
msgstr ""
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr ""
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr ""
@@ -2306,6 +2307,9 @@ msgstr ""
msgid "PulseAudio Sound Server"
msgstr "ÐвÑкова ÑиÑÑема PulseAudio"
+#~ msgid "select(): %s"
+#~ msgstr "select(): %s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "Ðе вдалоÑÑ Ð·âÑднаÑиÑÑ Ð· ÑÐ¸Ð½Ð¾Ñ ÑиÑÑеми: %s"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 90f7cca..a801f94 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio.master-tx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-05 15:09+0200\n"
+"POT-Creation-Date: 2009-08-19 04:16+0200\n"
"PO-Revision-Date: 2009-04-06 10:26+1000\n"
"Last-Translator: Leah Liu <lliu at redhat.com>\n"
"Language-Team: Simplified Chinese <zh at li.org>\n"
@@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2411
+#: ../src/modules/alsa/alsa-util.c:775 ../src/pulsecore/sink.c:2666
#, c-format
msgid "%s %s"
msgstr ""
@@ -71,11 +71,11 @@ msgid ""
"input control values>"
msgstr ""
-#: ../src/pulsecore/sink.c:2395
+#: ../src/pulsecore/sink.c:2650
msgid "Internal Audio"
msgstr "å
é¨é³é¢"
-#: ../src/pulsecore/sink.c:2400
+#: ../src/pulsecore/sink.c:2655
msgid "Modem"
msgstr "è°å¶è§£è°å¨"
@@ -91,241 +91,241 @@ msgstr "åé
æ°ç dl å è½½å¨å¤±è´¥ã"
msgid "Failed to add bind-now-loader."
msgstr "æ·»å bind-now-loader 失败ã"
-#: ../src/daemon/main.c:145
+#: ../src/daemon/main.c:141
#, c-format
msgid "Got signal %s."
msgstr "è·å¾ä¿¡å·%s"
-#: ../src/daemon/main.c:172
+#: ../src/daemon/main.c:168
msgid "Exiting."
msgstr "éåº"
-#: ../src/daemon/main.c:190
+#: ../src/daemon/main.c:186
#, c-format
msgid "Failed to find user '%s'."
msgstr "æ¾ä¸å°ç¨æ· `%s' "
-#: ../src/daemon/main.c:195
+#: ../src/daemon/main.c:191
#, c-format
msgid "Failed to find group '%s'."
msgstr "æ¾ä¸å°ç¨æ·ç» `%s'"
-#: ../src/daemon/main.c:199
+#: ../src/daemon/main.c:195
#, c-format
msgid "Found user '%s' (UID %lu) and group '%s' (GID %lu)."
msgstr "åç°ç¨æ·'%s' (UID %lu)åç»'%s' (GID %lu)."
-#: ../src/daemon/main.c:204
+#: ../src/daemon/main.c:200
#, c-format
msgid "GID of user '%s' and of group '%s' don't match."
msgstr "ç¨æ·'%s'ä¸ç»'%s'çGIDä¸å¹é
."
-#: ../src/daemon/main.c:209
+#: ../src/daemon/main.c:205
#, c-format
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "ç¨æ·'%s'ç主æ件夹ä¸æ¯'%s'ï¼å¿½ç¥ã"
-#: ../src/daemon/main.c:212 ../src/daemon/main.c:217
+#: ../src/daemon/main.c:208 ../src/daemon/main.c:213
#, c-format
msgid "Failed to create '%s': %s"
msgstr "å建'%s'å¤±è´¥ï¼ %s"
-#: ../src/daemon/main.c:224
+#: ../src/daemon/main.c:220
#, c-format
msgid "Failed to change group list: %s"
msgstr "æ´æ¹ç»å表失败ï¼%s"
-#: ../src/daemon/main.c:240
+#: ../src/daemon/main.c:236
#, c-format
msgid "Failed to change GID: %s"
msgstr "æ´æ¹GID失败ï¼%s"
-#: ../src/daemon/main.c:256
+#: ../src/daemon/main.c:252
#, c-format
msgid "Failed to change UID: %s"
msgstr "æ´æ¹UID失败ï¼%s"
-#: ../src/daemon/main.c:270
+#: ../src/daemon/main.c:266
msgid "Successfully dropped root privileges."
msgstr "æåæ¾å¼rootæéã"
-#: ../src/daemon/main.c:278
+#: ../src/daemon/main.c:274
msgid "System wide mode unsupported on this platform."
msgstr "æ¤å¹³å°ä¸æ¯æsystem-wide模å¼ã"
-#: ../src/daemon/main.c:296
+#: ../src/daemon/main.c:292
#, c-format
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败ï¼%s"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:464
msgid "Failed to parse command line."
msgstr "åæå½ä»¤è¡å¤±è´¥ã"
-#: ../src/daemon/main.c:538
+#: ../src/daemon/main.c:531
msgid "Daemon not running"
msgstr "åå°ç¨åºæ²¡æè¿è¡"
-#: ../src/daemon/main.c:540
+#: ../src/daemon/main.c:533
#, c-format
msgid "Daemon running as PID %u"
msgstr "åå°ç¨åºæ£å¨è¿è¡ï¼PID %u"
-#: ../src/daemon/main.c:550
+#: ../src/daemon/main.c:543
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ææ»åå°ç¨åºå¤±è´¥ï¼%s"
-#: ../src/daemon/main.c:568
+#: ../src/daemon/main.c:561
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ä¸åºä»¥root身份è¿è¡æ¬ç¨åºï¼é¤éæå® --systemï¼ã"
-#: ../src/daemon/main.c:570
+#: ../src/daemon/main.c:563
msgid "Root privileges required."
msgstr "éè¦ root æéã"
-#: ../src/daemon/main.c:575
+#: ../src/daemon/main.c:568
msgid "--start not supported for system instances."
msgstr "ç³»ç»å®ä¾ä¸æ¯æ --startã"
-#: ../src/daemon/main.c:580
+#: ../src/daemon/main.c:573
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-exit æªè®¾å®ï¼"
-#: ../src/daemon/main.c:583
+#: ../src/daemon/main.c:576
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-module-loading æªè®¾å®ï¼"
-#: ../src/daemon/main.c:586
+#: ../src/daemon/main.c:579
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨SHM模å¼ï¼"
-#: ../src/daemon/main.c:591
+#: ../src/daemon/main.c:584
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨éåºç©ºé²æ¶é´ï¼"
-#: ../src/daemon/main.c:618
+#: ../src/daemon/main.c:611
msgid "Failed to acquire stdio."
msgstr "è·åstdio失败ã"
-#: ../src/daemon/main.c:624
+#: ../src/daemon/main.c:617
#, c-format
msgid "pipe failed: %s"
msgstr "管é失败ï¼%s"
-#: ../src/daemon/main.c:629
+#: ../src/daemon/main.c:622
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败ï¼%s"
-#: ../src/daemon/main.c:643 ../src/utils/pacat.c:505
+#: ../src/daemon/main.c:636 ../src/utils/pacat.c:505
#, c-format
msgid "read() failed: %s"
msgstr "read()失败ï¼%s"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:642
msgid "Daemon startup failed."
msgstr "åå°ç¨åºå¯å¨å¤±è´¥ã"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:644
msgid "Daemon startup successful."
msgstr "åå°ç¨åºå¯å¨æåã"
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:721
#, c-format
msgid "This is PulseAudio %s"
msgstr "è¿æ¯ PulseAudio %s"
-#: ../src/daemon/main.c:729
+#: ../src/daemon/main.c:722
#, c-format
msgid "Compilation host: %s"
msgstr "ç¼è¯ä¸»æºï¼%s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:723
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ç¼è¯CFLAGSï¼%s"
-#: ../src/daemon/main.c:733
+#: ../src/daemon/main.c:726
#, c-format
msgid "Running on host: %s"
msgstr "æ£å¨ä¸»æºä¸è¿è¡ï¼%s"
-#: ../src/daemon/main.c:736
+#: ../src/daemon/main.c:729
#, c-format
msgid "Found %u CPUs."
msgstr "æ¾å° %u CPUã"
-#: ../src/daemon/main.c:738
+#: ../src/daemon/main.c:731
#, c-format
msgid "Page size is %lu bytes"
msgstr "页é¢å¤§å°ä¸º%luåè"
-#: ../src/daemon/main.c:741
+#: ../src/daemon/main.c:734
msgid "Compiled with Valgrind support: yes"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼æ¯"
-#: ../src/daemon/main.c:743
+#: ../src/daemon/main.c:736
msgid "Compiled with Valgrind support: no"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼å¦"
-#: ../src/daemon/main.c:746
+#: ../src/daemon/main.c:739
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "æ£å¨ä»¥valgrind模å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:749
+#: ../src/daemon/main.c:742
msgid "Optimized build: yes"
msgstr "ä¼åçæï¼æ¯"
-#: ../src/daemon/main.c:751
+#: ../src/daemon/main.c:744
msgid "Optimized build: no"
msgstr "ä¼åçæï¼å¦"
-#: ../src/daemon/main.c:755
+#: ../src/daemon/main.c:748
msgid "NDEBUG defined, all asserts disabled."
msgstr "æç» NDEBUGï¼ç¦ç¨ææ assert"
-#: ../src/daemon/main.c:757
+#: ../src/daemon/main.c:750
msgid "FASTPATH defined, only fast path asserts disabled."
msgstr "æç» FASTPATHï¼åªç¦ç¨å¿«éè·¯å¾ assertã"
-#: ../src/daemon/main.c:759
+#: ../src/daemon/main.c:752
msgid "All asserts enabled."
msgstr "å¯ç¨ææ assertã"
-#: ../src/daemon/main.c:763
+#: ../src/daemon/main.c:756
msgid "Failed to get machine ID"
msgstr "è·åmachine ID失败"
-#: ../src/daemon/main.c:766
+#: ../src/daemon/main.c:759
#, c-format
msgid "Machine ID is %s."
msgstr "machine IDæ¯%sã"
-#: ../src/daemon/main.c:770
+#: ../src/daemon/main.c:763
#, fuzzy, c-format
msgid "Session ID is %s."
msgstr "machine IDæ¯%sã"
-#: ../src/daemon/main.c:776
+#: ../src/daemon/main.c:769
#, c-format
msgid "Using runtime directory %s."
msgstr "æ£å¨ä½¿ç¨è¿è¡æ¶æ件夹%sã"
-#: ../src/daemon/main.c:781
+#: ../src/daemon/main.c:774
#, c-format
msgid "Using state directory %s."
msgstr "æ£å¨ä½¿ç¨ç¶ææ件夹%sã"
-#: ../src/daemon/main.c:784
+#: ../src/daemon/main.c:777
#, c-format
msgid "Running in system mode: %s"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:787
+#: ../src/daemon/main.c:780
msgid ""
"OK, so you are running PA in system mode. Please note that you most likely "
"shouldn't be doing that.\n"
@@ -335,41 +335,41 @@ msgid ""
"explanation why system mode is usually a bad idea."
msgstr ""
-#: ../src/daemon/main.c:804
+#: ../src/daemon/main.c:797
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败ã"
-#: ../src/daemon/main.c:814
+#: ../src/daemon/main.c:807
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "æ°é²çé«å辨ç计æ¶å¨å¼é
äºï¼å个饱ï¼"
-#: ../src/daemon/main.c:816
+#: ../src/daemon/main.c:809
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "èå
ï¼ä½ çå
æ ¸çèï¼ç°å¨æµè¡çæ¯å¯ç¨äºé«å辩ç计åå¨çLinuxï¼"
-#: ../src/daemon/main.c:834
+#: ../src/daemon/main.c:827
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败ã"
-#: ../src/daemon/main.c:896
+#: ../src/daemon/main.c:889
msgid "Failed to initialize daemon."
msgstr "åå°ç¨åºåå§å失败ã"
-#: ../src/daemon/main.c:901
+#: ../src/daemon/main.c:894
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "åå°ç¨åºå¯å¨æªå 载任ä½æ¨¡åï¼æç»å·¥ä½ã"
-#: ../src/daemon/main.c:918
+#: ../src/daemon/main.c:911
msgid "Daemon startup complete."
msgstr "åå°ç¨åºå¯å¨å®æã"
-#: ../src/daemon/main.c:924
+#: ../src/daemon/main.c:917
msgid "Daemon shutdown initiated."
msgstr "å¼å§å
³éåå°ç¨åºã"
-#: ../src/daemon/main.c:946
+#: ../src/daemon/main.c:939
msgid "Daemon terminated."
msgstr "åå°ç¨åºå·²ç»æ¢ã"
@@ -670,24 +670,25 @@ msgstr "[%s:%u] æ æçå段大å°'%s'ã"
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] æ æçnice level '%s'ã"
-#: ../src/daemon/daemon-conf.c:524
+#: ../src/daemon/daemon-conf.c:530
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "æå¼é
ç½®æ件失败ï¼%s"
-#: ../src/daemon/daemon-conf.c:540
+#: ../src/daemon/daemon-conf.c:546
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
+#: ../src/daemon/daemon-conf.c:622
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ä»é
ç½®æ件读åï¼%s ###\n"
-#: ../src/daemon/caps.c:65
-msgid "Dropping root privileges."
+#: ../src/daemon/caps.c:62
+#, fuzzy
+msgid "Cleaning up privileges."
msgstr "æ£å¨åæ¶ root ç¹æã"
#: ../src/daemon/pulseaudio.desktop.in.h:1
@@ -698,7 +699,7 @@ msgstr "PulseAudio 声é³ç³»ç»"
msgid "Start the PulseAudio Sound System"
msgstr "å¯å¨ PulseAudio 声é³ç³»ç»"
-#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:747
+#: ../src/pulse/channelmap.c:105 ../src/pulse/channelmap.c:757
msgid "Mono"
msgstr "å声é"
@@ -902,33 +903,33 @@ msgstr "ä¸å·¦å"
msgid "Top Rear Right"
msgstr "ä¸å³å"
-#: ../src/pulse/channelmap.c:478 ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:239 ../src/pulse/volume.c:265
-#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:315
+#: ../src/pulse/channelmap.c:484 ../src/pulse/sample.c:171
+#: ../src/pulse/volume.c:285 ../src/pulse/volume.c:311
+#: ../src/pulse/volume.c:331 ../src/pulse/volume.c:361
msgid "(invalid)"
msgstr "ï¼æ æï¼"
-#: ../src/pulse/channelmap.c:751
+#: ../src/pulse/channelmap.c:761
msgid "Stereo"
msgstr "ç«ä½å£°"
-#: ../src/pulse/channelmap.c:756
+#: ../src/pulse/channelmap.c:766
msgid "Surround 4.0"
msgstr "ç¯ç» 4.0 "
-#: ../src/pulse/channelmap.c:762
+#: ../src/pulse/channelmap.c:772
msgid "Surround 4.1"
msgstr "ç¯ç» 4.1"
-#: ../src/pulse/channelmap.c:768
+#: ../src/pulse/channelmap.c:778
msgid "Surround 5.0"
msgstr "ç¯ç» 5.0"
-#: ../src/pulse/channelmap.c:774
+#: ../src/pulse/channelmap.c:784
msgid "Surround 5.1"
msgstr "ç¯ç» 5.1"
-#: ../src/pulse/channelmap.c:781
+#: ../src/pulse/channelmap.c:791
msgid "Surround 7.1"
msgstr "ç¯ç» 7.1"
@@ -1032,27 +1033,27 @@ msgstr "缺å°é¨ç½²"
msgid "Client forked"
msgstr "客æ·ç«¯åæ¯"
-#: ../src/pulse/sample.c:169
+#: ../src/pulse/sample.c:173
#, c-format
msgid "%s %uch %uHz"
msgstr "%s %uch %uHz"
-#: ../src/pulse/sample.c:181
+#: ../src/pulse/sample.c:185
#, c-format
msgid "%0.1f GiB"
msgstr "%0.1f GiB"
-#: ../src/pulse/sample.c:183
+#: ../src/pulse/sample.c:187
#, c-format
msgid "%0.1f MiB"
msgstr "%0.1f MiB"
-#: ../src/pulse/sample.c:185
+#: ../src/pulse/sample.c:189
#, c-format
msgid "%0.1f KiB"
msgstr "%0.1f KiB"
-#: ../src/pulse/sample.c:187
+#: ../src/pulse/sample.c:191
#, c-format
msgid "%u B"
msgstr "%u B"
@@ -1065,7 +1066,7 @@ msgstr "XOpenDisplay()失败"
msgid "Failed to parse cookie data"
msgstr "cookieæ°æ®åæ失败"
-#: ../src/pulse/client-conf.c:110
+#: ../src/pulse/client-conf.c:111
#, c-format
msgid "Failed to open configuration file '%s': %s"
msgstr "æå¼é
ç½®æ件'%s'失败ï¼%s"
@@ -1079,12 +1080,12 @@ msgstr "没æå è½½cookieãå°è¯ä¸å è½½cookieè¿è¡è¿æ¥ã"
msgid "fork(): %s"
msgstr "fork()ï¼%s"
-#: ../src/pulse/context.c:745
+#: ../src/pulse/context.c:748
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid()ï¼%s"
-#: ../src/pulse/context.c:1432
+#: ../src/pulse/context.c:1435
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "æ¶å°æªç¥æ©å±'%s'çä¿¡æ¯"
@@ -2145,39 +2146,39 @@ msgstr "å è½½cookieæ°æ®å¤±è´¥\n"
msgid "Not yet implemented.\n"
msgstr "å°æªå®ç°ã\n"
-#: ../src/utils/pacmd.c:61
+#: ../src/utils/pacmd.c:69
msgid "No PulseAudio daemon running, or not running as session daemon."
msgstr ""
-#: ../src/utils/pacmd.c:66
+#: ../src/utils/pacmd.c:74
#, c-format
msgid "socket(PF_UNIX, SOCK_STREAM, 0): %s"
msgstr "socket(PF_UNIX, SOCK_STREAM, 0)ï¼%s"
-#: ../src/utils/pacmd.c:83
+#: ../src/utils/pacmd.c:91
#, c-format
msgid "connect(): %s"
msgstr "connect()ï¼%s"
-#: ../src/utils/pacmd.c:91
+#: ../src/utils/pacmd.c:99
msgid "Failed to kill PulseAudio daemon."
msgstr "ææ»PulseAudioåå°ç¨åºå¤±è´¥ã"
-#: ../src/utils/pacmd.c:99
+#: ../src/utils/pacmd.c:107
msgid "Daemon not responding."
msgstr "åå°ç¨åºæªååºã"
-#: ../src/utils/pacmd.c:146
-#, c-format
-msgid "select(): %s"
-msgstr "select()ï¼%s"
+#: ../src/utils/pacmd.c:161
+#, fuzzy, c-format
+msgid "poll(): %s"
+msgstr "fork()ï¼%s"
-#: ../src/utils/pacmd.c:156 ../src/utils/pacmd.c:173
+#: ../src/utils/pacmd.c:171 ../src/utils/pacmd.c:188
#, c-format
msgid "read(): %s"
msgstr "read()ï¼%s"
-#: ../src/utils/pacmd.c:189 ../src/utils/pacmd.c:203
+#: ../src/utils/pacmd.c:207 ../src/utils/pacmd.c:223
#, c-format
msgid "write(): %s"
msgstr "write()ï¼%s"
@@ -2186,7 +2187,7 @@ msgstr "write()ï¼%s"
msgid "Cannot access autospawn lock."
msgstr "ä¸è½è®¿é®autospawnéã"
-#: ../src/modules/alsa/alsa-sink.c:449 ../src/modules/alsa/alsa-sink.c:606
+#: ../src/modules/alsa/alsa-sink.c:451 ../src/modules/alsa/alsa-sink.c:608
#, c-format
msgid ""
"ALSA woke us up to write new data to the device, but there was actually "
@@ -2202,7 +2203,7 @@ msgstr ""
"æéæ们设置 POLLOUT -- ä½ç»ææ¯ snd_pcm_avail() è¿å 0 æè
å¦ä¸ä¸ªå°äºæå°å¯"
"ç¨å¼çæ°å¼ã"
-#: ../src/modules/alsa/alsa-source.c:429 ../src/modules/alsa/alsa-source.c:578
+#: ../src/modules/alsa/alsa-source.c:431 ../src/modules/alsa/alsa-source.c:580
#, c-format
msgid ""
"ALSA woke us up to read new data from the device, but there was actually "
@@ -2219,15 +2220,15 @@ msgstr ""
"ç¨å¼çæ°å¼ã"
#: ../src/modules/alsa/module-alsa-card.c:152
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2065
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2070
msgid "Off"
msgstr "å
³é"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2035
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2040
msgid "High Fidelity Playback (A2DP)"
msgstr "é«ä¿çåæ¾ï¼A2DPï¼"
-#: ../src/modules/bluetooth/module-bluetooth-device.c:2050
+#: ../src/modules/bluetooth/module-bluetooth-device.c:2055
msgid "Telephony Duplex (HSP/HFP)"
msgstr "åå·¥çµè¯ï¼HSP/HFPï¼"
@@ -2235,6 +2236,9 @@ msgstr "åå·¥çµè¯ï¼HSP/HFPï¼"
msgid "PulseAudio Sound Server"
msgstr "PulseAudio 声é³æå¡å¨"
+#~ msgid "select(): %s"
+#~ msgstr "select()ï¼%s"
+
#~ msgid "Cannot connect to system bus: %s"
#~ msgstr "æ æ³è¿æ¥å°ç³»ç»æ»çº¿ï¼%s"
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list