[pulseaudio-commits] [SCM] PulseAudio Sound Server branch, master-tx, updated. v0.9.15-test2-135-g7126392
Lennart Poettering
gitmailer-noreply at 0pointer.de
Tue Feb 24 02:39:30 PST 2009
This is an automated email from the git hooks/post-receive script. It was
generated because of a push to the "PulseAudio Sound Server" repository.
The master-tx branch has been updated
from b063e53c9c93a7cee5fc2d12d438f905cca25b8d (commit)
- Log -----------------------------------------------------------------
7126392... ignore tags file
07a45c7... run make update-po
364786e... Merge commit 'origin/master-tx'
8314858... set reserve interface application device name
03ac71b... don't put both the card and the pcm name in the description of a device if one contains the other
ba3c766... update reserve.c from upstream git
c341010... implement device reservation scheme
3c73025... in case alsa lies to use don't spin forever
ec9f8f1... if ALSA gives us nonsensical data at least try to fix it up a little
9eb5070... introduce new well-known role 'a11y'
fb49399... Merge commit 'coling/master'
c73887d... update gitignore
9372733... Make .desktop and .policy file in src/daemon translatable
1ddf64a... Make pulseaudio.desktop and org.pulseaudio.policy translatable.
998aa40... fix handling of stereo
e0b5507... it's probably more appropriate to return the configured latency instead of the actual latency
385a560... complete esd suspend/resume implementation
2e9479b... implement esd sample panning. closes #428
73c763c... set esound.byte_order property
5fa3f0c... allow scache entries to have arbitrary names
023ba89... use pa_alsa_safe_delay() where appropriate
33601af... print driver name when we encounter driver bugs
557a90c... add new wrapper pa_alsa_safe_delay() around snd_pcm_delay()
5cc9d97... add new function pa_alsa_get_driver_name_by_pcm()
2a0d252... Add the module dir to the libpulse pkgconfig file (needed for paprefs)
4ebc6cf... Remove references to trademarked terms.
3bc60ca... a couple of boring updates
3bccb70... Allow passing a NULL proplist to pa_xxxx_update_proplist() to just fire a notification
e335b3d... prepare test for tracking down ens1371 issue
2d9ae49... rework suspending/resuming
504384a... initialize selem index
194d899... make sure we don't choke on overly long lines in .desktop files
edfa39a... make sure we don't choke on PULSE_PROP_OVERRIDE
77779ea... rework logging to make it more modular
9b74afc... make string translatable (fixes #483)
fa5e10f... fix wording, closes #484
1a45569... prefer profiles that match the default channel map
14ee8d4... print warnings about driver bugs at most once
4505bc9... introduce default channel map in addition to the default sample spec
27bfa60... add new property PA_PROP_APPLICATION_PROCESS_SESSION_ID and initialize it by default
2d0c68a... check for ENABLE_LEGACY_RUNTIME_DIR with #ifdef, not #if
e4e6e28... split off foreign code into a convenience library to make gcc warnings go away
4c3648a... tell gcc to ignore invalid gtk header files
ed67b07... simplify some code
9f89907... bluetooth: fix suspend on a2dp (to do on HSP non SCO over PCM)
-----------------------------------------------------------------------
Summary of changes:
libpulse.pc.in | 1 +
man/pulse-daemon.conf.5.xml.in | 4 +
po/.gitignore | 1 +
po/POTFILES.in | 2 +
po/ca.po | 351 +++++----
po/cs.po | 354 +++++----
po/de.po | 362 +++++----
po/el.po | 327 +++++---
po/es.po | 355 +++++----
po/fi.po | 330 +++++---
po/fr.po | 357 +++++----
po/it.po | 871 +++++++++++++-------
po/pl.po | 362 +++++----
po/pt_BR.po | 355 +++++----
po/sv.po | 334 +++++---
po/zh_CN.po | 351 +++++----
src/.gitignore | 2 +
src/Makefile.am | 42 +-
src/daemon/.gitignore | 2 +
src/daemon/cmdline.c | 6 +-
src/daemon/daemon-conf.c | 223 +++---
src/daemon/daemon-conf.h | 5 +-
src/daemon/daemon.conf.in | 1 +
src/daemon/main.c | 21 +-
....pulseaudio.policy => org.pulseaudio.policy.in} | 8 +-
.../{pulseaudio.desktop => pulseaudio.desktop.in} | 4 +-
src/modules/alsa/alsa-sink.c | 148 ++++-
src/modules/alsa/alsa-source.c | 143 +++-
src/modules/alsa/alsa-util.c | 123 +++-
src/modules/alsa/alsa-util.h | 5 +
src/modules/alsa/module-alsa-card.c | 52 +-
src/modules/bluetooth/module-bluetooth-device.c | 188 +++--
src/modules/module-augment-properties.c | 2 +
src/modules/module-combine.c | 3 +-
src/modules/module-jack-sink.c | 10 +-
src/modules/module-jack-source.c | 10 +-
src/modules/module-null-sink.c | 1 +
src/modules/module-pipe-sink.c | 1 +
src/modules/module-pipe-source.c | 1 +
src/modules/module-raop-discover.c | 6 +-
src/modules/module-raop-sink.c | 6 +-
src/modules/module-tunnel.c | 1 +
src/modules/module-zeroconf-discover.c | 2 +-
src/modules/oss/module-oss.c | 1 +
src/modules/reserve-wrap.c | 168 ++++
src/{pulsecore/bitset.h => modules/reserve-wrap.h} | 21 +-
src/modules/reserve.c | 635 ++++++++++++++
src/modules/reserve.h | 68 ++
src/pulse/context.c | 4 +-
src/pulse/introspect.c | 5 +
src/pulse/introspect.h | 1 +
src/pulse/proplist.h | 5 +-
src/pulsecore/cli-command.c | 13 +-
src/pulsecore/client.c | 7 +-
src/pulsecore/conf-parser.c | 4 +-
src/pulsecore/core.c | 1 +
src/pulsecore/core.h | 1 +
src/pulsecore/log.c | 197 +++--
src/pulsecore/log.h | 44 +-
src/pulsecore/modargs.c | 20 +-
src/pulsecore/namereg.c | 6 +-
src/pulsecore/proplist-util.c | 16 +-
src/pulsecore/protocol-esound.c | 154 +++-
src/pulsecore/protocol-native.c | 3 +
src/pulsecore/rtpoll.c | 77 +-
src/pulsecore/sink-input.c | 4 +-
src/pulsecore/source-output.c | 4 +-
src/tests/alsa-time-test.c | 27 +-
src/tests/envelope-test.c | 2 +-
src/tests/gtk-test.c | 2 +
src/tests/memblockq-test.c | 2 +-
src/tests/mix-test.c | 2 +-
src/tests/remix-test.c | 2 +-
src/tests/resampler-test.c | 2 +-
src/utils/pactl.c | 23 +-
75 files changed, 4897 insertions(+), 2357 deletions(-)
create mode 100644 src/daemon/.gitignore
rename src/daemon/{org.pulseaudio.policy => org.pulseaudio.policy.in} (79%)
rename src/daemon/{pulseaudio.desktop => pulseaudio.desktop.in} (63%)
create mode 100644 src/modules/reserve-wrap.c
copy src/{pulsecore/bitset.h => modules/reserve-wrap.h} (63%)
create mode 100644 src/modules/reserve.c
create mode 100644 src/modules/reserve.h
-----------------------------------------------------------------------
commit 9f89907bfa671a5d924c3fe1acd1ea433a87fc71
Author: Marc-André Lureau <marc-andre.lureau at nokia.com>
Date: Tue Feb 17 12:59:34 2009 +0200
bluetooth: fix suspend on a2dp (to do on HSP non SCO over PCM)
- s/setup_stream_fd/start_stream_fd
- introduce stop_stream_fd to suspend properly the stream_fd (does
not seem necessary when shuting down)
- move {start,stop}_stream_fd to IO thread, it is also a good idea
because it takes about 1s to setup.
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index ac8344f..559d95b 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -653,7 +653,8 @@ static int set_conf(struct userdata *u) {
return 0;
}
-static int setup_stream_fd(struct userdata *u) {
+/* from IO thread */
+static int start_stream_fd(struct userdata *u) {
union {
bt_audio_msg_header_t rsp;
struct bt_start_stream_req start_req;
@@ -662,8 +663,11 @@ static int setup_stream_fd(struct userdata *u) {
bt_audio_error_t error;
uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
} msg;
+ struct pollfd *pollfd;
pa_assert(u);
+ pa_assert(u->rtpoll);
+ pa_assert(!u->rtpoll_item);
pa_assert(u->stream_fd < 0);
memset(msg.buf, 0, BT_SUGGESTED_BUFFER_SIZE);
@@ -691,6 +695,47 @@ static int setup_stream_fd(struct userdata *u) {
pa_make_fd_nonblock(u->stream_fd);
pa_make_socket_low_delay(u->stream_fd);
+ u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
+ pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
+ pollfd->fd = u->stream_fd;
+ pollfd->events = pollfd->revents = 0;
+
+ return 0;
+}
+
+/* from IO thread */
+static int stop_stream_fd(struct userdata *u) {
+ union {
+ bt_audio_msg_header_t rsp;
+ struct bt_stop_stream_req start_req;
+ struct bt_stop_stream_rsp start_rsp;
+ bt_audio_error_t error;
+ uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
+ } msg;
+
+ pa_assert(u);
+ pa_assert(u->rtpoll);
+ pa_assert(u->rtpoll_item);
+ pa_assert(u->stream_fd >= 0);
+
+ /* FIXME: HSP, only when sink&source suspended */
+ pa_rtpoll_item_free(u->rtpoll_item);
+ u->rtpoll_item = NULL;
+
+ memset(msg.buf, 0, BT_SUGGESTED_BUFFER_SIZE);
+ msg.start_req.h.type = BT_REQUEST;
+ msg.start_req.h.name = BT_STOP_STREAM;
+ msg.start_req.h.length = sizeof(msg.start_req);
+
+ if (service_send(u, &msg.start_req.h) < 0)
+ return -1;
+
+ if (service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
+ return -1;
+
+ pa_close(u->stream_fd);
+ u->stream_fd = -1;
+
return 0;
}
@@ -707,12 +752,19 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_SUSPENDED:
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
+
+ stop_stream_fd(u); /* FIXME: return value */
+
break;
case PA_SINK_IDLE:
case PA_SINK_RUNNING:
- if (!PA_SINK_IS_OPENED(u->sink->thread_info.state))
- u->started_at = pa_rtclock_usec();
+ if (PA_SINK_IS_OPENED(u->sink->thread_info.state))
+ break;
+
+ if (u->rtpoll_item == NULL)
+ start_stream_fd(u); /* FIXME: return value */
+ u->started_at = pa_rtclock_usec();
break;
@@ -994,6 +1046,9 @@ static void thread_func(void *userdata) {
if (u->core->realtime_scheduling)
pa_make_realtime(u->core->realtime_priority);
+ if (start_stream_fd(u) < 0)
+ goto fail;
+
pa_thread_mq_install(&u->thread_mq);
pa_rtpoll_install(u->rtpoll);
@@ -1074,12 +1129,18 @@ static void thread_func(void *userdata) {
pollfd->events = (short) (((u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state) && !writable) ? POLLOUT : 0) |
(u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state) ? POLLIN : 0));
+ poll_run:
if ((ret = pa_rtpoll_run(u->rtpoll, TRUE)) < 0)
goto fail;
if (ret == 0)
goto finish;
+ if (!u->rtpoll_item) {
+ pa_rtpoll_set_timer_disabled(u->rtpoll);
+ goto poll_run;
+ }
+
pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
if (pollfd->revents & ~(POLLOUT|POLLIN)) {
@@ -1463,9 +1524,6 @@ static int setup_bt(struct userdata *u) {
return 0;
}
- if (setup_stream_fd(u) < 0)
- return -1;
-
pa_log_debug("Got the stream socket");
return 0;
@@ -1533,8 +1591,6 @@ static void stop_thread(struct userdata *u) {
}
static int start_thread(struct userdata *u) {
- struct pollfd *pollfd;
-
pa_assert(u);
pa_assert(!u->thread);
pa_assert(!u->rtpoll);
@@ -1549,11 +1605,6 @@ static int start_thread(struct userdata *u) {
u->rtpoll = pa_rtpoll_new();
pa_thread_mq_init(&u->thread_mq, u->core->mainloop, u->rtpoll);
- u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1);
- pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
- pollfd->fd = u->stream_fd;
- pollfd->events = pollfd->revents = 0;
-
if (!(u->thread = pa_thread_new(thread_func, u))) {
pa_log_error("Failed to create IO thread");
stop_thread(u);
commit ed67b07c4189e33223f1fb981a519a1af2992ebc
Author: Lennart Poettering <lennart at poettering.net>
Date: Fri Feb 20 21:39:46 2009 +0100
simplify some code
diff --git a/src/pulsecore/rtpoll.c b/src/pulsecore/rtpoll.c
index 01dfd62..aa8ca32 100644
--- a/src/pulsecore/rtpoll.c
+++ b/src/pulsecore/rtpoll.c
@@ -478,59 +478,56 @@ static void update_timer(pa_rtpoll *p) {
#ifdef HAVE_PPOLL
#ifdef __linux__
- if (!p->dont_use_ppoll) {
+ if (p->dont_use_ppoll)
+ return;
#endif
- if (p->timer == (timer_t) -1) {
- struct sigevent se;
-
- memset(&se, 0, sizeof(se));
- se.sigev_notify = SIGEV_SIGNAL;
- se.sigev_signo = p->rtsig;
+ if (p->timer == (timer_t) -1) {
+ struct sigevent se;
- if (timer_create(CLOCK_MONOTONIC, &se, &p->timer) < 0)
- if (timer_create(CLOCK_REALTIME, &se, &p->timer) < 0) {
- pa_log_warn("Failed to allocate POSIX timer: %s", pa_cstrerror(errno));
- p->timer = (timer_t) -1;
- }
- }
+ memset(&se, 0, sizeof(se));
+ se.sigev_notify = SIGEV_SIGNAL;
+ se.sigev_signo = p->rtsig;
- if (p->timer != (timer_t) -1) {
- struct itimerspec its;
- struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
- sigset_t ss;
+ if (timer_create(CLOCK_MONOTONIC, &se, &p->timer) < 0)
+ if (timer_create(CLOCK_REALTIME, &se, &p->timer) < 0) {
+ pa_log_warn("Failed to allocate POSIX timer: %s", pa_cstrerror(errno));
+ p->timer = (timer_t) -1;
+ }
+ }
- if (p->timer_armed) {
- /* First disarm timer */
- memset(&its, 0, sizeof(its));
- pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
+ if (p->timer != (timer_t) -1) {
+ struct itimerspec its;
+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
+ sigset_t ss;
- /* Remove a signal that might be waiting in the signal q */
- pa_assert_se(sigemptyset(&ss) == 0);
- pa_assert_se(sigaddset(&ss, p->rtsig) == 0);
- sigtimedwait(&ss, NULL, &ts);
- }
+ if (p->timer_armed) {
+ /* First disarm timer */
+ memset(&its, 0, sizeof(its));
+ pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
- /* And install the new timer */
- if (p->timer_enabled) {
- memset(&its, 0, sizeof(its));
+ /* Remove a signal that might be waiting in the signal q */
+ pa_assert_se(sigemptyset(&ss) == 0);
+ pa_assert_se(sigaddset(&ss, p->rtsig) == 0);
+ sigtimedwait(&ss, NULL, &ts);
+ }
- its.it_value.tv_sec = p->next_elapse.tv_sec;
- its.it_value.tv_nsec = p->next_elapse.tv_usec*1000;
+ /* And install the new timer */
+ if (p->timer_enabled) {
+ memset(&its, 0, sizeof(its));
- /* Make sure that 0,0 is not understood as
- * "disarming" */
- if (its.it_value.tv_sec == 0 && its.it_value.tv_nsec == 0)
- its.it_value.tv_nsec = 1;
- pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
- }
+ its.it_value.tv_sec = p->next_elapse.tv_sec;
+ its.it_value.tv_nsec = p->next_elapse.tv_usec*1000;
- p->timer_armed = p->timer_enabled;
+ /* Make sure that 0,0 is not understood as
+ * "disarming" */
+ if (its.it_value.tv_sec == 0 && its.it_value.tv_nsec == 0)
+ its.it_value.tv_nsec = 1;
+ pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
}
-#ifdef __linux__
+ p->timer_armed = p->timer_enabled;
}
-#endif
#endif
}
commit 4c3648aea3d76a3050aa5e534cf588bf60650d9e
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 04:12:52 2009 +0100
tell gcc to ignore invalid gtk header files
diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c
index bdae0e6..d78eac0 100644
--- a/src/pulsecore/proplist-util.c
+++ b/src/pulsecore/proplist-util.c
@@ -48,6 +48,7 @@ static G_CONST_RETURN gchar* _g_get_application_name(void) PA_GCC_WEAKREF(g_get_
#endif
#if defined(HAVE_GTK) && defined(PA_GCC_WEAKREF)
+#pragma GCC diagnostic ignored "-Wstrict-prototypes"
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
static G_CONST_RETURN gchar* _gtk_window_get_default_icon_name(void) PA_GCC_WEAKREF(gtk_window_get_default_icon_name);
diff --git a/src/tests/gtk-test.c b/src/tests/gtk-test.c
index a2d3e69..092ba25 100644
--- a/src/tests/gtk-test.c
+++ b/src/tests/gtk-test.c
@@ -17,6 +17,8 @@
USA.
***/
+#pragma GCC diagnostic ignored "-Wstrict-prototypes"
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
commit e4e6e28bad538f19c27837c84442a73ad0800bd7
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 04:13:41 2009 +0100
split off foreign code into a convenience library to make gcc warnings go away
diff --git a/src/Makefile.am b/src/Makefile.am
index ceafdf7..46c3d2e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -86,6 +86,7 @@ AM_LDFLAGS+=-Wl,--export-all-symbols
WINSOCK_LIBS=-lwsock32 -lws2_32 -lwininet
endif
+FOREIGN_CLFGAS = -w
MODULE_LDFLAGS = -module -disable-static -avoid-version
###################################
@@ -765,7 +766,6 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES = \
pulsecore/core.c pulsecore/core.h \
pulsecore/envelope.c pulsecore/envelope.h \
pulsecore/fdsem.c pulsecore/fdsem.h \
- pulsecore/ffmpeg/resample2.c pulsecore/ffmpeg/avcodec.h pulsecore/ffmpeg/dsputil.h \
pulsecore/g711.c pulsecore/g711.h \
pulsecore/hook-list.c pulsecore/hook-list.h \
pulsecore/ltdl-helper.c pulsecore/ltdl-helper.h \
@@ -799,7 +799,7 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES = \
libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS = $(AM_CFLAGS) $(LIBOIL_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LDFLAGS = -avoid-version
-libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSNDFILE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
+libpulsecore_ at PA_MAJORMINORMICRO@_la_LIBADD = $(AM_LIBADD) $(LIBLTDL) $(LIBSAMPLERATE_LIBS) $(LIBSNDFILE_LIBS) $(LIBSPEEX_LIBS) $(WINSOCK_LIBS) $(LIBOIL_LIBS) $(LTLIBICONV) libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la libpulsecore-foreign.la
if HAVE_X11
libpulsecore_ at PA_MAJORMINORMICRO@_la_SOURCES += pulsecore/x11wrap.c pulsecore/x11wrap.h
@@ -807,6 +807,14 @@ libpulsecore_ at PA_MAJORMINORMICRO@_la_CFLAGS += $(X11_CFLAGS)
libpulsecore_ at PA_MAJORMINORMICRO@_la_LDFLAGS += $(X11_LIBS)
endif
+# We split the foreign code off to not be annoyed by warnings we don't care about
+noinst_LTLIBRARIES = libpulsecore-foreign.la
+
+libpulsecore_foreign_la_SOURCES = \
+ pulsecore/ffmpeg/resample2.c pulsecore/ffmpeg/avcodec.h pulsecore/ffmpeg/dsputil.h
+
+libpulsecore_foreign_la_CFLAGS = $(AM_CFLAGS) -w
+
###################################
# Plug-in support libraries #
###################################
commit 2d0c68af933c8d68328d627bf0904365cdc8c86d
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 04:14:51 2009 +0100
check for ENABLE_LEGACY_RUNTIME_DIR with #ifdef, not #if
diff --git a/src/pulse/context.c b/src/pulse/context.c
index 9309c6b..62fe535 100644
--- a/src/pulse/context.c
+++ b/src/pulse/context.c
@@ -554,7 +554,7 @@ static void setup_context(pa_context *c, pa_iochannel *io) {
pa_context_unref(c);
}
-#if ENABLE_LEGACY_RUNTIME_DIR
+#ifdef ENABLE_LEGACY_RUNTIME_DIR
static char *get_old_legacy_runtime_dir(void) {
char *p, u[128];
struct stat st;
@@ -603,7 +603,7 @@ static char *get_very_old_legacy_runtime_dir(void) {
static pa_strlist *prepend_per_user(pa_strlist *l) {
char *ufn;
-#if ENABLE_LEGACY_RUNTIME_DIR
+#ifdef ENABLE_LEGACY_RUNTIME_DIR
static char *legacy_dir;
/* The very old per-user instance path (< 0.9.11). This is supported only to ease upgrades */
commit 27bfa607b90b25aa4fdefc0882091093164297a5
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 16:26:09 2009 +0100
add new property PA_PROP_APPLICATION_PROCESS_SESSION_ID and initialize it by default
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index c0c3459..7a58568 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -132,6 +132,9 @@ PA_C_DECL_BEGIN
/** For clients/streams: the D-Bus host id the application runs on. e.g. "543679e7b01393ed3e3e650047d78f6e" */
#define PA_PROP_APPLICATION_PROCESS_MACHINE_ID "application.process.machine_id"
+/** For clients/streams: an id for the login session the application runs in. On Unix the value of $XDG_SESSION_COOKIE. e.g. "543679e7b01393ed3e3e650047d78f6e-1235159798.76193-190367717" */
+#define PA_PROP_APPLICATION_PROCESS_SESSION_ID "application.process.session_id"
+
/** For devices: device string in the underlying audio layer's format. e.g. "surround51:0" */
#define PA_PROP_DEVICE_STRING "device.string"
diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c
index d78eac0..7ba2fd7 100644
--- a/src/pulsecore/proplist-util.c
+++ b/src/pulsecore/proplist-util.c
@@ -228,4 +228,14 @@ void pa_init_proplist(pa_proplist *p) {
pa_xfree(m);
}
}
+
+ if (!pa_proplist_contains(p, PA_PROP_APPLICATION_PROCESS_SESSION_ID)) {
+ const char *t;
+
+ if ((t = getenv("XDG_SESSION_COOKIE"))) {
+ char *c = pa_utf8_filter(t);
+ pa_proplist_sets(p, PA_PROP_APPLICATION_PROCESS_SESSION_ID, c);
+ pa_xfree(c);
+ }
+ }
}
commit 4505bc9cc6bb1f9206f922a992a9be0e17703df1
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 16:32:42 2009 +0100
introduce default channel map in addition to the default sample spec
diff --git a/man/pulse-daemon.conf.5.xml.in b/man/pulse-daemon.conf.5.xml.in
index 9ddcd6a..afa7ca0 100644
--- a/man/pulse-daemon.conf.5.xml.in
+++ b/man/pulse-daemon.conf.5.xml.in
@@ -388,6 +388,10 @@ USA.
<p><opt>default-sample-channels</opt> The default number of channels.</p>
</option>
+ <option>
+ <p><opt>default-channel-map</opt> The default channel map.</p>
+ </option>
+
</section>
<section name="Default Fragment Settings">
diff --git a/src/daemon/daemon-conf.c b/src/daemon/daemon-conf.c
index 7dfef27..10144ea 100644
--- a/src/daemon/daemon-conf.c
+++ b/src/daemon/daemon-conf.c
@@ -88,6 +88,7 @@ static const pa_daemon_conf default_conf = {
.default_n_fragments = 4,
.default_fragment_size_msec = 25,
.default_sample_spec = { .format = PA_SAMPLE_S16NE, .rate = 44100, .channels = 2 },
+ .default_channel_map = { .channels = 2, .map = { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT } },
.shm_size = 0
#ifdef HAVE_SYS_RESOURCE_H
,.rlimit_fsize = { .value = 0, .is_set = FALSE },
@@ -313,8 +314,14 @@ static int parse_sample_rate(const char *filename, unsigned line, const char *se
return 0;
}
+struct channel_conf_info {
+ pa_daemon_conf *conf;
+ pa_bool_t default_sample_spec_set;
+ pa_bool_t default_channel_map_set;
+};
+
static int parse_sample_channels(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
- pa_daemon_conf *c = data;
+ struct channel_conf_info *i = data;
int32_t n;
pa_assert(filename);
@@ -327,7 +334,25 @@ static int parse_sample_channels(const char *filename, unsigned line, const char
return -1;
}
- c->default_sample_spec.channels = (uint8_t) n;
+ i->conf->default_sample_spec.channels = (uint8_t) n;
+ i->default_sample_spec_set = TRUE;
+ return 0;
+}
+
+static int parse_channel_map(const char *filename, unsigned line, const char *section, const char *lvalue, const char *rvalue, void *data, void *userdata) {
+ struct channel_conf_info *i = data;
+
+ pa_assert(filename);
+ pa_assert(lvalue);
+ pa_assert(rvalue);
+ pa_assert(data);
+
+ if (!pa_channel_map_parse(&i->conf->default_channel_map, rvalue)) {
+ pa_log(_("[%s:%u] Invalid channel map '%s'."), filename, line, rvalue);
+ return -1;
+ }
+
+ i->default_channel_map_set = TRUE;
return 0;
}
@@ -406,155 +431,82 @@ static int parse_rtprio(const char *filename, unsigned line, const char *section
int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
int r = -1;
FILE *f = NULL;
- unsigned i = 0;
-
+ struct channel_conf_info ci;
pa_config_item table[] = {
- { "daemonize", pa_config_parse_bool, NULL, NULL },
- { "fail", pa_config_parse_bool, NULL, NULL },
- { "high-priority", pa_config_parse_bool, NULL, NULL },
- { "realtime-scheduling", pa_config_parse_bool, NULL, NULL },
- { "disallow-module-loading", pa_config_parse_bool, NULL, NULL },
- { "disallow-exit", pa_config_parse_bool, NULL, NULL },
- { "use-pid-file", pa_config_parse_bool, NULL, NULL },
- { "system-instance", pa_config_parse_bool, NULL, NULL },
- { "no-cpu-limit", pa_config_parse_bool, NULL, NULL },
- { "disable-shm", pa_config_parse_bool, NULL, NULL },
- { "flat-volumes", pa_config_parse_bool, NULL, NULL },
- { "exit-idle-time", pa_config_parse_int, NULL, NULL },
- { "scache-idle-time", pa_config_parse_int, NULL, NULL },
- { "realtime-priority", parse_rtprio, NULL, NULL },
- { "dl-search-path", pa_config_parse_string, NULL, NULL },
- { "default-script-file", pa_config_parse_string, NULL, NULL },
- { "log-target", parse_log_target, NULL, NULL },
- { "log-level", parse_log_level, NULL, NULL },
- { "verbose", parse_log_level, NULL, NULL },
- { "resample-method", parse_resample_method, NULL, NULL },
- { "default-sample-format", parse_sample_format, NULL, NULL },
- { "default-sample-rate", parse_sample_rate, NULL, NULL },
- { "default-sample-channels", parse_sample_channels, NULL, NULL },
- { "default-fragments", parse_fragments, NULL, NULL },
- { "default-fragment-size-msec", parse_fragment_size_msec, NULL, NULL },
- { "nice-level", parse_nice_level, NULL, NULL },
- { "disable-remixing", pa_config_parse_bool, NULL, NULL },
- { "disable-lfe-remixing", pa_config_parse_bool, NULL, NULL },
- { "load-default-script-file", pa_config_parse_bool, NULL, NULL },
- { "shm-size-bytes", pa_config_parse_size, NULL, NULL },
- { "log-meta", pa_config_parse_bool, NULL, NULL },
- { "log-time", pa_config_parse_bool, NULL, NULL },
- { "log-backtrace", pa_config_parse_unsigned, NULL, NULL },
+ { "daemonize", pa_config_parse_bool, &c->daemonize, NULL },
+ { "fail", pa_config_parse_bool, &c->fail, NULL },
+ { "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 },
+ { "disallow-exit", pa_config_parse_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 },
+ { "disable-shm", pa_config_parse_bool, &c->disable_shm, NULL },
+ { "flat-volumes", pa_config_parse_bool, &c->flat_volumes, NULL },
+ { "exit-idle-time", pa_config_parse_int, &c->exit_idle_time, NULL },
+ { "scache-idle-time", pa_config_parse_int, &c->scache_idle_time, NULL },
+ { "realtime-priority", parse_rtprio, c, NULL },
+ { "dl-search-path", pa_config_parse_string, &c->dl_search_path, NULL },
+ { "default-script-file", pa_config_parse_string, &c->default_script_file, NULL },
+ { "log-target", parse_log_target, c, NULL },
+ { "log-level", parse_log_level, c, NULL },
+ { "verbose", parse_log_level, c, NULL },
+ { "resample-method", parse_resample_method, c, NULL },
+ { "default-sample-format", parse_sample_format, c, NULL },
+ { "default-sample-rate", parse_sample_rate, c, NULL },
+ { "default-sample-channels", parse_sample_channels, &ci, NULL },
+ { "default-channel-map", parse_channel_map, &ci, NULL },
+ { "default-fragments", parse_fragments, c, NULL },
+ { "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 },
+ { "disable-lfe-remixing", pa_config_parse_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 },
+ { "log-time", pa_config_parse_bool, &c->log_time, NULL },
+ { "log-backtrace", pa_config_parse_unsigned, &c->log_backtrace, NULL },
#ifdef HAVE_SYS_RESOURCE_H
- { "rlimit-fsize", parse_rlimit, NULL, NULL },
- { "rlimit-data", parse_rlimit, NULL, NULL },
- { "rlimit-stack", parse_rlimit, NULL, NULL },
- { "rlimit-core", parse_rlimit, NULL, NULL },
- { "rlimit-rss", parse_rlimit, NULL, NULL },
+ { "rlimit-fsize", parse_rlimit, &c->rlimit_fsize, NULL },
+ { "rlimit-data", parse_rlimit, &c->rlimit_data, NULL },
+ { "rlimit-stack", parse_rlimit, &c->rlimit_stack, NULL },
+ { "rlimit-core", parse_rlimit, &c->rlimit_core, NULL },
+ { "rlimit-rss", parse_rlimit, &c->rlimit_rss, NULL },
#ifdef RLIMIT_NOFILE
- { "rlimit-nofile", parse_rlimit, NULL, NULL },
+ { "rlimit-nofile", parse_rlimit, &c->rlimit_nofile, NULL },
#endif
#ifdef RLIMIT_AS
- { "rlimit-as", parse_rlimit, NULL, NULL },
+ { "rlimit-as", parse_rlimit, &c->rlimit_as, NULL },
#endif
#ifdef RLIMIT_NPROC
- { "rlimit-nproc", parse_rlimit, NULL, NULL },
+ { "rlimit-nproc", parse_rlimit, &c->rlimit_nproc, NULL },
#endif
#ifdef RLIMIT_MEMLOCK
- { "rlimit-memlock", parse_rlimit, NULL, NULL },
+ { "rlimit-memlock", parse_rlimit, &c->rlimit_memlock, NULL },
#endif
#ifdef RLIMIT_LOCKS
- { "rlimit-locks", parse_rlimit, NULL, NULL },
+ { "rlimit-locks", parse_rlimit, &c->rlimit_locks, NULL },
#endif
#ifdef RLIMIT_SIGPENDING
- { "rlimit-sigpending", parse_rlimit, NULL, NULL },
+ { "rlimit-sigpending", parse_rlimit, &c->rlimit_sigpending, NULL },
#endif
#ifdef RLIMIT_MSGQUEUE
- { "rlimit-msgqueue", parse_rlimit, NULL, NULL },
+ { "rlimit-msgqueue", parse_rlimit, &c->rlimit_msgqueue, NULL },
#endif
#ifdef RLIMIT_NICE
- { "rlimit-nice", parse_rlimit, NULL, NULL },
+ { "rlimit-nice", parse_rlimit, &c->rlimit_nice, NULL },
#endif
#ifdef RLIMIT_RTPRIO
- { "rlimit-rtprio", parse_rlimit, NULL, NULL },
+ { "rlimit-rtprio", parse_rlimit, &c->rlimit_rtprio, NULL },
#endif
#ifdef RLIMIT_RTTIME
- { "rlimit-rttime", parse_rlimit, NULL, NULL },
+ { "rlimit-rttime", parse_rlimit, &c->rlimit_rttime, NULL },
#endif
#endif
{ NULL, NULL, NULL, NULL },
};
- table[i++].data = &c->daemonize;
- table[i++].data = &c->fail;
- table[i++].data = &c->high_priority;
- table[i++].data = &c->realtime_scheduling;
- table[i++].data = &c->disallow_module_loading;
- table[i++].data = &c->disallow_exit;
- table[i++].data = &c->use_pid_file;
- table[i++].data = &c->system_instance;
- table[i++].data = &c->no_cpu_limit;
- table[i++].data = &c->disable_shm;
- table[i++].data = &c->flat_volumes;
- table[i++].data = &c->exit_idle_time;
- table[i++].data = &c->scache_idle_time;
- table[i++].data = c;
- table[i++].data = &c->dl_search_path;
- table[i++].data = &c->default_script_file;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = c;
- table[i++].data = &c->disable_remixing;
- table[i++].data = &c->disable_lfe_remixing;
- table[i++].data = &c->load_default_script_file;
- table[i++].data = &c->shm_size;
- table[i++].data = &c->log_meta;
- table[i++].data = &c->log_time;
- table[i++].data = &c->log_backtrace;
-#ifdef HAVE_SYS_RESOURCE_H
- table[i++].data = &c->rlimit_fsize;
- table[i++].data = &c->rlimit_data;
- table[i++].data = &c->rlimit_stack;
- table[i++].data = &c->rlimit_core;
- table[i++].data = &c->rlimit_rss;
-#ifdef RLIMIT_NOFILE
- table[i++].data = &c->rlimit_nofile;
-#endif
-#ifdef RLIMIT_AS
- table[i++].data = &c->rlimit_as;
-#endif
-#ifdef RLIMIT_NPROC
- table[i++].data = &c->rlimit_nproc;
-#endif
-#ifdef RLIMIT_MEMLOCK
- table[i++].data = &c->rlimit_memlock;
-#endif
-#ifdef RLIMIT_LOCKS
- table[i++].data = &c->rlimit_locks;
-#endif
-#ifdef RLIMIT_SIGPENDING
- table[i++].data = &c->rlimit_sigpending;
-#endif
-#ifdef RLIMIT_MSGQUEUE
- table[i++].data = &c->rlimit_msgqueue;
-#endif
-#ifdef RLIMIT_NICE
- table[i++].data = &c->rlimit_nice;
-#endif
-#ifdef RLIMIT_RTPRIO
- table[i++].data = &c->rlimit_rtprio;
-#endif
-#ifdef RLIMIT_RTTIME
- table[i++].data = &c->rlimit_rttime;
-#endif
-#endif
-
- pa_assert(i == PA_ELEMENTSOF(table)-1);
-
pa_xfree(c->config_file);
c->config_file = NULL;
@@ -567,8 +519,27 @@ int pa_daemon_conf_load(pa_daemon_conf *c, const char *filename) {
goto finish;
}
+ ci.default_channel_map_set = ci.default_sample_spec_set = FALSE;
+ ci.conf = c;
+
r = f ? pa_config_parse(c->config_file, f, table, NULL) : 0;
+ if (r >= 0) {
+
+ /* Make sure that channel map and sample spec fit together */
+
+ if (ci.default_sample_spec_set &&
+ ci.default_channel_map_set &&
+ c->default_channel_map.channels != c->default_sample_spec.channels) {
+ pa_log_error(_("The specified default channel map has a different number of channels than the specified default number of channels."));
+ r = -1;
+ goto finish;
+ } else if (ci.default_sample_spec_set)
+ pa_channel_map_init_extend(&c->default_channel_map, c->default_sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
+ else if (ci.default_channel_map_set)
+ c->default_sample_spec.channels = c->default_channel_map.channels;
+ }
+
finish:
if (f)
fclose(f);
@@ -631,6 +602,7 @@ static const char* const log_level_to_string[] = {
char *pa_daemon_conf_dump(pa_daemon_conf *c) {
pa_strbuf *s;
+ char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
pa_assert(c);
@@ -667,6 +639,7 @@ char *pa_daemon_conf_dump(pa_daemon_conf *c) {
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);
+ pa_strbuf_printf(s, "default-channel-map = %s\n", pa_channel_map_snprint(cm, sizeof(cm), &c->default_channel_map));
pa_strbuf_printf(s, "default-fragments = %u\n", c->default_n_fragments);
pa_strbuf_printf(s, "default-fragment-size-msec = %u\n", c->default_fragment_size_msec);
pa_strbuf_printf(s, "shm-size-bytes = %lu\n", (unsigned long) c->shm_size);
diff --git a/src/daemon/daemon-conf.h b/src/daemon/daemon-conf.h
index aa9d298..9331280 100644
--- a/src/daemon/daemon-conf.h
+++ b/src/daemon/daemon-conf.h
@@ -23,10 +23,12 @@
USA.
***/
+#include <pulse/sample.h>
+#include <pulse/channelmap.h>
+
#include <pulsecore/log.h>
#include <pulsecore/macro.h>
#include <pulsecore/core-util.h>
-#include <pulse/sample.h>
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
@@ -121,6 +123,7 @@ typedef struct pa_daemon_conf {
unsigned default_n_fragments, default_fragment_size_msec;
pa_sample_spec default_sample_spec;
+ pa_channel_map default_channel_map;
size_t shm_size;
} pa_daemon_conf;
diff --git a/src/daemon/daemon.conf.in b/src/daemon/daemon.conf.in
index 69d17f2..fcd2513 100644
--- a/src/daemon/daemon.conf.in
+++ b/src/daemon/daemon.conf.in
@@ -76,6 +76,7 @@
; default-sample-format = s16le
; default-sample-rate = 44100
; default-sample-channels = 2
+; default-channel-map = front-left,front-right
; default-fragments = 4
; default-fragment-size-msec = 25
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 5f94ec6..d176f45 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -908,6 +908,7 @@ int main(int argc, char *argv[]) {
}
c->default_sample_spec = conf->default_sample_spec;
+ c->default_channel_map = conf->default_channel_map;
c->default_n_fragments = conf->default_n_fragments;
c->default_fragment_size_msec = conf->default_fragment_size_msec;
c->exit_idle_time = conf->exit_idle_time;
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 239a9d7..ed25a6f 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1378,6 +1378,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_assert(ma);
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) {
pa_log("Failed to parse sample specification and channel map");
goto fail;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 50cdb31..4562689 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1229,6 +1229,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_assert(ma);
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_ALSA) < 0) {
pa_log("Failed to parse sample specification");
goto fail;
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 7f1ef24..6ed4f14 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -1052,8 +1052,9 @@ int pa__init(pa_module*m) {
slaves = pa_modargs_get_value(ma, "slaves", NULL);
u->automatic = !slaves;
- ss = m->core->default_sample_spec;
+ ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if ((pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0)) {
pa_log("Invalid sample specification.");
goto fail;
diff --git a/src/modules/module-jack-sink.c b/src/modules/module-jack-sink.c
index b448e84..1739f46 100644
--- a/src/modules/module-jack-sink.c
+++ b/src/modules/module-jack-sink.c
@@ -329,12 +329,18 @@ int pa__init(pa_module*m) {
if (!channels)
channels = m->core->default_sample_spec.channels;
- if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 || channels <= 0 || channels >= PA_CHANNELS_MAX) {
+ if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 ||
+ channels <= 0 ||
+ channels > PA_CHANNELS_MAX) {
pa_log("Failed to parse channels= argument.");
goto fail;
}
- pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA);
+ if (channels == m->core->default_channel_map.channels)
+ map = m->core->default_channel_map;
+ else
+ pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA);
+
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) {
pa_log("Failed to parse channel_map= argument.");
goto fail;
diff --git a/src/modules/module-jack-source.c b/src/modules/module-jack-source.c
index 0c7ee53..38b6375 100644
--- a/src/modules/module-jack-source.c
+++ b/src/modules/module-jack-source.c
@@ -296,12 +296,18 @@ int pa__init(pa_module*m) {
if (!channels)
channels = m->core->default_sample_spec.channels;
- if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 || channels <= 0 || channels >= PA_CHANNELS_MAX) {
+ if (pa_modargs_get_value_u32(ma, "channels", &channels) < 0 ||
+ channels <= 0 ||
+ channels >= PA_CHANNELS_MAX) {
pa_log("failed to parse channels= argument.");
goto fail;
}
- pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA);
+ if (channels == m->core->default_channel_map.channels)
+ map = m->core->default_channel_map;
+ else
+ pa_channel_map_init_extend(&map, channels, PA_CHANNEL_MAP_ALSA);
+
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0 || map.channels != channels) {
pa_log("failed to parse channel_map= argument.");
goto fail;
diff --git a/src/modules/module-null-sink.c b/src/modules/module-null-sink.c
index 570f8be..e18da5f 100644
--- a/src/modules/module-null-sink.c
+++ b/src/modules/module-null-sink.c
@@ -262,6 +262,7 @@ int pa__init(pa_module*m) {
}
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log("Invalid sample format specification or channel map");
goto fail;
diff --git a/src/modules/module-pipe-sink.c b/src/modules/module-pipe-sink.c
index 7dd4409..f3b0e8b 100644
--- a/src/modules/module-pipe-sink.c
+++ b/src/modules/module-pipe-sink.c
@@ -234,6 +234,7 @@ int pa__init(pa_module*m) {
}
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log("Invalid sample format specification or channel map");
goto fail;
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c
index 975090c..a42c53c 100644
--- a/src/modules/module-pipe-source.c
+++ b/src/modules/module-pipe-source.c
@@ -221,6 +221,7 @@ int pa__init(pa_module*m) {
}
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log("invalid sample format specification or channel map");
goto fail;
diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c
index 26da257..63ae740 100644
--- a/src/modules/module-tunnel.c
+++ b/src/modules/module-tunnel.c
@@ -1717,6 +1717,7 @@ int pa__init(pa_module*m) {
}
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_DEFAULT) < 0) {
pa_log("Invalid sample format specification");
goto fail;
diff --git a/src/modules/module-zeroconf-discover.c b/src/modules/module-zeroconf-discover.c
index 9a867cb..5123ead 100644
--- a/src/modules/module-zeroconf-discover.c
+++ b/src/modules/module-zeroconf-discover.c
@@ -162,7 +162,7 @@ static void resolver_cb(
pa_module *m;
ss = u->core->default_sample_spec;
- pa_channel_map_init_extend(&cm, ss.channels, PA_CHANNEL_MAP_DEFAULT);
+ cm = u->core->default_channel_map;
for (l = txt; l; l = l->next) {
char *key, *value;
diff --git a/src/modules/oss/module-oss.c b/src/modules/oss/module-oss.c
index eac0c8e..54d1679 100644
--- a/src/modules/oss/module-oss.c
+++ b/src/modules/oss/module-oss.c
@@ -1185,6 +1185,7 @@ int pa__init(pa_module*m) {
mode = (playback && record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0));
ss = m->core->default_sample_spec;
+ map = m->core->default_channel_map;
if (pa_modargs_get_sample_spec_and_channel_map(ma, &ss, &map, PA_CHANNEL_MAP_OSS) < 0) {
pa_log("Failed to parse sample specification or channel map");
goto fail;
diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c
index 04bcd4f..befeb24 100644
--- a/src/pulse/introspect.c
+++ b/src/pulse/introspect.c
@@ -110,12 +110,17 @@ static void context_get_server_info_callback(pa_pdispatch *pd, uint32_t command,
pa_tagstruct_gets(t, &i.default_sink_name) < 0 ||
pa_tagstruct_gets(t, &i.default_source_name) < 0 ||
pa_tagstruct_getu32(t, &i.cookie) < 0 ||
+ (o->context->version >= 15 &&
+ pa_tagstruct_get_channel_map(t, &i.channel_map) < 0) ||
!pa_tagstruct_eof(t)) {
pa_context_fail(o->context, PA_ERR_PROTOCOL);
goto finish;
}
+ if (p && o->context->version < 15)
+ pa_channel_map_init_extend(&i.channel_map, i.sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
+
if (o->callback) {
pa_server_info_cb_t cb = (pa_server_info_cb_t) o->callback;
cb(o->context, p, o->userdata);
diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h
index b873a84..aa67e43 100644
--- a/src/pulse/introspect.h
+++ b/src/pulse/introspect.h
@@ -317,6 +317,7 @@ typedef struct pa_server_info {
const char *default_sink_name; /**< Name of default sink. */
const char *default_source_name; /**< Name of default sink. */
uint32_t cookie; /**< A random cookie for identifying this instance of PulseAudio. */
+ pa_channel_map channel_map; /**< Default channel map. \since 0.9.15 */
} pa_server_info;
/** Callback prototype for pa_context_get_server_info() */
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 5e45c1a..7066e7e 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -321,6 +321,8 @@ static int pa_cli_command_source_outputs(pa_core *c, pa_tokenizer *t, pa_strbuf
}
static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
+ char ss[PA_SAMPLE_SPEC_SNPRINT_MAX];
+ char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
char s[256];
const pa_mempool_stat *stat;
unsigned k;
@@ -363,7 +365,10 @@ static int pa_cli_command_stat(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_b
pa_bytes_snprint(s, sizeof(s), (unsigned) pa_scache_total_size(c)));
pa_strbuf_printf(buf, "Default sample spec: %s\n",
- pa_sample_spec_snprint(s, sizeof(s), &c->default_sample_spec));
+ pa_sample_spec_snprint(ss, sizeof(ss), &c->default_sample_spec));
+
+ pa_strbuf_printf(buf, "Default channel map: %s\n",
+ pa_channel_map_snprint(cm, sizeof(cm), &c->default_channel_map));
def_sink = pa_namereg_get_default_sink(c);
def_source = pa_namereg_get_default_source(c);
diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c
index 5fd2bdf..eef967a 100644
--- a/src/pulsecore/core.c
+++ b/src/pulsecore/core.c
@@ -111,6 +111,7 @@ pa_core* pa_core_new(pa_mainloop_api *m, pa_bool_t shared, size_t shm_size) {
c->default_sample_spec.format = PA_SAMPLE_S16NE;
c->default_sample_spec.rate = 44100;
c->default_sample_spec.channels = 2;
+ pa_channel_map_init_extend(&c->default_channel_map, c->default_sample_spec.channels, PA_CHANNEL_MAP_DEFAULT);
c->default_n_fragments = 4;
c->default_fragment_size_msec = 25;
diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h
index 53e2d2c..7660bd3 100644
--- a/src/pulsecore/core.h
+++ b/src/pulsecore/core.h
@@ -122,6 +122,7 @@ struct pa_core {
pa_source *default_source;
pa_sink *default_sink;
+ pa_channel_map default_channel_map;
pa_sample_spec default_sample_spec;
unsigned default_n_fragments, default_fragment_size_msec;
diff --git a/src/pulsecore/modargs.c b/src/pulsecore/modargs.c
index 866e6e0..4a30f52 100644
--- a/src/pulsecore/modargs.c
+++ b/src/pulsecore/modargs.c
@@ -274,11 +274,15 @@ int pa_modargs_get_sample_spec(pa_modargs *ma, pa_sample_spec *rss) {
pa_assert(rss);
ss = *rss;
- if ((pa_modargs_get_value_u32(ma, "rate", &ss.rate)) < 0)
+ if ((pa_modargs_get_value_u32(ma, "rate", &ss.rate)) < 0 ||
+ ss.rate <= 0 ||
+ ss.rate > PA_RATE_MAX)
return -1;
channels = ss.channels;
- if ((pa_modargs_get_value_u32(ma, "channels", &channels)) < 0)
+ if ((pa_modargs_get_value_u32(ma, "channels", &channels)) < 0 ||
+ channels <= 0 ||
+ channels >= PA_CHANNELS_MAX)
return -1;
ss.channels = (uint8_t) channels;
@@ -314,7 +318,12 @@ int pa_modargs_get_channel_map(pa_modargs *ma, const char *name, pa_channel_map
return 0;
}
-int pa_modargs_get_sample_spec_and_channel_map(pa_modargs *ma, pa_sample_spec *rss, pa_channel_map *rmap, pa_channel_map_def_t def) {
+int pa_modargs_get_sample_spec_and_channel_map(
+ pa_modargs *ma,
+ pa_sample_spec *rss,
+ pa_channel_map *rmap,
+ pa_channel_map_def_t def) {
+
pa_sample_spec ss;
pa_channel_map map;
@@ -327,7 +336,10 @@ int pa_modargs_get_sample_spec_and_channel_map(pa_modargs *ma, pa_sample_spec *r
if (pa_modargs_get_sample_spec(ma, &ss) < 0)
return -1;
- pa_channel_map_init_extend(&map, ss.channels, def);
+ map = *rmap;
+
+ if (ss.channels != map.channels)
+ pa_channel_map_init_extend(&map, ss.channels, def);
if (pa_modargs_get_channel_map(ma, NULL, &map) < 0)
return -1;
diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c
index a963f78..10b9e7d 100644
--- a/src/pulsecore/protocol-native.c
+++ b/src/pulsecore/protocol-native.c
@@ -3125,6 +3125,9 @@ static void command_get_server_info(pa_pdispatch *pd, uint32_t command, uint32_t
pa_tagstruct_putu32(reply, c->protocol->core->cookie);
+ if (c->version >= 15)
+ pa_tagstruct_put_channel_map(reply, &c->protocol->core->default_channel_map);
+
pa_pstream_send_tagstruct(c->pstream, reply);
}
diff --git a/src/utils/pactl.c b/src/utils/pactl.c
index d3da90e..6524bf9 100644
--- a/src/utils/pactl.c
+++ b/src/utils/pactl.c
@@ -123,7 +123,7 @@ static void stat_callback(pa_context *c, const pa_stat_info *i, void *userdata)
}
static void get_server_info_callback(pa_context *c, const pa_server_info *i, void *useerdata) {
- char s[PA_SAMPLE_SPEC_SNPRINT_MAX];
+ char ss[PA_SAMPLE_SPEC_SNPRINT_MAX], cm[PA_CHANNEL_MAP_SNPRINT_MAX];
if (!i) {
fprintf(stderr, _("Failed to get server information: %s\n"), pa_strerror(pa_context_errno(c)));
@@ -131,21 +131,24 @@ static void get_server_info_callback(pa_context *c, const pa_server_info *i, voi
return;
}
- pa_sample_spec_snprint(s, sizeof(s), &i->sample_spec);
+ pa_sample_spec_snprint(ss, sizeof(ss), &i->sample_spec);
+ pa_channel_map_snprint(cm, sizeof(cm), &i->channel_map);
printf(_("User name: %s\n"
- "Host Name: %s\n"
- "Server Name: %s\n"
- "Server Version: %s\n"
- "Default Sample Specification: %s\n"
- "Default Sink: %s\n"
- "Default Source: %s\n"
- "Cookie: %08x\n"),
+ "Host Name: %s\n"
+ "Server Name: %s\n"
+ "Server Version: %s\n"
+ "Default Sample Specification: %s\n"
+ "Default Channel Map: %s\n"
+ "Default Sink: %s\n"
+ "Default Source: %s\n"
+ "Cookie: %08x\n"),
i->user_name,
i->host_name,
i->server_name,
i->server_version,
- s,
+ ss,
+ cm,
i->default_sink_name,
i->default_source_name,
i->cookie);
commit 14ee8d471aa5aa2eeefd9de0911ee51d0439409e
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 16:33:46 2009 +0100
print warnings about driver bugs at most once
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index ed25a6f..ef51f1d 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -304,10 +304,12 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (PA_UNLIKELY(n_bytes <= u->hwbuf_unused)) {
- if (polled && pa_log_ratelimit())
- pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ if (polled)
+ PA_ONCE_BEGIN {
+ pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
+ "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
+ "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ } PA_ONCE_END;
#ifdef DEBUG_TIMING
pa_log_debug("Not filling up, because not necessary.");
@@ -431,10 +433,12 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (PA_UNLIKELY(n_bytes <= u->hwbuf_unused)) {
- if (polled && pa_log_ratelimit())
- pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ if (polled)
+ PA_ONCE_BEGIN {
+ pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
+ "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
+ "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ } PA_ONCE_END;
break;
}
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 4562689..fbc21f7 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -287,10 +287,12 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (PA_UNLIKELY(n_bytes <= 0)) {
- if (polled && pa_log_ratelimit())
- pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ if (polled)
+ PA_ONCE_BEGIN {
+ pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
+ "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
+ "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ } PA_ONCE_END;
#ifdef DEBUG_TIMING
pa_log_debug("Not reading, because not necessary.");
@@ -406,10 +408,12 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (PA_UNLIKELY(n_bytes <= 0)) {
- if (polled && pa_log_ratelimit())
- pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ if (polled)
+ PA_ONCE_BEGIN {
+ pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
+ "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
+ "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ } PA_ONCE_END;
break;
}
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index d00a80f..4340cb3 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -39,6 +39,7 @@
#include <pulsecore/core-util.h>
#include <pulsecore/atomic.h>
#include <pulsecore/core-error.h>
+#include <pulsecore/once.h>
#include "alsa-util.h"
@@ -1574,9 +1575,12 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
if (k >= hwbuf_size * 3 ||
k >= pa_bytes_per_second(ss)*10)
- pa_log(_("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
- (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
+
+ PA_ONCE_BEGIN {
+ pa_log(_("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). "
+ "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
+ (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
+ } PA_ONCE_END;
return n;
}
@@ -1606,9 +1610,11 @@ int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas
k >= hwbuf_size * 3 ||
k >= pa_bytes_per_second(ss)*10)
- pa_log(_("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
- (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
+ PA_ONCE_BEGIN {
+ pa_log(_("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). "
+ "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
+ (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
+ } PA_ONCE_END;
return r;
}
commit 1a45569b3e60807ee57ba2e6c15fbbb441871c61
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 16:36:48 2009 +0100
prefer profiles that match the default channel map
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index e517ddc..c949435 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -88,6 +88,8 @@ struct userdata {
pa_source *source;
pa_modargs *modargs;
+
+ pa_hashmap *profiles;
};
struct profile_data {
@@ -99,10 +101,11 @@ static void enumerate_cb(
const pa_alsa_profile_info *source,
void *userdata) {
- pa_hashmap *profiles = (pa_hashmap *) userdata;
+ struct userdata *u = userdata;
char *t, *n;
pa_card_profile *p;
struct profile_data *d;
+ unsigned bonus = 0;
if (sink && source) {
n = pa_sprintf_malloc("output-%s+input-%s", sink->name, source->name);
@@ -116,6 +119,20 @@ static void enumerate_cb(
t = pa_sprintf_malloc(_("Input %s"), _(source->description));
}
+ if (sink) {
+ if (pa_channel_map_equal(&sink->map, &u->core->default_channel_map))
+ bonus += 50000;
+ else if (sink->map.channels == u->core->default_channel_map.channels)
+ bonus += 40000;
+ }
+
+ if (source) {
+ if (pa_channel_map_equal(&source->map, &u->core->default_channel_map))
+ bonus += 30000;
+ else if (source->map.channels == u->core->default_channel_map.channels)
+ bonus += 20000;
+ }
+
pa_log_info("Found output profile '%s'", t);
p = pa_card_profile_new(n, t, sizeof(struct profile_data));
@@ -123,7 +140,11 @@ static void enumerate_cb(
pa_xfree(t);
pa_xfree(n);
- p->priority = (sink ? sink->priority : 0)*100 + (source ? source->priority : 0);
+ p->priority =
+ (sink ? sink->priority : 0) * 100 +
+ (source ? source->priority : 0) +
+ bonus;
+
p->n_sinks = !!sink;
p->n_sources = !!source;
@@ -137,7 +158,7 @@ static void enumerate_cb(
d->sink_profile = sink;
d->source_profile = source;
- pa_hashmap_put(profiles, p->name, p);
+ pa_hashmap_put(u->profiles, p->name, p);
}
static void add_disabled_profile(pa_hashmap *profiles) {
@@ -289,8 +310,8 @@ int pa__init(pa_module*m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
set_card_name(&data, ma, u->device_id);
- data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
- if (pa_alsa_probe_profiles(u->device_id, &m->core->default_sample_spec, enumerate_cb, data.profiles) < 0) {
+ u->profiles = data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+ if (pa_alsa_probe_profiles(u->device_id, &m->core->default_sample_spec, enumerate_cb, u) < 0) {
pa_card_new_data_done(&data);
goto fail;
}
commit fa5e10f5fa1418457e40fd0debf4bd42d4650910
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 16:58:24 2009 +0100
fix wording, closes #484
diff --git a/src/daemon/cmdline.c b/src/daemon/cmdline.c
index 43a4a32..f4224ea 100644
--- a/src/daemon/cmdline.c
+++ b/src/daemon/cmdline.c
@@ -299,7 +299,7 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
case ARG_DISALLOW_EXIT:
if ((conf->disallow_exit = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
- pa_log(_("--disallow-exit boolean argument"));
+ pa_log(_("--disallow-exit expects boolean argument"));
goto fail;
}
break;
@@ -330,14 +330,14 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
case ARG_LOG_TIME:
if ((conf->log_time = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
- pa_log(_("--log-time boolean argument"));
+ pa_log(_("--log-time expects boolean argument"));
goto fail;
}
break;
case ARG_LOG_META:
if ((conf->log_meta = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
- pa_log(_("--log-meta boolean argument"));
+ pa_log(_("--log-meta expects boolean argument"));
goto fail;
}
break;
commit 9b74afcfa3fd3a870aa485fe7f70b5751bfb5158
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 17:01:01 2009 +0100
make string translatable (fixes #483)
diff --git a/src/daemon/main.c b/src/daemon/main.c
index d176f45..0675f19 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -506,8 +506,9 @@ int main(int argc, char *argv[]) {
if ((conf->high_priority && !allow_high_priority) ||
(conf->realtime_scheduling && !allow_realtime))
pa_log_notice(_("Called SUID root and real-time and/or high-priority scheduling was requested in the configuration. However, we lack the necessary privileges:\n"
- "We are not in group '"PA_REALTIME_GROUP"', PolicyKit refuse to grant us the requested privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource limits.\n"
- "For enabling real-time/high-priority scheduling please acquire the appropriate PolicyKit privileges, or become a member of '"PA_REALTIME_GROUP"', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."));
+ "We are not in group '%s', PolicyKit refuse to grant us the requested privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource limits.\n"
+ "For enabling real-time/high-priority scheduling please acquire the appropriate PolicyKit privileges, or become a member of '%s', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."),
+ PA_REALTIME_GROUP, PA_REALTIME_GROUP);
if (!allow_realtime)
commit 77779ead6d09604573b7170fa27fb9a5926cd02e
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 22:45:56 2009 +0100
rework logging to make it more modular
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 0675f19..b630bd1 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -351,8 +351,9 @@ int main(int argc, char *argv[]) {
int autospawn_fd = -1;
pa_bool_t autospawn_locked = FALSE;
- pa_log_set_maximal_level(PA_LOG_INFO);
pa_log_set_ident("pulseaudio");
+ pa_log_set_level(PA_LOG_INFO);
+ pa_log_set_flags(PA_LOG_COLORS|PA_LOG_PRINT_FILE|PA_LOG_PRINT_LEVEL, PA_LOG_RESET);
#if defined(__linux__) && defined(__OPTIMIZE__)
/*
@@ -432,11 +433,13 @@ int main(int argc, char *argv[]) {
goto finish;
}
- pa_log_set_maximal_level(conf->log_level);
- pa_log_set_target(conf->auto_log_target ? PA_LOG_STDERR : conf->log_target, NULL);
- pa_log_set_show_meta(conf->log_meta);
+ pa_log_set_level(conf->log_level);
+ pa_log_set_target(conf->auto_log_target ? PA_LOG_STDERR : conf->log_target);
+ if (conf->log_meta)
+ pa_log_set_flags(PA_LOG_PRINT_META, PA_LOG_SET);
+ if (conf->log_time)
+ pa_log_set_flags(PA_LOG_PRINT_TIME, PA_LOG_SET);
pa_log_set_show_backtrace(conf->log_backtrace);
- pa_log_set_show_time(conf->log_time);
pa_log_debug("Started as real root: %s, suid root: %s", pa_yes_no(real_root), pa_yes_no(suid_root));
@@ -771,7 +774,7 @@ int main(int argc, char *argv[]) {
#endif
if (conf->auto_log_target)
- pa_log_set_target(PA_LOG_SYSLOG, NULL);
+ pa_log_set_target(PA_LOG_SYSLOG);
#ifdef HAVE_SETSID
setsid();
diff --git a/src/pulsecore/cli-command.c b/src/pulsecore/cli-command.c
index 7066e7e..4ce87d6 100644
--- a/src/pulsecore/cli-command.c
+++ b/src/pulsecore/cli-command.c
@@ -1350,7 +1350,7 @@ static int pa_cli_command_log_level(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
return -1;
}
- pa_log_set_maximal_level(level);
+ pa_log_set_level(level);
return 0;
}
@@ -1374,7 +1374,7 @@ static int pa_cli_command_log_meta(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
return -1;
}
- pa_log_set_show_meta(b);
+ pa_log_set_flags(PA_LOG_PRINT_META, b ? PA_LOG_SET : PA_LOG_UNSET);
return 0;
}
@@ -1398,7 +1398,7 @@ static int pa_cli_command_log_time(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
return -1;
}
- pa_log_set_show_time(b);
+ pa_log_set_flags(PA_LOG_PRINT_TIME, b ? PA_LOG_SET : PA_LOG_UNSET);
return 0;
}
diff --git a/src/pulsecore/log.c b/src/pulsecore/log.c
index 89b75da..9931586 100644
--- a/src/pulsecore/log.c
+++ b/src/pulsecore/log.c
@@ -51,18 +51,21 @@
#include "log.h"
-#define ENV_LOGLEVEL "PULSE_LOG"
-#define ENV_LOGMETA "PULSE_LOG_META"
-#define ENV_LOGTIME "PULSE_LOG_TIME"
-#define ENV_LOGBACKTRACE "PULSE_LOG_BACKTRACE"
-
-static char *log_ident = NULL, *log_ident_local = NULL;
-static pa_log_target_t log_target = PA_LOG_STDERR;
-static pa_log_func_t user_log_func = NULL;
-static pa_log_level_t maximal_level = PA_LOG_ERROR;
-static unsigned show_backtrace = 0;
-static pa_bool_t show_meta = FALSE;
-static pa_bool_t show_time = FALSE;
+#define ENV_LOG_SYSLOG "PULSE_LOG_SYSLOG"
+#define ENV_LOG_LEVEL "PULSE_LOG"
+#define ENV_LOG_COLORS "PULSE_LOG_COLORS"
+#define ENV_LOG_PRINT_TIME "PULSE_LOG_TIME"
+#define ENV_LOG_PRINT_FILE "PULSE_LOG_FILE"
+#define ENV_LOG_PRINT_META "PULSE_LOG_META"
+#define ENV_LOG_PRINT_LEVEL "PULSE_LOG_LEVEL"
+#define ENV_LOG_BACKTRACE "PULSE_LOG_BACKTRACE"
+
+static char *ident = NULL; /* in local charset format */
+static pa_log_target_t target = PA_LOG_STDERR, target_override;
+static pa_bool_t target_override_set = FALSE;
+static pa_log_level_t maximum_level = PA_LOG_ERROR, maximum_level_override = PA_LOG_ERROR;
+static unsigned show_backtrace = 0, show_backtrace_override = 0;
+static pa_log_flags_t flags = 0, flags_override = 0;
#ifdef HAVE_SYSLOG_H
static const int level_to_syslog[] = {
@@ -83,12 +86,10 @@ static const char level_to_char[] = {
};
void pa_log_set_ident(const char *p) {
- pa_xfree(log_ident);
- pa_xfree(log_ident_local);
+ pa_xfree(ident);
- log_ident = pa_xstrdup(p);
- if (!(log_ident_local = pa_utf8_to_locale(log_ident)))
- log_ident_local = pa_xstrdup(log_ident);
+ if (!(ident = pa_utf8_to_locale(p)))
+ ident = pa_ascii_filter(p);
}
/* To make valgrind shut up. */
@@ -97,29 +98,30 @@ static void ident_destructor(void) {
if (!pa_in_valgrind())
return;
- pa_xfree(log_ident);
- pa_xfree(log_ident_local);
+ pa_xfree(ident);
}
-void pa_log_set_maximal_level(pa_log_level_t l) {
+void pa_log_set_level(pa_log_level_t l) {
pa_assert(l < PA_LOG_LEVEL_MAX);
- maximal_level = l;
+ maximum_level = l;
}
-void pa_log_set_target(pa_log_target_t t, pa_log_func_t func) {
- pa_assert(t == PA_LOG_USER || !func);
+void pa_log_set_target(pa_log_target_t t) {
+ pa_assert(t < PA_LOG_TARGET_MAX);
- log_target = t;
- user_log_func = func;
+ target = t;
}
-void pa_log_set_show_meta(pa_bool_t b) {
- show_meta = b;
-}
+void pa_log_set_flags(pa_log_flags_t _flags, pa_log_merge_t merge) {
+ pa_assert(!(_flags & ~(PA_LOG_COLORS|PA_LOG_PRINT_TIME|PA_LOG_PRINT_FILE|PA_LOG_PRINT_META|PA_LOG_PRINT_LEVEL)));
-void pa_log_set_show_time(pa_bool_t b) {
- show_time = b;
+ if (merge == PA_LOG_SET)
+ flags |= _flags;
+ else if (merge == PA_LOG_UNSET)
+ flags &= ~_flags;
+ else
+ flags = _flags;
}
void pa_log_set_show_backtrace(unsigned nlevels) {
@@ -135,8 +137,7 @@ static char* get_backtrace(unsigned show_nframes) {
unsigned j, n;
size_t a;
- if (show_nframes <= 0)
- return NULL;
+ pa_assert(show_nframes > 0);
n_frames = backtrace(trace, PA_ELEMENTSOF(trace));
@@ -182,6 +183,50 @@ static char* get_backtrace(unsigned show_nframes) {
#endif
+static void init_defaults(void) {
+ const char *e;
+
+ if (!ident) {
+ char binary[256];
+ if (pa_get_binary_name(binary, sizeof(binary)))
+ pa_log_set_ident(binary);
+ }
+
+ if (getenv(ENV_LOG_SYSLOG)) {
+ target_override = PA_LOG_SYSLOG;
+ target_override_set = TRUE;
+ }
+
+ if ((e = getenv(ENV_LOG_LEVEL))) {
+ maximum_level_override = (pa_log_level_t) atoi(e);
+
+ if (maximum_level_override >= PA_LOG_LEVEL_MAX)
+ maximum_level_override = PA_LOG_LEVEL_MAX-1;
+ }
+
+ if (getenv(ENV_LOG_COLORS))
+ flags_override |= PA_LOG_COLORS;
+
+ if (getenv(ENV_LOG_PRINT_TIME))
+ flags_override |= PA_LOG_PRINT_TIME;
+
+ if (getenv(ENV_LOG_PRINT_FILE))
+ flags_override |= PA_LOG_PRINT_FILE;
+
+ if (getenv(ENV_LOG_PRINT_META))
+ flags_override |= PA_LOG_PRINT_META;
+
+ if (getenv(ENV_LOG_PRINT_LEVEL))
+ flags_override |= PA_LOG_PRINT_LEVEL;
+
+ if ((e = getenv(ENV_LOG_BACKTRACE))) {
+ show_backtrace_override = (unsigned) atoi(e);
+
+ if (show_backtrace_override <= 0)
+ show_backtrace_override = 0;
+ }
+}
+
void pa_log_levelv_meta(
pa_log_level_t level,
const char*file,
@@ -190,14 +235,13 @@ void pa_log_levelv_meta(
const char *format,
va_list ap) {
- const char *e;
char *t, *n;
int saved_errno = errno;
char *bt = NULL;
- pa_log_level_t ml;
-#ifdef HAVE_EXECINFO_H
- unsigned show_bt;
-#endif
+ pa_log_target_t _target;
+ pa_log_level_t _maximum_level;
+ unsigned _show_backtrace;
+ pa_log_flags_t _flags;
/* We don't use dynamic memory allocation here to minimize the hit
* in RT threads */
@@ -206,30 +250,30 @@ void pa_log_levelv_meta(
pa_assert(level < PA_LOG_LEVEL_MAX);
pa_assert(format);
- ml = maximal_level;
-
- if (PA_UNLIKELY((e = getenv(ENV_LOGLEVEL)))) {
- pa_log_level_t eml = (pa_log_level_t) atoi(e);
+ PA_ONCE_BEGIN {
+ init_defaults();
+ } PA_ONCE_END;
- if (eml > ml)
- ml = eml;
- }
+ _target = target_override_set ? target_override : target;
+ _maximum_level = PA_MAX(maximum_level, maximum_level_override);
+ _show_backtrace = PA_MAX(show_backtrace, show_backtrace_override);
+ _flags = flags | flags_override;
- if (PA_LIKELY(level > ml)) {
+ if (PA_LIKELY(level > _maximum_level)) {
errno = saved_errno;
return;
}
pa_vsnprintf(text, sizeof(text), format, ap);
- if ((show_meta || getenv(ENV_LOGMETA)) && file && line > 0 && func)
+ if ((_flags & PA_LOG_PRINT_META) && file && line > 0 && func)
pa_snprintf(location, sizeof(location), "[%s:%i %s()] ", file, line, func);
- else if (file)
+ else if (_flags & (PA_LOG_PRINT_META|PA_LOG_PRINT_FILE))
pa_snprintf(location, sizeof(location), "%s: ", pa_path_get_filename(file));
else
location[0] = 0;
- if (show_time || getenv(ENV_LOGTIME)) {
+ if (_flags & PA_LOG_PRINT_TIME) {
static pa_usec_t start, last;
pa_usec_t u, a, r;
@@ -257,16 +301,8 @@ void pa_log_levelv_meta(
timestamp[0] = 0;
#ifdef HAVE_EXECINFO_H
- show_bt = show_backtrace;
-
- if ((e = getenv(ENV_LOGBACKTRACE))) {
- unsigned ebt = (unsigned) atoi(e);
-
- if (ebt > show_bt)
- show_bt = ebt;
- }
-
- bt = get_backtrace(show_bt);
+ if (_show_backtrace > 0)
+ bt = get_backtrace(_show_backtrace);
#endif
if (!pa_utf8_valid(text))
@@ -282,14 +318,15 @@ void pa_log_levelv_meta(
if (t[strspn(t, "\t ")] == 0)
continue;
- switch (log_target) {
+ switch (_target) {
+
case PA_LOG_STDERR: {
const char *prefix = "", *suffix = "", *grey = "";
char *local_t;
#ifndef OS_IS_WIN32
/* Yes indeed. Useless, but fun! */
- if (isatty(STDERR_FILENO)) {
+ if ((_flags & PA_LOG_COLORS) && isatty(STDERR_FILENO)) {
if (level <= PA_LOG_ERROR)
prefix = "\x1B[1;31m";
else if (level <= PA_LOG_WARN)
@@ -305,13 +342,15 @@ void pa_log_levelv_meta(
/* We shouldn't be using dynamic allocation here to
* minimize the hit in RT threads */
- local_t = pa_utf8_to_locale(t);
- if (!local_t)
+ if ((local_t = pa_utf8_to_locale(t)))
+ t = local_t;
+
+ if (_flags & PA_LOG_PRINT_LEVEL)
fprintf(stderr, "%s%c: %s%s%s%s%s%s\n", timestamp, level_to_char[level], location, prefix, t, grey, pa_strempty(bt), suffix);
- else {
- fprintf(stderr, "%s%c: %s%s%s%s%s%s\n", timestamp, level_to_char[level], location, prefix, local_t, grey, pa_strempty(bt), suffix);
- pa_xfree(local_t);
- }
+ else
+ fprintf(stderr, "%s%s%s%s%s%s%s\n", timestamp, location, prefix, t, grey, pa_strempty(bt), suffix);
+
+ pa_xfree(local_t);
break;
}
@@ -320,29 +359,17 @@ void pa_log_levelv_meta(
case PA_LOG_SYSLOG: {
char *local_t;
- openlog(log_ident_local ? log_ident_local : "???", LOG_PID, LOG_USER);
-
- local_t = pa_utf8_to_locale(t);
- if (!local_t)
- syslog(level_to_syslog[level], "%s%s%s%s", timestamp, location, t, pa_strempty(bt));
- else {
- syslog(level_to_syslog[level], "%s%s%s%s", timestamp, location, local_t, pa_strempty(bt));
- pa_xfree(local_t);
- }
-
- closelog();
- break;
- }
-#endif
+ openlog(ident, LOG_PID, LOG_USER);
- case PA_LOG_USER: {
- char x[1024];
+ if ((local_t = pa_utf8_to_locale(t)))
+ t = local_t;
- pa_snprintf(x, sizeof(x), "%s%s%s", timestamp, location, t);
- user_log_func(level, x);
+ syslog(level_to_syslog[level], "%s%s%s%s", timestamp, location, t, pa_strempty(bt));
+ pa_xfree(local_t);
break;
}
+#endif
case PA_LOG_NULL:
default:
@@ -350,8 +377,8 @@ void pa_log_levelv_meta(
}
}
- errno = saved_errno;
pa_xfree(bt);
+ errno = saved_errno;
}
void pa_log_level_meta(
diff --git a/src/pulsecore/log.h b/src/pulsecore/log.h
index 77adb79..6e7bfc3 100644
--- a/src/pulsecore/log.h
+++ b/src/pulsecore/log.h
@@ -35,8 +35,8 @@
typedef enum pa_log_target {
PA_LOG_STDERR, /* default */
PA_LOG_SYSLOG,
- PA_LOG_USER, /* to user specified function */
- PA_LOG_NULL /* to /dev/null */
+ PA_LOG_NULL, /* to /dev/null */
+ PA_LOG_TARGET_MAX
} pa_log_target_t;
typedef enum pa_log_level {
@@ -48,18 +48,33 @@ typedef enum pa_log_level {
PA_LOG_LEVEL_MAX
} pa_log_level_t;
+typedef enum pa_log_flags {
+ PA_LOG_COLORS = 0x01, /* Show colorful output */
+ PA_LOG_PRINT_TIME = 0x02, /* Show time */
+ PA_LOG_PRINT_FILE = 0x04, /* Show source file */
+ PA_LOG_PRINT_META = 0x08, /* Show extended locaton information */
+ PA_LOG_PRINT_LEVEL = 0x10, /* Show log level prefix */
+} pa_log_flags_t;
+
+typedef enum pa_log_merge {
+ PA_LOG_SET,
+ PA_LOG_UNSET,
+ PA_LOG_RESET
+} pa_log_merge_t;
+
/* Set an identification for the current daemon. Used when logging to syslog. */
void pa_log_set_ident(const char *p);
-typedef void (*pa_log_func_t)(pa_log_level_t t, const char*s);
-
-/* Set another log target. If t is PA_LOG_USER you may specify a function that is called every log string */
-void pa_log_set_target(pa_log_target_t t, pa_log_func_t func);
+/* Set a log target. */
+void pa_log_set_target(pa_log_target_t t);
/* Maximal log level */
-void pa_log_set_maximal_level(pa_log_level_t l);
-void pa_log_set_show_meta(pa_bool_t b);
-void pa_log_set_show_time(pa_bool_t b);
+void pa_log_set_level(pa_log_level_t l);
+
+/* Set flags */
+void pa_log_set_flags(pa_log_flags_t flags, pa_log_merge_t merge);
+
+/* Enable backtrace */
void pa_log_set_show_backtrace(unsigned nlevels);
void pa_log_level_meta(
@@ -68,6 +83,7 @@ void pa_log_level_meta(
int line,
const char *func,
const char *format, ...) PA_GCC_PRINTF_ATTR(5,6);
+
void pa_log_levelv_meta(
pa_log_level_t level,
const char*file,
@@ -76,8 +92,14 @@ void pa_log_levelv_meta(
const char *format,
va_list ap);
-void pa_log_level(pa_log_level_t level, const char *format, ...) PA_GCC_PRINTF_ATTR(2,3);
-void pa_log_levelv(pa_log_level_t level, const char *format, va_list ap);
+void pa_log_level(
+ pa_log_level_t level,
+ const char *format, ...) PA_GCC_PRINTF_ATTR(2,3);
+
+void pa_log_levelv(
+ pa_log_level_t level,
+ const char *format,
+ va_list ap);
#if __STDC_VERSION__ >= 199901L
diff --git a/src/tests/envelope-test.c b/src/tests/envelope-test.c
index 4a72f5a..11a80a1 100644
--- a/src/tests/envelope-test.c
+++ b/src/tests/envelope-test.c
@@ -203,7 +203,7 @@ int main(int argc, char *argv[]) {
};
oil_init();
- pa_log_set_maximal_level(PA_LOG_DEBUG);
+ pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
pa_assert_se(envelope = pa_envelope_new(&ss));
diff --git a/src/tests/memblockq-test.c b/src/tests/memblockq-test.c
index c53945b..b01a4fd 100644
--- a/src/tests/memblockq-test.c
+++ b/src/tests/memblockq-test.c
@@ -61,7 +61,7 @@ int main(int argc, char *argv[]) {
pa_memchunk chunk1, chunk2, chunk3, chunk4;
pa_memchunk silence;
- pa_log_set_maximal_level(PA_LOG_DEBUG);
+ pa_log_set_level(PA_LOG_DEBUG);
p = pa_mempool_new(FALSE, 0);
diff --git a/src/tests/mix-test.c b/src/tests/mix-test.c
index cc21ab0..db8ac6e 100644
--- a/src/tests/mix-test.c
+++ b/src/tests/mix-test.c
@@ -199,7 +199,7 @@ int main(int argc, char *argv[]) {
pa_cvolume v;
oil_init();
- pa_log_set_maximal_level(PA_LOG_DEBUG);
+ pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
diff --git a/src/tests/remix-test.c b/src/tests/remix-test.c
index 3538d7d..3da4ee3 100644
--- a/src/tests/remix-test.c
+++ b/src/tests/remix-test.c
@@ -56,7 +56,7 @@ int main(int argc, char *argv[]) {
pa_mempool *pool;
oil_init();
- pa_log_set_maximal_level(PA_LOG_DEBUG);
+ pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
diff --git a/src/tests/resampler-test.c b/src/tests/resampler-test.c
index 2d59186..da8d375 100644
--- a/src/tests/resampler-test.c
+++ b/src/tests/resampler-test.c
@@ -199,7 +199,7 @@ int main(int argc, char *argv[]) {
pa_cvolume v;
oil_init();
- pa_log_set_maximal_level(PA_LOG_DEBUG);
+ pa_log_set_level(PA_LOG_DEBUG);
pa_assert_se(pool = pa_mempool_new(FALSE, 0));
commit edfa39a2af1c653fd8ccd6c34d7d2e49505d325f
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 23:46:31 2009 +0100
make sure we don't choke on PULSE_PROP_OVERRIDE
diff --git a/src/pulsecore/proplist-util.c b/src/pulsecore/proplist-util.c
index 7ba2fd7..af5f0aa 100644
--- a/src/pulsecore/proplist-util.c
+++ b/src/pulsecore/proplist-util.c
@@ -135,8 +135,9 @@ void pa_init_proplist(pa_proplist *p) {
k = pa_xstrndup(*e+skip, kl);
- if (override || !pa_proplist_contains(p, k))
- pa_proplist_sets(p, k, *e+skip+kl+1);
+ if (!pa_streq(k, "OVERRIDE"))
+ if (override || !pa_proplist_contains(p, k))
+ pa_proplist_sets(p, k, *e+skip+kl+1);
pa_xfree(k);
}
}
commit 194d8991d7a5b6cf1822f3a4d7459b12975b4107
Author: Lennart Poettering <lennart at poettering.net>
Date: Sat Feb 21 23:47:08 2009 +0100
make sure we don't choke on overly long lines in .desktop files
diff --git a/src/modules/module-augment-properties.c b/src/modules/module-augment-properties.c
index 90bfbe7..9911186 100644
--- a/src/modules/module-augment-properties.c
+++ b/src/modules/module-augment-properties.c
@@ -195,6 +195,8 @@ static pa_hook_result_t process(struct userdata *u, pa_proplist *p) {
time(&now);
+ pa_log_debug("Looking for .desktop file for %s", pn);
+
if ((r = pa_hashmap_get(u->cache, pn))) {
if (now-r->timestamp > STAT_INTERVAL) {
r->timestamp = now;
diff --git a/src/pulsecore/conf-parser.c b/src/pulsecore/conf-parser.c
index b7ec2b3..1d98f36 100644
--- a/src/pulsecore/conf-parser.c
+++ b/src/pulsecore/conf-parser.c
@@ -127,7 +127,7 @@ static int parse_line(const char *filename, unsigned line, char **section, const
int pa_config_parse(const char *filename, FILE *f, const pa_config_item *t, void *userdata) {
int r = -1;
unsigned line = 0;
- int do_close = !f;
+ pa_bool_t do_close = !f;
char *section = NULL;
pa_assert(filename);
@@ -144,7 +144,7 @@ int pa_config_parse(const char *filename, FILE *f, const pa_config_item *t, void
}
while (!feof(f)) {
- char l[256];
+ char l[4096];
if (!fgets(l, sizeof(l), f)) {
if (feof(f))
commit 504384a041cf1f9ccdd51390a037887c448189b9
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Feb 22 00:45:34 2009 +0100
initialize selem index
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 4340cb3..016e52a 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1027,6 +1027,7 @@ snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const
pa_assert(name);
snd_mixer_selem_id_set_name(sid, name);
+ snd_mixer_selem_id_set_index(sid, 0);
if ((elem = snd_mixer_find_selem(mixer, sid))) {
@@ -1043,6 +1044,7 @@ snd_mixer_elem_t *pa_alsa_find_elem(snd_mixer_t *mixer, const char *name, const
if (fallback) {
snd_mixer_selem_id_set_name(sid, fallback);
+ snd_mixer_selem_id_set_index(sid, 0);
if ((fallback_elem = snd_mixer_find_selem(mixer, sid))) {
@@ -1085,7 +1087,6 @@ success:
return elem;
}
-
int pa_alsa_find_mixer_and_elem(
snd_pcm_t *pcm,
snd_mixer_t **_m,
commit 2d9ae496c953ce62765f8f7f5b87fcab5e325c52
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Feb 22 02:00:25 2009 +0100
rework suspending/resuming
diff --git a/src/modules/bluetooth/module-bluetooth-device.c b/src/modules/bluetooth/module-bluetooth-device.c
index 559d95b..b2fb1db 100644
--- a/src/modules/bluetooth/module-bluetooth-device.c
+++ b/src/modules/bluetooth/module-bluetooth-device.c
@@ -712,13 +712,13 @@ static int stop_stream_fd(struct userdata *u) {
bt_audio_error_t error;
uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
} msg;
+ int r = 0;
pa_assert(u);
pa_assert(u->rtpoll);
pa_assert(u->rtpoll_item);
pa_assert(u->stream_fd >= 0);
- /* FIXME: HSP, only when sink&source suspended */
pa_rtpoll_item_free(u->rtpoll_item);
u->rtpoll_item = NULL;
@@ -727,20 +727,21 @@ static int stop_stream_fd(struct userdata *u) {
msg.start_req.h.name = BT_STOP_STREAM;
msg.start_req.h.length = sizeof(msg.start_req);
- if (service_send(u, &msg.start_req.h) < 0)
- return -1;
-
- if (service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
- return -1;
+ if (service_send(u, &msg.start_req.h) < 0 ||
+ service_expect(u, &msg.rsp, sizeof(msg), BT_STOP_STREAM, sizeof(msg.start_rsp)) < 0)
+ r = -1;
pa_close(u->stream_fd);
u->stream_fd = -1;
- return 0;
+ return r;
}
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;
+ pa_bool_t failed = FALSE;
+ int r;
+
pa_assert(u->sink == PA_SINK(o));
pa_log_debug("got message: %d", code);
@@ -753,19 +754,26 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
case PA_SINK_SUSPENDED:
pa_assert(PA_SINK_IS_OPENED(u->sink->thread_info.state));
- stop_stream_fd(u); /* FIXME: return value */
+ /* Stop the device if the source is suspended as well */
+ if (!u->source || u->source->state == PA_SOURCE_SUSPENDED)
+ /* We deliberately ignore whether stopping
+ * actually worked. Since the stream_fd is
+ * closed it doesn't really matter */
+ stop_stream_fd(u);
break;
case PA_SINK_IDLE:
case PA_SINK_RUNNING:
- if (PA_SINK_IS_OPENED(u->sink->thread_info.state))
+ if (u->sink->thread_info.state != PA_SINK_SUSPENDED)
break;
- if (u->rtpoll_item == NULL)
- start_stream_fd(u); /* FIXME: return value */
- u->started_at = pa_rtclock_usec();
+ /* Resume the device if the source was suspended as well */
+ if (!u->source || u->source->state == PA_SOURCE_SUSPENDED)
+ if (start_stream_fd(u) < 0)
+ failed = TRUE;
+ u->started_at = pa_rtclock_usec();
break;
case PA_SINK_UNLINKED:
@@ -779,14 +787,17 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
*((pa_usec_t*) data) = 0;
return 0;
}
-
}
- return pa_sink_process_msg(o, code, data, offset, chunk);
+ r = pa_sink_process_msg(o, code, data, offset, chunk);
+
+ return (r < 0 || !failed) ? r : -1;
}
static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t offset, pa_memchunk *chunk) {
struct userdata *u = PA_SOURCE(o)->userdata;
+ pa_bool_t failed = FALSE;
+ int r;
pa_assert(u->source == PA_SOURCE(o));
@@ -798,13 +809,26 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
switch ((pa_source_state_t) PA_PTR_TO_UINT(data)) {
case PA_SOURCE_SUSPENDED:
+ pa_assert(PA_SOURCE_IS_OPENED(u->source->thread_info.state));
+
+ /* Stop the device if the sink is suspended as well */
+ if (!u->sink || u->sink->state == PA_SINK_SUSPENDED)
+ stop_stream_fd(u);
+
pa_smoother_pause(u->read_smoother, pa_rtclock_usec());
break;
case PA_SOURCE_IDLE:
case PA_SOURCE_RUNNING:
- if (u->source->thread_info.state == PA_SOURCE_SUSPENDED)
- pa_smoother_resume(u->read_smoother, pa_rtclock_usec());
+ if (u->source->thread_info.state != PA_SOURCE_SUSPENDED)
+ break;
+
+ /* Resume the device if the sink was suspended as well */
+ if (!u->sink || u->sink->thread_info.state == PA_SINK_SUSPENDED)
+ if (start_stream_fd(u) < 0)
+ failed = TRUE;
+
+ pa_smoother_resume(u->read_smoother, pa_rtclock_usec());
break;
case PA_SOURCE_UNLINKED:
@@ -821,7 +845,9 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
}
- return pa_source_process_msg(o, code, data, offset, chunk);
+ r = pa_source_process_msg(o, code, data, offset, chunk);
+
+ return (r < 0 || !failed) ? r : -1;
}
static int hsp_process_render(struct userdata *u) {
@@ -1057,12 +1083,13 @@ static void thread_func(void *userdata) {
for (;;) {
struct pollfd *pollfd;
int ret;
+ pa_bool_t disable_timer = TRUE;
- pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
+ pollfd = u->rtpoll_item ? pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL) : NULL;
if (u->source && PA_SOURCE_IS_LINKED(u->source->thread_info.state)) {
- if (pollfd->revents & POLLIN) {
+ if (pollfd && (pollfd->revents & POLLIN)) {
if (hsp_process_push(u) < 0)
goto fail;
@@ -1077,73 +1104,73 @@ static void thread_func(void *userdata) {
if (u->sink->thread_info.rewind_requested)
pa_sink_process_rewind(u->sink, 0);
- if (pollfd->revents & POLLOUT)
- writable = TRUE;
+ if (pollfd) {
+ if (pollfd->revents & POLLOUT)
+ writable = TRUE;
- if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && !do_write && writable) {
- pa_usec_t time_passed;
- uint64_t should_have_written;
+ if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && !do_write && writable) {
+ pa_usec_t time_passed;
+ uint64_t should_have_written;
- /* Hmm, there is no input stream we could synchronize
- * to. So let's do things by time */
+ /* Hmm, there is no input stream we could synchronize
+ * to. So let's do things by time */
- time_passed = pa_rtclock_usec() - u->started_at;
- should_have_written = pa_usec_to_bytes(time_passed, &u->sink->sample_spec);
+ time_passed = pa_rtclock_usec() - u->started_at;
+ should_have_written = pa_usec_to_bytes(time_passed, &u->sink->sample_spec);
- do_write = u->write_index <= should_have_written ;
+ do_write = u->write_index <= should_have_written ;
/* pa_log_debug("Time has come: %s", pa_yes_no(do_write)); */
- }
+ }
- if (writable && do_write) {
+ if (writable && do_write) {
- if (u->profile == PROFILE_A2DP) {
- if (a2dp_process_render(u) < 0)
- goto fail;
- } else {
- if (hsp_process_render(u) < 0)
- goto fail;
- }
+ if (u->profile == PROFILE_A2DP) {
+ if (a2dp_process_render(u) < 0)
+ goto fail;
+ } else {
+ if (hsp_process_render(u) < 0)
+ goto fail;
+ }
- do_write = FALSE;
- writable = FALSE;
- }
+ do_write = FALSE;
+ writable = FALSE;
+ }
- if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && !do_write) {
- pa_usec_t time_passed, next_write_at, sleep_for;
+ if ((!u->source || !PA_SOURCE_IS_LINKED(u->source->thread_info.state)) && !do_write) {
+ pa_usec_t time_passed, next_write_at, sleep_for;
- /* Hmm, there is no input stream we could synchronize
- * to. So let's estimate when we need to wake up the latest */
+ /* Hmm, there is no input stream we could synchronize
+ * to. So let's estimate when we need to wake up the latest */
- time_passed = pa_rtclock_usec() - u->started_at;
- next_write_at = pa_bytes_to_usec(u->write_index, &u->sink->sample_spec);
- sleep_for = time_passed < next_write_at ? next_write_at - time_passed : 0;
+ time_passed = pa_rtclock_usec() - u->started_at;
+ next_write_at = pa_bytes_to_usec(u->write_index, &u->sink->sample_spec);
+ sleep_for = time_passed < next_write_at ? next_write_at - time_passed : 0;
/* pa_log("Sleeping for %lu; time passed %lu, next write at %lu", (unsigned long) sleep_for, (unsigned long) time_passed, (unsigned long)next_write_at); */
- pa_rtpoll_set_timer_relative(u->rtpoll, sleep_for);
+ pa_rtpoll_set_timer_relative(u->rtpoll, sleep_for);
+ disable_timer = FALSE;
+ }
}
- } else
+ }
+
+ if (disable_timer)
pa_rtpoll_set_timer_disabled(u->rtpoll);
/* Hmm, nothing to do. Let's sleep */
- pollfd->events = (short) (((u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state) && !writable) ? POLLOUT : 0) |
- (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state) ? POLLIN : 0));
+ if (pollfd)
+ pollfd->events = (short) (((u->sink && PA_SINK_IS_OPENED(u->sink->thread_info.state) && !writable) ? POLLOUT : 0) |
+ (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state) ? POLLIN : 0));
- poll_run:
if ((ret = pa_rtpoll_run(u->rtpoll, TRUE)) < 0)
goto fail;
if (ret == 0)
goto finish;
- if (!u->rtpoll_item) {
- pa_rtpoll_set_timer_disabled(u->rtpoll);
- goto poll_run;
- }
-
- pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL);
+ pollfd = u->rtpoll_item ? pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL) : NULL;
- if (pollfd->revents & ~(POLLOUT|POLLIN)) {
+ if (pollfd && (pollfd->revents & ~(POLLOUT|POLLIN))) {
pa_log_error("FD error.");
goto fail;
}
commit e335b3d6cacf5ae961848e28021eb8713865839f
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Feb 22 03:55:54 2009 +0100
prepare test for tracking down ens1371 issue
diff --git a/src/tests/alsa-time-test.c b/src/tests/alsa-time-test.c
index 3858bf7..e852c3f 100644
--- a/src/tests/alsa-time-test.c
+++ b/src/tests/alsa-time-test.c
@@ -18,7 +18,7 @@ int main(int argc, char *argv[]) {
snd_pcm_status_t *status;
snd_pcm_t *pcm;
unsigned rate = 44100;
- unsigned periods = 0;
+ unsigned periods = 2;
snd_pcm_uframes_t boundary, buffer_size = 44100/10; /* 100s */
int dir = 1;
struct timespec start, last_timestamp = { 0, 0 };
@@ -75,10 +75,13 @@ int main(int argc, char *argv[]) {
r = snd_pcm_hw_params_current(pcm, hwparams);
assert(r == 0);
+ r = snd_pcm_sw_params_current(pcm, swparams);
+ assert(r == 0);
+
r = snd_pcm_sw_params_set_avail_min(pcm, swparams, 1);
assert(r == 0);
- r = snd_pcm_sw_params_set_period_event(pcm, swparams, 1);
+ r = snd_pcm_sw_params_set_period_event(pcm, swparams, 0);
assert(r == 0);
r = snd_pcm_hw_params_get_buffer_size(hwparams, &buffer_size);
@@ -116,7 +119,6 @@ int main(int argc, char *argv[]) {
for (;;) {
snd_pcm_sframes_t avail, delay;
-/* snd_pcm_uframes_t avail2; */
struct timespec now, timestamp;
unsigned short revents;
int written = 0;
@@ -131,29 +133,20 @@ int main(int argc, char *argv[]) {
assert((revents & ~POLLOUT) == 0);
-/* state = snd_pcm_get_state(pcm); */
-
avail = snd_pcm_avail(pcm);
assert(avail >= 0);
r = snd_pcm_status(pcm, status);
assert(r == 0);
- printf("%lu %lu\n", (unsigned long) avail, (unsigned long) snd_pcm_status_get_avail(status));
+ /* This assertion fails from time to time. ALSA seems to be broken */
+/* assert(avail == (snd_pcm_sframes_t) snd_pcm_status_get_avail(status)); */
+/* printf("%lu %lu\n", (unsigned long) avail, (unsigned long) snd_pcm_status_get_avail(status)); */
- assert(avail == (snd_pcm_sframes_t) snd_pcm_status_get_avail(status));
snd_pcm_status_get_htstamp(status, ×tamp);
delay = snd_pcm_status_get_delay(status);
state = snd_pcm_status_get_state(status);
-/* r = snd_pcm_avail_delay(pcm, &avail, &delay); */
-/* assert(r == 0); */
-
-/* r = snd_pcm_htimestamp(pcm, &avail2, ×tamp); */
-/* assert(r == 0); */
-
-/* assert(avail == (snd_pcm_sframes_t) avail2); */
-
r = clock_gettime(CLOCK_MONOTONIC, &now);
assert(r == 0);
@@ -191,6 +184,10 @@ int main(int argc, char *argv[]) {
written,
state);
+ /** When this assert is hit, most likely something bad
+ * happened, i.e. the avail jumped suddenly. */
+ assert((unsigned) avail <= buffer_size);
+
last_avail = avail;
last_delay = delay;
last_timestamp = timestamp;
commit 3bccb704b6cc9c1ba0ef2cd3ffb33a49bec039d5
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Feb 22 05:01:32 2009 +0100
Allow passing a NULL proplist to pa_xxxx_update_proplist() to just fire a notification
diff --git a/src/pulsecore/client.c b/src/pulsecore/client.c
index 7ca7b97..e6e8b52 100644
--- a/src/pulsecore/client.c
+++ b/src/pulsecore/client.c
@@ -132,15 +132,14 @@ void pa_client_set_name(pa_client *c, const char *name) {
pa_log_info("Client %u changed name from \"%s\" to \"%s\"", c->index, pa_strnull(pa_proplist_gets(c->proplist, PA_PROP_APPLICATION_NAME)), name);
pa_proplist_sets(c->proplist, PA_PROP_APPLICATION_NAME, name);
- pa_hook_fire(&c->core->hooks[PA_CORE_HOOK_CLIENT_PROPLIST_CHANGED], c);
- pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CLIENT|PA_SUBSCRIPTION_EVENT_CHANGE, c->index);
+ pa_client_update_proplist(c, 0, NULL);
}
void pa_client_update_proplist(pa_client *c, pa_update_mode_t mode, pa_proplist *p) {
pa_assert(c);
- pa_assert(p);
- pa_proplist_update(c->proplist, mode, p);
+ if (p)
+ pa_proplist_update(c->proplist, mode, p);
pa_hook_fire(&c->core->hooks[PA_CORE_HOOK_CLIENT_PROPLIST_CHANGED], c);
pa_subscription_post(c->core, PA_SUBSCRIPTION_EVENT_CLIENT|PA_SUBSCRIPTION_EVENT_CHANGE, c->index);
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 22419ee..34217c8 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -943,9 +943,9 @@ 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(p);
- pa_proplist_update(i->proplist, mode, p);
+ if (p)
+ pa_proplist_update(i->proplist, mode, p);
if (PA_SINK_IS_LINKED(i->state)) {
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_PROPLIST_CHANGED], i);
diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c
index 382fb88..d63aca1 100644
--- a/src/pulsecore/source-output.c
+++ b/src/pulsecore/source-output.c
@@ -618,9 +618,9 @@ 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(p);
- pa_proplist_update(o->proplist, mode, p);
+ if (p)
+ pa_proplist_update(o->proplist, mode, p);
if (PA_SINK_IS_LINKED(o->state)) {
pa_hook_fire(&o->core->hooks[PA_CORE_HOOK_SOURCE_OUTPUT_PROPLIST_CHANGED], o);
commit 3bc60ca78571b2b2b965748997b2019db222405e
Author: Lennart Poettering <lennart at poettering.net>
Date: Sun Feb 22 05:04:43 2009 +0100
a couple of boring updates
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 840f458..e8659e6 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -404,7 +404,7 @@ static int esd_proto_stream_play(connection *c, esd_proto_t request, const void
if (c->options->default_sink) {
sink = pa_namereg_get(c->protocol->core, c->options->default_sink, PA_NAMEREG_SINK);
- CHECK_VALIDITY(sink, "No such sink: %s", c->options->default_sink);
+ CHECK_VALIDITY(sink, "No such sink: %s", pa_strnull(c->options->default_sink));
}
pa_strlcpy(name, data, sizeof(name));
@@ -489,23 +489,17 @@ static int esd_proto_stream_record(connection *c, esd_proto_t request, const voi
if (request == ESD_PROTO_STREAM_MON) {
pa_sink* sink;
- if (!(sink = pa_namereg_get(c->protocol->core, c->options->default_sink, PA_NAMEREG_SINK))) {
- pa_log("no such sink.");
- return -1;
- }
+ sink = pa_namereg_get(c->protocol->core, c->options->default_sink, PA_NAMEREG_SINK);
+ CHECK_VALIDITY(sink, "No such sink: %s", pa_strnull(c->options->default_sink));
- if (!(source = sink->monitor_source)) {
- pa_log("no such monitor source.");
- return -1;
- }
+ source = sink->monitor_source;
+ CHECK_VALIDITY(source, "No such source.");
} else {
pa_assert(request == ESD_PROTO_STREAM_REC);
if (c->options->default_source) {
- if (!(source = pa_namereg_get(c->protocol->core, c->options->default_source, PA_NAMEREG_SOURCE))) {
- pa_log("no such source.");
- return -1;
- }
+ source = pa_namereg_get(c->protocol->core, c->options->default_source, PA_NAMEREG_SOURCE);
+ CHECK_VALIDITY(source, "No such source: %s", pa_strnull(c->options->default_source));
}
}
@@ -621,7 +615,7 @@ static int esd_proto_all_info(connection *c, esd_proto_t request, const void *da
k = sizeof(int32_t)*5+ESD_NAME_MAX;
s = sizeof(int32_t)*6+ESD_NAME_MAX;
- nsamples = c->protocol->core->scache ? pa_idxset_size(c->protocol->core->scache) : 0;
+ nsamples = pa_idxset_size(c->protocol->core->scache);
t = s*(nsamples+1) + k*(c->protocol->n_player+1);
connection_write_prepare(c, t);
@@ -912,7 +906,13 @@ static int do_read(connection *c) {
ssize_t r;
pa_assert(c->read_data_length < sizeof(c->request));
- if ((r = pa_iochannel_read(c->io, ((uint8_t*) &c->request) + c->read_data_length, sizeof(c->request) - c->read_data_length)) <= 0) {
+ if ((r = pa_iochannel_read(c->io,
+ ((uint8_t*) &c->request) + c->read_data_length,
+ sizeof(c->request) - c->read_data_length)) <= 0) {
+
+ if (r < 0 && (errno == EINTR || errno == EAGAIN))
+ return 0;
+
pa_log_debug("read(): %s", r < 0 ? pa_cstrerror(errno) : "EOF");
return -1;
}
@@ -962,7 +962,10 @@ static int do_read(connection *c) {
pa_assert(c->read_data && c->read_data_length < handler->data_length);
- if ((r = pa_iochannel_read(c->io, (uint8_t*) c->read_data + c->read_data_length, handler->data_length - c->read_data_length)) <= 0) {
+ if ((r = pa_iochannel_read(c->io,
+ (uint8_t*) c->read_data + c->read_data_length,
+ handler->data_length - c->read_data_length)) <= 0) {
+
if (r < 0 && (errno == EINTR || errno == EAGAIN))
return 0;
commit 4ebc6cf86ed9e0f5ddc7bc20ef1e5f5e98a16d43
Author: Colin Guthrie <pulse at colin.guthr.ie>
Date: Sun Feb 22 16:08:43 2009 +0000
Remove references to trademarked terms.
According to http://www.apple.com/legal/trademark/appletmlist.html we could run into
problems for using these terms without also displaying a corresponding disclaimer/attribution
notice. This is difficult in the context of a headless server, so simply don't use such terms.
In GUI apps which can enable this functionality we should use the relevant terminology, and
display the appropriate attribution notices.
diff --git a/src/modules/module-raop-discover.c b/src/modules/module-raop-discover.c
index 3706d92..df39315 100644
--- a/src/modules/module-raop-discover.c
+++ b/src/modules/module-raop-discover.c
@@ -53,7 +53,7 @@
#include "module-raop-discover-symdef.h"
PA_MODULE_AUTHOR("Colin Guthrie");
-PA_MODULE_DESCRIPTION("mDNS/DNS-SD Service Discovery of Airtunes");
+PA_MODULE_DESCRIPTION("mDNS/DNS-SD Service Discovery of RAOP devices");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(TRUE);
@@ -172,9 +172,9 @@ static void resolver_cb(
}
if (device)
- dname = pa_sprintf_malloc("airtunes.%s.%s", host_name, device);
+ dname = pa_sprintf_malloc("raop.%s.%s", host_name, device);
else
- dname = pa_sprintf_malloc("airtunes.%s", host_name);
+ dname = pa_sprintf_malloc("raop.%s", host_name);
if (!(vname = pa_namereg_make_valid_name(dname))) {
pa_log("Cannot construct valid device name from '%s'.", dname);
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index 1784b2c..da338f5 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -67,7 +67,7 @@
#include "raop_client.h"
PA_MODULE_AUTHOR("Colin Guthrie");
-PA_MODULE_DESCRIPTION("RAOP Sink (Apple Airtunes)");
+PA_MODULE_DESCRIPTION("RAOP Sink");
PA_MODULE_VERSION(PACKAGE_VERSION);
PA_MODULE_LOAD_ONCE(FALSE);
PA_MODULE_USAGE(
@@ -77,7 +77,7 @@ PA_MODULE_USAGE(
"channels=<number of channels> "
"rate=<sample rate>");
-#define DEFAULT_SINK_NAME "airtunes"
+#define DEFAULT_SINK_NAME "raop"
struct userdata {
pa_core *core;
@@ -564,7 +564,7 @@ int pa__init(pa_module*m) {
pa_sink_new_data_set_name(&data, pa_modargs_get_value(ma, "sink_name", DEFAULT_SINK_NAME));
pa_sink_new_data_set_sample_spec(&data, &ss);
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, server);
- pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "Airtunes sink '%s'", server);
+ pa_proplist_setf(data.proplist, PA_PROP_DEVICE_DESCRIPTION, "RAOP sink '%s'", server);
u->sink = pa_sink_new(m->core, &data, PA_SINK_LATENCY|PA_SINK_NETWORK);
pa_sink_new_data_done(&data);
commit 2a0d2522e00d4402346d97e2f3b650de413c4fdb
Author: Colin Guthrie <pulse at colin.guthr.ie>
Date: Sun Feb 22 16:36:16 2009 +0000
Add the module dir to the libpulse pkgconfig file (needed for paprefs)
diff --git a/libpulse.pc.in b/libpulse.pc.in
index 161599e..c78b123 100644
--- a/libpulse.pc.in
+++ b/libpulse.pc.in
@@ -2,6 +2,7 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
+modlibexecdir=@modlibexecdir@
Name: libpulse
Description: PulseAudio Client Interface
commit 5cc9d970c83791f5b71b558c438587d5872449f0
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 22:54:28 2009 +0100
add new function pa_alsa_get_driver_name_by_pcm()
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 016e52a..274fef4 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1637,3 +1637,18 @@ char *pa_alsa_get_driver_name(int card) {
return n;
}
+
+char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm) {
+ int card;
+
+ snd_pcm_info_t* info;
+ snd_pcm_info_alloca(&info);
+
+ if (snd_pcm_info(pcm, info) < 0)
+ return NULL;
+
+ if ((card = snd_pcm_info_get_card(info)) < 0)
+ return NULL;
+
+ return pa_alsa_get_driver_name(card);
+}
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 2d0f407..92f6797 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -133,4 +133,6 @@ int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas
char *pa_alsa_get_driver_name(int card);
+char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm);
+
#endif
commit 557a90c487a5b681af6c01309fee89bd203b09c6
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 22:55:33 2009 +0100
add new wrapper pa_alsa_safe_delay() around snd_pcm_delay()
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 274fef4..9be8153 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1586,6 +1586,43 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
return n;
}
+int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delay, size_t hwbuf_size, const pa_sample_spec *ss) {
+ ssize_t k;
+ size_t abs_k;
+ int r;
+
+ pa_assert(pcm);
+ pa_assert(delay);
+ pa_assert(hwbuf_size > 0);
+ pa_assert(ss);
+
+ /* Some ALSA driver expose weird bugs, let's inform the user about
+ * what is going on */
+
+ if ((r = snd_pcm_delay(pcm, delay)) < 0)
+ return r;
+
+ k = (ssize_t) *delay * (ssize_t) pa_frame_size(ss);
+
+ abs_k = k >= 0 ? (size_t) k : (size_t) -k;
+
+ if (abs_k >= hwbuf_size * 3 ||
+ abs_k >= pa_bytes_per_second(ss)*10)
+
+ PA_ONCE_BEGIN {
+ char *dn = pa_alsa_get_driver_name_by_pcm(pcm);
+ pa_log(_("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."),
+ (signed long) k,
+ k < 0 ? "-" : "",
+ (unsigned long) (pa_bytes_to_usec(abs_k, ss) / PA_USEC_PER_MSEC),
+ pa_strnull(dn));
+ pa_xfree(dn);
+ } PA_ONCE_END;
+
+ return 0;
+}
+
int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas, snd_pcm_uframes_t *offset, snd_pcm_uframes_t *frames, size_t hwbuf_size, const pa_sample_spec *ss) {
int r;
snd_pcm_uframes_t before;
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index 92f6797..eddc41b 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -129,6 +129,7 @@ int pa_alsa_recover_from_poll(snd_pcm_t *pcm, int revents);
pa_rtpoll_item* pa_alsa_build_pollfd(snd_pcm_t *pcm, pa_rtpoll *rtpoll);
snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa_sample_spec *ss);
+int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delay, size_t hwbuf_size, const pa_sample_spec *ss);
int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas, snd_pcm_uframes_t *offset, snd_pcm_uframes_t *frames, size_t hwbuf_size, const pa_sample_spec *ss);
char *pa_alsa_get_driver_name(int card);
commit 33601afbb11b6caba8c2f057839bd234e094175a
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 22:56:09 2009 +0100
print driver name when we encounter driver bugs
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index ef51f1d..6157549 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -306,9 +306,12 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (polled)
PA_ONCE_BEGIN {
- pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ char *dn = pa_alsa_get_driver_name_by_pcm(u->pcm_handle);
+ pa_log(_("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."),
+ pa_strnull(dn));
+ pa_xfree(dn);
} PA_ONCE_END;
#ifdef DEBUG_TIMING
@@ -435,9 +438,12 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (polled)
PA_ONCE_BEGIN {
- pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ char *dn = pa_alsa_get_driver_name_by_pcm(u->pcm_handle);
+ pa_log(_("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."),
+ pa_strnull(dn));
+ pa_xfree(dn);
} PA_ONCE_END;
break;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index fbc21f7..b0b9d9f 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -289,9 +289,12 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (polled)
PA_ONCE_BEGIN {
- pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ char *dn = pa_alsa_get_driver_name_by_pcm(u->pcm_handle);
+ pa_log(_("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."),
+ pa_strnull(dn));
+ pa_xfree(dn);
} PA_ONCE_END;
#ifdef DEBUG_TIMING
@@ -410,9 +413,12 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (polled)
PA_ONCE_BEGIN {
- pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
- "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
+ char *dn = pa_alsa_get_driver_name_by_pcm(u->pcm_handle);
+ pa_log(_("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."),
+ pa_strnull(dn));
+ pa_xfree(dn);
} PA_ONCE_END;
break;
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 9be8153..8eedeeb 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1578,9 +1578,13 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
k >= pa_bytes_per_second(ss)*10)
PA_ONCE_BEGIN {
- pa_log(_("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
- (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
+ char *dn = pa_alsa_get_driver_name_by_pcm(pcm);
+ pa_log(_("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."),
+ (unsigned long) k,
+ (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC),
+ pa_strnull(dn));
+ pa_xfree(dn);
} PA_ONCE_END;
return n;
@@ -1649,9 +1653,13 @@ int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas
k >= pa_bytes_per_second(ss)*10)
PA_ONCE_BEGIN {
- pa_log(_("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). "
- "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
- (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
+ char *dn = pa_alsa_get_driver_name_by_pcm(pcm);
+ pa_log(_("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."),
+ (unsigned long) k,
+ (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC),
+ pa_strnull(dn));
+ pa_xfree(dn);
} PA_ONCE_END;
return r;
commit 023ba8975be6e3a592ed0e7cd5723b8152dec4a6
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 22:56:34 2009 +0100
use pa_alsa_safe_delay() where appropriate
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 6157549..d4a54fe 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -522,7 +522,7 @@ static void update_smoother(struct userdata *u) {
/* Let's update the time smoother */
- if (PA_UNLIKELY((err = snd_pcm_delay(u->pcm_handle, &delay)) < 0)) {
+ if (PA_UNLIKELY((err = pa_alsa_safe_delay(u->pcm_handle, &delay, u->hwbuf_size, &u->sink->sample_spec)) < 0)) {
pa_log_warn("Failed to query DSP status data: %s", snd_strerror(err));
return;
}
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index b0b9d9f..f2dad4c 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -492,7 +492,7 @@ static void update_smoother(struct userdata *u) {
/* Let's update the time smoother */
- if (PA_UNLIKELY((err = snd_pcm_delay(u->pcm_handle, &delay)) < 0)) {
+ if (PA_UNLIKELY((err = pa_alsa_safe_delay(u->pcm_handle, &delay, u->hwbuf_size, &u->source->sample_spec)) < 0)) {
pa_log_warn("Failed to get delay: %s", snd_strerror(err));
return;
}
commit 5fa3f0c497363f84294c0faf9945481634415a3b
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 22:57:09 2009 +0100
allow scache entries to have arbitrary names
diff --git a/src/pulsecore/namereg.c b/src/pulsecore/namereg.c
index 86bcef7..5ab3036 100644
--- a/src/pulsecore/namereg.c
+++ b/src/pulsecore/namereg.c
@@ -194,7 +194,11 @@ void* pa_namereg_get(pa_core *c, const char *name, pa_namereg_type_t type) {
}
- if (!name || *name == '@' || !pa_namereg_is_valid_name(name))
+ if (!name)
+ return NULL;
+
+ if ((type == PA_NAMEREG_SINK || type == PA_NAMEREG_SOURCE || type == PA_NAMEREG_CARD) &&
+ !pa_namereg_is_valid_name(name))
return NULL;
if ((e = pa_hashmap_get(c->namereg, name)))
commit 73c763cb0820bd9671a291c0a7469332ffe6a380
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 23:49:08 2009 +0100
set esound.byte_order property
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index e8659e6..3d90306 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -34,6 +34,7 @@
#include <pulse/timeval.h>
#include <pulse/utf8.h>
#include <pulse/xmalloc.h>
+#include <pulse/proplist.h>
#include <pulsecore/esound.h>
#include <pulsecore/memblock.h>
@@ -372,6 +373,8 @@ static int esd_proto_connect(connection *c, esd_proto_t request, const void *dat
return -1;
}
+ pa_proplist_sets(c->client->proplist, "esound.byte_order", c->swap_byte_order ? "reverse" : "native");
+
ok = 1;
connection_write(c, &ok, sizeof(int));
return 0;
commit 2e9479b1f32517aa1449d35aee135cb791b0f451
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 23:51:29 2009 +0100
implement esd sample panning. closes #428
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 3d90306..ddecb8f 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -165,6 +165,7 @@ static int esd_proto_get_latency(connection *c, esd_proto_t request, const void
static int esd_proto_server_info(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_all_info(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_stream_pan(connection *c, esd_proto_t request, const void *data, size_t length);
+static int esd_proto_sample_pan(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_sample_cache(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_sample_free_or_play(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_sample_get_id(connection *c, esd_proto_t request, const void *data, size_t length);
@@ -199,7 +200,7 @@ static struct proto_handler proto_map[ESD_PROTO_MAX] = {
{ (size_t) -1, NULL, "TODO: unsubscribe" },
{ 3 * sizeof(int), esd_proto_stream_pan, "stream pan"},
- { 3 * sizeof(int), NULL, "sample pan" },
+ { 3 * sizeof(int), esd_proto_sample_pan, "sample pan" },
{ sizeof(int), NULL, "standby mode" },
{ 0, esd_proto_get_latency, "get latency" }
@@ -685,9 +686,26 @@ static int esd_proto_all_info(connection *c, esd_proto_t request, const void *da
for (ce = pa_idxset_first(c->protocol->core->scache, &idx); ce; ce = pa_idxset_next(c->protocol->core->scache, &idx)) {
int32_t id, rate, lvolume, rvolume, format, len;
char name[ESD_NAME_MAX];
+ pa_channel_map stereo = { .channels = 2, .map = { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT } };
+ pa_cvolume volume;
+ pa_sample_spec ss;
pa_assert(t >= s*2);
+ if (ce->volume_is_set) {
+ volume = ce->volume;
+ pa_cvolume_remap(&volume, &ce->channel_map, &stereo);
+ } else
+ pa_cvolume_reset(&volume, 2);
+
+ if (ce->memchunk.memblock)
+ ss = ce->sample_spec;
+ else {
+ ss.format = PA_SAMPLE_S16NE;
+ ss.rate = 44100;
+ ss.channels = 2;
+ }
+
/* id */
id = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int) (ce->index+1));
connection_write(c, &id, sizeof(int32_t));
@@ -701,19 +719,19 @@ static int esd_proto_all_info(connection *c, esd_proto_t request, const void *da
connection_write(c, name, ESD_NAME_MAX);
/* rate */
- rate = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int32_t) ce->sample_spec.rate);
+ rate = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int32_t) ss.rate);
connection_write(c, &rate, sizeof(int32_t));
/* left */
- lvolume = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int32_t) ((ce->volume.values[0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM));
+ lvolume = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int32_t) ((volume.values[0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM));
connection_write(c, &lvolume, sizeof(int32_t));
/*right*/
- rvolume = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int32_t) ((ce->volume.values[0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM));
+ rvolume = PA_MAYBE_INT32_SWAP(c->swap_byte_order, (int32_t) ((volume.values[1]*ESD_VOLUME_BASE)/PA_VOLUME_NORM));
connection_write(c, &rvolume, sizeof(int32_t));
/*format*/
- format = PA_MAYBE_INT32_SWAP(c->swap_byte_order, format_native2esd(&ce->sample_spec));
+ format = PA_MAYBE_INT32_SWAP(c->swap_byte_order, format_native2esd(&ss));
connection_write(c, &format, sizeof(int32_t));
/*length*/
@@ -767,6 +785,46 @@ static int esd_proto_stream_pan(connection *c, esd_proto_t request, const void *
return 0;
}
+static int esd_proto_sample_pan(connection *c, esd_proto_t request, const void *data, size_t length) {
+ int32_t ok = 0;
+ uint32_t idx, lvolume, rvolume;
+ pa_cvolume volume;
+ pa_scache_entry *ce;
+
+ connection_assert_ref(c);
+ pa_assert(data);
+ pa_assert(length == sizeof(int32_t)*3);
+
+ memcpy(&idx, data, sizeof(uint32_t));
+ idx = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, idx) - 1;
+ data = (const char*)data + sizeof(uint32_t);
+
+ memcpy(&lvolume, data, sizeof(uint32_t));
+ lvolume = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, lvolume);
+ data = (const char*)data + sizeof(uint32_t);
+
+ memcpy(&rvolume, data, sizeof(uint32_t));
+ rvolume = PA_MAYBE_UINT32_SWAP(c->swap_byte_order, rvolume);
+ data = (const char*)data + sizeof(uint32_t);
+
+ volume.values[0] = (lvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
+ volume.values[1] = (rvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
+ volume.channels = 2;
+
+ if ((ce = pa_idxset_get_by_index(c->protocol->core->scache, idx))) {
+ pa_channel_map stereo = { .channels = 2, .map = { PA_CHANNEL_POSITION_LEFT, PA_CHANNEL_POSITION_RIGHT } };
+
+ pa_cvolume_remap(&volume, &stereo, &ce->channel_map);
+ ce->volume = volume;
+ ce->volume_is_set = TRUE;
+ ok = 1;
+ }
+
+ connection_write(c, &ok, sizeof(int32_t));
+
+ return 0;
+}
+
static int esd_proto_sample_cache(connection *c, esd_proto_t request, const void *data, size_t length) {
pa_sample_spec ss;
int32_t format, rate, sc_length;
commit 385a560c823c022c9755915e857f079c217f8ee9
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 23:51:53 2009 +0100
complete esd suspend/resume implementation
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index ddecb8f..0e3f564 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -170,6 +170,7 @@ static int esd_proto_sample_cache(connection *c, esd_proto_t request, const void
static int esd_proto_sample_free_or_play(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_sample_get_id(connection *c, esd_proto_t request, const void *data, size_t length);
static int esd_proto_standby_or_resume(connection *c, esd_proto_t request, const void *data, size_t length);
+static int esd_proto_standby_mode(connection *c, esd_proto_t request, const void *data, size_t length);
/* the big map of protocol handler info */
static struct proto_handler proto_map[ESD_PROTO_MAX] = {
@@ -188,8 +189,8 @@ static struct proto_handler proto_map[ESD_PROTO_MAX] = {
{ sizeof(int), NULL, "sample stop" },
{ (size_t) -1, NULL, "TODO: sample kill" },
- { ESD_KEY_LEN + sizeof(int), esd_proto_standby_or_resume, "standby" }, /* NOOP! */
- { ESD_KEY_LEN + sizeof(int), esd_proto_standby_or_resume, "resume" }, /* NOOP! */ /* 13 */
+ { ESD_KEY_LEN + sizeof(int), esd_proto_standby_or_resume, "standby" },
+ { ESD_KEY_LEN + sizeof(int), esd_proto_standby_or_resume, "resume" }, /* 13 */
{ ESD_NAME_MAX, esd_proto_sample_get_id, "sample getid" }, /* 14 */
{ ESD_NAME_MAX + 2 * sizeof(int), NULL, "stream filter" },
@@ -202,7 +203,7 @@ static struct proto_handler proto_map[ESD_PROTO_MAX] = {
{ 3 * sizeof(int), esd_proto_stream_pan, "stream pan"},
{ 3 * sizeof(int), esd_proto_sample_pan, "sample pan" },
- { sizeof(int), NULL, "standby mode" },
+ { sizeof(int), esd_proto_standby_mode, "standby mode" },
{ 0, esd_proto_get_latency, "get latency" }
};
@@ -935,19 +936,47 @@ static int esd_proto_sample_free_or_play(connection *c, esd_proto_t request, con
}
static int esd_proto_standby_or_resume(connection *c, esd_proto_t request, const void *data, size_t length) {
- int32_t ok;
+ int32_t ok = 1;
connection_assert_ref(c);
connection_write_prepare(c, sizeof(int32_t) * 2);
-
- ok = 1;
connection_write(c, &ok, sizeof(int32_t));
+
+ if (request == ESD_PROTO_STANDBY)
+ ok = pa_sink_suspend_all(c->protocol->core, TRUE) >= 0;
+ else {
+ pa_assert(request == ESD_PROTO_RESUME);
+ ok = pa_sink_suspend_all(c->protocol->core, FALSE) >= 0;
+ }
+
connection_write(c, &ok, sizeof(int32_t));
return 0;
}
+static int esd_proto_standby_mode(connection *c, esd_proto_t request, const void *data, size_t length) {
+ int32_t mode;
+ pa_sink *sink, *source;
+
+ connection_assert_ref(c);
+
+ mode = ESM_RUNNING;
+
+ if ((sink = pa_namereg_get(c->protocol->core, c->options->default_sink, PA_NAMEREG_SINK)))
+ if (pa_sink_get_state(sink) == PA_SINK_SUSPENDED)
+ mode = ESM_ON_STANDBY;
+
+ if ((source = pa_namereg_get(c->protocol->core, c->options->default_source, PA_NAMEREG_SOURCE)))
+ if (pa_source_get_state(source) == PA_SOURCE_SUSPENDED)
+ mode = ESM_ON_STANDBY;
+
+ mode = PA_MAYBE_INT32_SWAP(c->swap_byte_order, mode);
+
+ connection_write(c, &mode, sizeof(mode));
+ return 0;
+}
+
/*** client callbacks ***/
static void client_kill_cb(pa_client *c) {
commit e0b550710a6d8f5af5209d319de3694243f87b8f
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 23:55:05 2009 +0100
it's probably more appropriate to return the configured latency instead of the actual latency
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 0e3f564..7101aae 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -569,7 +569,7 @@ static int esd_proto_get_latency(connection *c, esd_proto_t request, const void
if (!(sink = pa_namereg_get(c->protocol->core, c->options->default_sink, PA_NAMEREG_SINK)))
latency = 0;
else {
- double usec = (double) pa_sink_get_latency(sink);
+ double usec = (double) pa_sink_get_requested_latency(sink);
latency = (int) ((usec*44100)/1000000);
}
commit 998aa40875472c41b74fcecb0eb40c31b690cba7
Author: Lennart Poettering <lennart at poettering.net>
Date: Mon Feb 23 23:55:16 2009 +0100
fix handling of stereo
diff --git a/src/pulsecore/protocol-esound.c b/src/pulsecore/protocol-esound.c
index 7101aae..2d4e62f 100644
--- a/src/pulsecore/protocol-esound.c
+++ b/src/pulsecore/protocol-esound.c
@@ -640,7 +640,7 @@ static int esd_proto_all_info(connection *c, esd_proto_t request, const void *da
pa_cvolume volume = *pa_sink_input_get_volume(conn->sink_input);
rate = (int32_t) conn->sink_input->sample_spec.rate;
lvolume = (int32_t) ((volume.values[0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM);
- rvolume = (int32_t) ((volume.values[1]*ESD_VOLUME_BASE)/PA_VOLUME_NORM);
+ rvolume = (int32_t) ((volume.values[volume.channels == 2 ? 1 : 0]*ESD_VOLUME_BASE)/PA_VOLUME_NORM);
format = format_native2esd(&conn->sink_input->sample_spec);
}
@@ -775,7 +775,8 @@ static int esd_proto_stream_pan(connection *c, esd_proto_t request, const void *
pa_cvolume volume;
volume.values[0] = (lvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
volume.values[1] = (rvolume*PA_VOLUME_NORM)/ESD_VOLUME_BASE;
- volume.channels = 2;
+ volume.channels = conn->sink_input->sample_spec.channels;
+
pa_sink_input_set_volume(conn->sink_input, &volume, TRUE);
ok = 1;
} else
commit 1ddf64a4816b0f43ef6d73f877728166f4f3ba25
Author: Kelemen Gábor <gabor at shaihulud.(none)>
Date: Sat Feb 21 21:01:31 2009 +0100
Make pulseaudio.desktop and org.pulseaudio.policy translatable.
diff --git a/src/daemon/org.pulseaudio.policy.in b/src/daemon/org.pulseaudio.policy.in
new file mode 100644
index 0000000..1d0b6a7
--- /dev/null
+++ b/src/daemon/org.pulseaudio.policy.in
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?><!--*-nxml-*-->
+<!DOCTYPE policyconfig PUBLIC
+ "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.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.
+-->
+
+<policyconfig>
+ <vendor>The PulseAudio Project</vendor>
+ <vendor_url>http://pulseaudio.org/</vendor_url>
+ <icon_name>audio-card</icon_name>
+
+ <action id="org.pulseaudio.acquire-real-time">
+ <_description>Real-time scheduling for the PulseAudio daemon</_description>
+ <_message>System policy prevents PulseAudio from acquiring real-time scheduling.</_message>
+ <defaults>
+ <allow_any>no</allow_any>
+ <allow_inactive>no</allow_inactive>
+ <allow_active>no</allow_active>
+ </defaults>
+ </action>
+
+ <action id="org.pulseaudio.acquire-high-priority">
+ <_description>High-priority scheduling (negative Unix nice level) for the PulseAudio daemon</_description>
+ <_message>System policy prevents PulseAudio from acquiring high-priority scheduling.</_message>
+ <defaults>
+ <allow_any>no</allow_any>
+ <allow_inactive>no</allow_inactive>
+ <allow_active>no</allow_active>
+ </defaults>
+ </action>
+
+</policyconfig>
diff --git a/src/daemon/pulseaudio.desktop.in b/src/daemon/pulseaudio.desktop.in
new file mode 100644
index 0000000..99bdbd0
--- /dev/null
+++ b/src/daemon/pulseaudio.desktop.in
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+_Name=PulseAudio Sound System
+_Comment=Start the PulseAudio Sound System
+Exec=start-pulseaudio-x11
+Terminal=false
+Type=Application
+Categories=
+GenericName=
commit 9372733c9864836d118abe92f9136614ccc7f449
Author: Kelemen Gábor <gabor at shaihulud.(none)>
Date: Sat Feb 21 21:14:56 2009 +0100
Make .desktop and .policy file in src/daemon translatable
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 324b946..0d5b42f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -155,6 +155,8 @@ src/daemon/cmdline.c
src/daemon/dumpmodules.c
src/daemon/daemon-conf.c
src/daemon/caps.c
+src/daemon/pulseaudio.desktop.in
+src/daemon/org.pulseaudio.policy.in
src/pulse/channelmap.c
src/pulse/error.c
src/pulse/proplist.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 46c3d2e..4b467f8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -105,9 +105,9 @@ EXTRA_DIST = \
daemon/start-pulseaudio-x11.in \
utils/padsp \
modules/module-defs.h.m4 \
- daemon/pulseaudio.desktop \
+ daemon/pulseaudio.desktop.in \
map-file \
- daemon/org.pulseaudio.policy
+ daemon/org.pulseaudio.policy.in
pulseconf_DATA = \
default.pa \
@@ -116,9 +116,12 @@ pulseconf_DATA = \
client.conf
if HAVE_X11
-xdgautostart_DATA = \
- daemon/pulseaudio.desktop
+xdgautostart_in_files = \
+ daemon/pulseaudio.desktop.in
endif
+xdgautostart_DATA = $(xdgautostart_in_files:.desktop.in=.desktop)
+ at INTLTOOL_DESKTOP_RULE@
+
BUILT_SOURCES = \
pulse/version.h
@@ -156,7 +159,9 @@ pulseaudio_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -dlopen force $(foreach f,$(PRE
endif
if HAVE_POLKIT
-policy_DATA = daemon/org.pulseaudio.policy
+policy_in_files = daemon/org.pulseaudio.policy.in
+policy_DATA = $(policy_in_files:.policy.in=.policy)
+ at INTLTOOL_POLICY_RULE@
pulseaudio_SOURCES += daemon/polkit.c daemon/polkit.h
pulseaudio_CFLAGS += $(POLKIT_CFLAGS)
@@ -1543,7 +1548,7 @@ suid: pulseaudio .libs/lt-pulseaudio
chown root $^
chmod u+s $^
-CLEANFILES = esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11
+CLEANFILES = esdcompat client.conf default.pa system.pa daemon.conf start-pulseaudio-x11 daemon/pulseaudio.desktop daemon/org.pulseaudio.policy
esdcompat: daemon/esdcompat.in Makefile
sed -e 's, at PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
diff --git a/src/daemon/org.pulseaudio.policy b/src/daemon/org.pulseaudio.policy
deleted file mode 100644
index 6cdeec6..0000000
--- a/src/daemon/org.pulseaudio.policy
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><!--*-nxml-*-->
-<!DOCTYPE policyconfig PUBLIC
- "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.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.
--->
-
-<policyconfig>
- <vendor>The PulseAudio Project</vendor>
- <vendor_url>http://pulseaudio.org/</vendor_url>
- <icon_name>audio-card</icon_name>
-
- <action id="org.pulseaudio.acquire-real-time">
- <description>Real-time scheduling for the PulseAudio daemon</description>
- <message>System policy prevents PulseAudio from acquiring real-time scheduling.</message>
- <defaults>
- <allow_any>no</allow_any>
- <allow_inactive>no</allow_inactive>
- <allow_active>no</allow_active>
- </defaults>
- </action>
-
- <action id="org.pulseaudio.acquire-high-priority">
- <description>High-priority scheduling (negative Unix nice level) for the PulseAudio daemon</description>
- <message>System policy prevents PulseAudio from acquiring high-priority scheduling.</message>
- <defaults>
- <allow_any>no</allow_any>
- <allow_inactive>no</allow_inactive>
- <allow_active>no</allow_active>
- </defaults>
- </action>
-
-</policyconfig>
diff --git a/src/daemon/pulseaudio.desktop b/src/daemon/pulseaudio.desktop
deleted file mode 100644
index 57a7a6e..0000000
--- a/src/daemon/pulseaudio.desktop
+++ /dev/null
@@ -1,10 +0,0 @@
-[Desktop Entry]
-Version=1.0
-Encoding=UTF-8
-Name=PulseAudio Sound System
-Comment=Start the PulseAudio Sound System
-Exec=start-pulseaudio-x11
-Terminal=false
-Type=Application
-Categories=
-GenericName=
commit c73887d2295c02b284ddc9650174eb56582675a8
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 00:24:31 2009 +0100
update gitignore
diff --git a/po/.gitignore b/po/.gitignore
index 2691982..9a0243a 100644
--- a/po/.gitignore
+++ b/po/.gitignore
@@ -1,3 +1,4 @@
+.intltool-merge-cache
Makefile.in.in
Makevars.template
POTFILES
diff --git a/src/.gitignore b/src/.gitignore
index 4da445b..80d33d3 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,3 +1,4 @@
+alsa-time-test
gtk-test
prioq-test
lock-autospawn-test
diff --git a/src/daemon/.gitignore b/src/daemon/.gitignore
new file mode 100644
index 0000000..0efa55b
--- /dev/null
+++ b/src/daemon/.gitignore
@@ -0,0 +1,2 @@
+org.pulseaudio.policy
+pulseaudio.desktop
commit fb49399a0cf8c6e42f4c3f25dbe4753add4251f8
Merge: c73887d... 2a0d252...
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 00:26:07 2009 +0100
Merge commit 'coling/master'
commit 9eb50701b6a6e8e5b74236bc954e94097eb7e680
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 01:44:46 2009 +0100
introduce new well-known role 'a11y'
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index 7a58568..d30dc3b 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -51,7 +51,7 @@ PA_C_DECL_BEGIN
/** For streams: an XDG icon name for the media. e.g. "audio-x-mp3" */
#define PA_PROP_MEDIA_ICON_NAME "media.icon_name"
-/** For streams: logic role of this media. One of the strings "video", "music", "game", "event", "phone", "animation", "production" */
+/** For streams: logic role of this media. One of the strings "video", "music", "game", "event", "phone", "animation", "production", "a11y" */
#define PA_PROP_MEDIA_ROLE "media.role"
/** For event sound streams: XDG event sound name. e.g. "message-new-email" (Event sound streams are those with media.role set to "event") */
commit ec9f8f10f358ededa1dec0e3f7f57669fce58547
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 06:06:04 2009 +0100
if ALSA gives us nonsensical data at least try to fix it up a little
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 8eedeeb..30d57e0 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1574,8 +1574,8 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
k = (size_t) n * pa_frame_size(ss);
- if (k >= hwbuf_size * 3 ||
- k >= pa_bytes_per_second(ss)*10)
+ if (k >= hwbuf_size * 5 ||
+ k >= pa_bytes_per_second(ss)*10) {
PA_ONCE_BEGIN {
char *dn = pa_alsa_get_driver_name_by_pcm(pcm);
@@ -1587,6 +1587,10 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
pa_xfree(dn);
} PA_ONCE_END;
+ /* Mhmm, let's try not to fail completely */
+ n = (snd_pcm_sframes_t) (hwbuf_size / pa_frame_size(ss));
+ }
+
return n;
}
@@ -1610,8 +1614,8 @@ int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delay, size_t hwbuf_si
abs_k = k >= 0 ? (size_t) k : (size_t) -k;
- if (abs_k >= hwbuf_size * 3 ||
- abs_k >= pa_bytes_per_second(ss)*10)
+ if (abs_k >= hwbuf_size * 5 ||
+ abs_k >= pa_bytes_per_second(ss)*10) {
PA_ONCE_BEGIN {
char *dn = pa_alsa_get_driver_name_by_pcm(pcm);
@@ -1624,6 +1628,13 @@ int pa_alsa_safe_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delay, size_t hwbuf_si
pa_xfree(dn);
} PA_ONCE_END;
+ /* Mhmm, let's try not to fail completely */
+ if (k < 0)
+ *delay = -(snd_pcm_sframes_t) (hwbuf_size / pa_frame_size(ss));
+ else
+ *delay = (snd_pcm_sframes_t) (hwbuf_size / pa_frame_size(ss));
+ }
+
return 0;
}
commit 3c73025bf52bf7e652f6f8e7ff59b6e10790bdfc
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 06:11:42 2009 +0100
in case alsa lies to use don't spin forever
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index d4a54fe..0a1ebb1 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -255,6 +255,7 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
pa_bool_t work_done = TRUE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_play;
+ unsigned j = 0;
pa_assert(u);
pa_sink_assert_ref(u->sink);
@@ -320,6 +321,15 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
break;
}
+
+ if (++j > 10) {
+#ifdef DEBUG_TIMING
+ pa_log_debug("Not filling up, because already too many iterations.");
+#endif
+
+ break;
+ }
+
n_bytes -= u->hwbuf_unused;
polled = FALSE;
@@ -399,6 +409,7 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
pa_bool_t work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_play;
+ unsigned j = 0;
pa_assert(u);
pa_sink_assert_ref(u->sink);
@@ -449,6 +460,14 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
break;
}
+ if (++j > 10) {
+#ifdef DEBUG_TIMING
+ pa_log_debug("Not filling up, because already too many iterations.");
+#endif
+
+ break;
+ }
+
n_bytes -= u->hwbuf_unused;
polled = FALSE;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index f2dad4c..ad9a7f2 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -248,6 +248,7 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
pa_bool_t work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_record;
+ unsigned j = 0;
pa_assert(u);
pa_source_assert_ref(u->source);
@@ -303,6 +304,14 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
break;
}
+ if (++j > 10) {
+#ifdef DEBUG_TIMING
+ pa_log_debug("Not filling up, because already too many iterations.");
+#endif
+
+ break;
+ }
+
polled = FALSE;
#ifdef DEBUG_TIMING
@@ -381,6 +390,7 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
int work_done = FALSE;
pa_usec_t max_sleep_usec = 0, process_usec = 0;
size_t left_to_record;
+ unsigned j = 0;
pa_assert(u);
pa_source_assert_ref(u->source);
@@ -424,6 +434,14 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
break;
}
+ if (++j > 10) {
+#ifdef DEBUG_TIMING
+ pa_log_debug("Not filling up, because already too many iterations.");
+#endif
+
+ break;
+ }
+
polled = FALSE;
for (;;) {
commit c341010304064c9a6ae13fab15c7fa7883acaeeb
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 06:13:39 2009 +0100
implement device reservation scheme
diff --git a/src/Makefile.am b/src/Makefile.am
index 4b467f8..1fc8735 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1309,10 +1309,16 @@ libalsa_util_la_CFLAGS = $(AM_CFLAGS) $(ASOUNDLIB_CFLAGS)
if HAVE_HAL
libalsa_util_la_SOURCES += modules/hal-util.h modules/hal-util.c
-libalsa_util_la_LIBADD += $(HAL_LIBS) libdbus-util.la
+libalsa_util_la_LIBADD += $(HAL_LIBS)
libalsa_util_la_CFLAGS += $(HAL_CFLAGS)
endif
+if HAVE_DBUS
+libalsa_util_la_SOURCES += modules/reserve.h modules/reserve.c modules/reserve-wrap.c modules/reserve-wrap.h
+libalsa_util_la_LIBADD += $(DBUS_LIBS)
+libalsa_util_la_CFLAGS += $(DBUS_CFLAGS)
+endif
+
module_alsa_sink_la_SOURCES = modules/alsa/module-alsa-sink.c
module_alsa_sink_la_LDFLAGS = $(MODULE_LDFLAGS)
module_alsa_sink_la_LIBADD = $(AM_LIBADD) $(ASOUNDLIB_LIBS) libalsa-util.la libpulsecore- at PA_MAJORMINORMICRO@.la libpulsecommon- at PA_MAJORMINORMICRO@.la libpulse.la
@@ -1614,6 +1620,11 @@ update-sbc:
wget -O modules/bluetooth/$$i http://git.kernel.org/\?p=bluetooth/bluez.git\;a=blob_plain\;f=audio/$$i ; \
done
+update-reserve:
+ for i in reserve.c reserve.h ; do \
+ wget -O modules/$$i http://git.0pointer.de/\?p=reserve.git\;a=blob_plain\;f=$$i\;hb=master ; \
+ done
+
# Automatically generate linker version script. We use the same one for all public .sos
update-map-file:
( echo "PULSE_0 {" ; \
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 0a1ebb1..83fc9e1 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -53,6 +53,8 @@
#include <pulsecore/rtclock.h>
#include <pulsecore/time-smoother.h>
+#include <modules/reserve-wrap.h>
+
#include "alsa-util.h"
#include "alsa-sink.h"
@@ -101,10 +103,62 @@ struct userdata {
pa_smoother *smoother;
uint64_t write_count;
uint64_t since_start;
+
+ pa_reserve_wrapper *reserve;
+ pa_hook_slot *reserve_slot;
};
static void userdata_free(struct userdata *u);
+static pa_hook_result_t reserve_cb(pa_reserve_wrapper *r, void *forced, struct userdata *u) {
+ pa_assert(r);
+ pa_assert(u);
+
+ if (pa_sink_suspend(u->sink, TRUE) < 0)
+ return PA_HOOK_CANCEL;
+
+ return PA_HOOK_OK;
+}
+
+static void reserve_done(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->reserve_slot) {
+ pa_hook_slot_free(u->reserve_slot);
+ u->reserve_slot = NULL;
+ }
+
+ if (u->reserve) {
+ pa_reserve_wrapper_unref(u->reserve);
+ u->reserve = NULL;
+ }
+}
+
+static int reserve_init(struct userdata *u, const char *dname) {
+ char *rname;
+
+ pa_assert(u);
+ pa_assert(dname);
+
+ if (u->reserve)
+ return 0;
+
+ /* We are resuming, try to lock the device */
+ if (!(rname = pa_alsa_get_reserve_name(dname)))
+ return 0;
+
+ u->reserve = pa_reserve_wrapper_get(u->core, rname);
+ pa_xfree(rname);
+
+ if (!(u->reserve))
+ return -1;
+
+ pa_assert(!u->reserve_slot);
+ u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
+
+ return 0;
+}
+
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
@@ -601,6 +655,7 @@ static int build_pollfd(struct userdata *u) {
return 0;
}
+/* Called from IO context */
static int suspend(struct userdata *u) {
pa_assert(u);
pa_assert(u->pcm_handle);
@@ -622,6 +677,7 @@ static int suspend(struct userdata *u) {
return 0;
}
+/* Called from IO context */
static int update_sw_params(struct userdata *u) {
snd_pcm_uframes_t avail_min;
int err;
@@ -677,6 +733,7 @@ static int update_sw_params(struct userdata *u) {
return 0;
}
+/* Called from IO context */
static int unsuspend(struct userdata *u) {
pa_sample_spec ss;
int err;
@@ -749,6 +806,7 @@ fail:
return -1;
}
+/* Called from IO context */
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;
@@ -804,6 +862,25 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse
return pa_sink_process_msg(o, code, data, offset, chunk);
}
+/* Called from main context */
+static int sink_set_state_cb(pa_sink *s, pa_sink_state_t new_state) {
+ pa_sink_state_t old_state;
+ struct userdata *u;
+
+ pa_sink_assert_ref(s);
+ pa_assert_se(u = s->userdata);
+
+ old_state = pa_sink_get_state(u->sink);
+
+ if (PA_SINK_IS_OPENED(old_state) && new_state == PA_SINK_SUSPENDED)
+ reserve_done(u);
+ else if (old_state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(new_state))
+ if (reserve_init(u, u->device_name) < 0)
+ return -1;
+
+ return 0;
+}
+
static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
struct userdata *u = snd_mixer_elem_get_callback_private(elem);
@@ -1468,6 +1545,11 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_smoother_set_time_offset(u->smoother, usec);
pa_smoother_pause(u->smoother, usec);
+ if (reserve_init(u, pa_modargs_get_value(
+ ma, "device_id",
+ pa_modargs_get_value(ma, "device", DEFAULT_DEVICE))) < 0)
+ goto fail;
+
b = use_mmap;
d = use_tsched;
@@ -1569,6 +1651,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
u->sink->parent.process_msg = sink_process_msg;
u->sink->update_requested_latency = sink_update_requested_latency_cb;
+ u->sink->set_state = sink_set_state_cb;
u->sink->userdata = u;
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
@@ -1681,6 +1764,8 @@ static void userdata_free(struct userdata *u) {
if (u->smoother)
pa_smoother_free(u->smoother);
+ reserve_done(u);
+
pa_xfree(u->device_name);
pa_xfree(u);
}
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index ad9a7f2..2f0e94c 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -54,6 +54,8 @@
#include <pulsecore/time-smoother.h>
#include <pulsecore/rtclock.h>
+#include <modules/reserve-wrap.h>
+
#include "alsa-util.h"
#include "alsa-source.h"
@@ -99,10 +101,62 @@ struct userdata {
pa_smoother *smoother;
uint64_t read_count;
+
+ pa_reserve_wrapper *reserve;
+ pa_hook_slot *reserve_slot;
};
static void userdata_free(struct userdata *u);
+static pa_hook_result_t reserve_cb(pa_reserve_wrapper *r, void *forced, struct userdata *u) {
+ pa_assert(r);
+ pa_assert(u);
+
+ if (pa_source_suspend(u->source, TRUE) < 0)
+ return PA_HOOK_CANCEL;
+
+ return PA_HOOK_OK;
+}
+
+static void reserve_done(struct userdata *u) {
+ pa_assert(u);
+
+ if (u->reserve_slot) {
+ pa_hook_slot_free(u->reserve_slot);
+ u->reserve_slot = NULL;
+ }
+
+ if (u->reserve) {
+ pa_reserve_wrapper_unref(u->reserve);
+ u->reserve = NULL;
+ }
+}
+
+static int reserve_init(struct userdata *u, const char *dname) {
+ char *rname;
+
+ pa_assert(u);
+ pa_assert(dname);
+
+ if (u->reserve)
+ return 0;
+
+ /* We are resuming, try to lock the device */
+ if (!(rname = pa_alsa_get_reserve_name(dname)))
+ return 0;
+
+ u->reserve = pa_reserve_wrapper_get(u->core, rname);
+ pa_xfree(rname);
+
+ if (!(u->reserve))
+ return -1;
+
+ pa_assert(!u->reserve_slot);
+ u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
+
+ return 0;
+}
+
static void fix_min_sleep_wakeup(struct userdata *u) {
size_t max_use, max_use_2;
pa_assert(u);
@@ -765,6 +819,25 @@ static int source_process_msg(pa_msgobject *o, int code, void *data, int64_t off
return pa_source_process_msg(o, code, data, offset, chunk);
}
+/* Called from main context */
+static int source_set_state_cb(pa_source *s, pa_source_state_t new_state) {
+ pa_source_state_t old_state;
+ struct userdata *u;
+
+ pa_source_assert_ref(s);
+ pa_assert_se(u = s->userdata);
+
+ old_state = pa_source_get_state(u->source);
+
+ if (PA_SINK_IS_OPENED(old_state) && new_state == PA_SINK_SUSPENDED)
+ reserve_done(u);
+ else if (old_state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(new_state))
+ if (reserve_init(u, u->device_name) < 0)
+ return -1;
+
+ return 0;
+}
+
static int mixer_callback(snd_mixer_elem_t *elem, unsigned int mask) {
struct userdata *u = snd_mixer_elem_get_callback_private(elem);
@@ -1316,6 +1389,11 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->smoother = pa_smoother_new(DEFAULT_TSCHED_WATERMARK_USEC*2, DEFAULT_TSCHED_WATERMARK_USEC*2, TRUE, 5);
pa_smoother_set_time_offset(u->smoother, pa_rtclock_usec());
+ if (reserve_init(u, pa_modargs_get_value(
+ ma, "device_id",
+ pa_modargs_get_value(ma, "device", DEFAULT_DEVICE))) < 0)
+ goto fail;
+
b = use_mmap;
d = use_tsched;
@@ -1414,6 +1492,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
u->source->parent.process_msg = source_process_msg;
u->source->update_requested_latency = source_update_requested_latency_cb;
+ u->source->set_state = source_set_state_cb;
u->source->userdata = u;
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
@@ -1519,6 +1598,8 @@ static void userdata_free(struct userdata *u) {
if (u->smoother)
pa_smoother_free(u->smoother);
+ reserve_done(u);
+
pa_xfree(u->device_name);
pa_xfree(u);
}
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 30d57e0..ec20d1d 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1708,3 +1708,24 @@ char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm) {
return pa_alsa_get_driver_name(card);
}
+
+char *pa_alsa_get_reserve_name(const char *device) {
+ const char *t;
+ int i;
+
+ pa_assert(device);
+
+ if ((t = strchr(device, ':')))
+ device = t+1;
+
+ if ((i = snd_card_get_index(device)) < 0) {
+ int32_t k;
+
+ if (pa_atoi(device, &k) < 0)
+ return NULL;
+
+ i = (int) k;
+ }
+
+ return pa_sprintf_malloc("Audio%i", i);
+}
diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h
index eddc41b..899532e 100644
--- a/src/modules/alsa/alsa-util.h
+++ b/src/modules/alsa/alsa-util.h
@@ -136,4 +136,6 @@ char *pa_alsa_get_driver_name(int card);
char *pa_alsa_get_driver_name_by_pcm(snd_pcm_t *pcm);
+char *pa_alsa_get_reserve_name(const char *device);
+
#endif
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index c949435..52e64ea 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -30,6 +30,8 @@
#include <pulsecore/modargs.h>
#include <pulsecore/queue.h>
+#include <modules/reserve-wrap.h>
+
#include "alsa-util.h"
#include "alsa-sink.h"
#include "alsa-source.h"
@@ -273,11 +275,13 @@ static void set_card_name(pa_card_new_data *data, pa_modargs *ma, const char *de
pa_xfree(t);
}
-int pa__init(pa_module*m) {
+int pa__init(pa_module *m) {
pa_card_new_data data;
pa_modargs *ma;
int alsa_card_index;
struct userdata *u;
+ char rname[32];
+ pa_reserve_wrapper *reserve = NULL;
pa_alsa_redirect_errors_inc();
snd_config_update_free_global();
@@ -303,6 +307,11 @@ int pa__init(pa_module*m) {
goto fail;
}
+ pa_snprintf(rname, sizeof(rname), "Audio%i", alsa_card_index);
+
+ if (!(reserve = pa_reserve_wrapper_get(m->core, rname)))
+ goto fail;
+
pa_card_new_data_init(&data);
data.driver = __FILE__;
data.module = m;
@@ -335,11 +344,16 @@ int pa__init(pa_module*m) {
init_profile(u);
+ pa_reserve_wrapper_unref(reserve);
+
return 0;
fail:
+ if (reserve)
+ pa_reserve_wrapper_unref(reserve);
pa__done(m);
+
return -1;
}
diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c
new file mode 100644
index 0000000..df2861f
--- /dev/null
+++ b/src/modules/reserve-wrap.c
@@ -0,0 +1,158 @@
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Lennart Poettering
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2 of the License,
+ or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with PulseAudio; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <pulse/xmalloc.h>
+#include <pulse/i18n.h>
+
+#include <pulsecore/core-error.h>
+#include <pulsecore/core-util.h>
+#include <pulsecore/shared.h>
+
+#include <modules/dbus-util.h>
+
+#include "reserve.h"
+#include "reserve-wrap.h"
+
+struct pa_reserve_wrapper {
+ PA_REFCNT_DECLARE;
+ pa_core *core;
+ pa_dbus_connection *connection;
+ pa_hook hook;
+ struct rd_device *device;
+ char *shared_name;
+};
+
+static void reserve_wrapper_free(pa_reserve_wrapper *r) {
+ pa_assert(r);
+
+ if (r->device)
+ rd_release(r->device);
+
+ pa_hook_done(&r->hook);
+
+ if (r->connection)
+ pa_dbus_connection_unref(r->connection);
+
+ if (r->shared_name) {
+ pa_assert_se(pa_shared_remove(r->core, r->shared_name) >= 0);
+ pa_xfree(r->shared_name);
+ }
+
+ pa_xfree(r);
+}
+
+static int request_cb(rd_device *d, int forced) {
+ pa_reserve_wrapper *r;
+ int k;
+
+ pa_assert(d);
+ pa_assert_se(r = rd_get_userdata(d));
+ pa_assert(PA_REFCNT_VALUE(r) >= 1);
+
+ PA_REFCNT_INC(r);
+
+ k = pa_hook_fire(&r->hook, PA_INT_TO_PTR(forced));
+ pa_log_debug("Device unlock has been requested and %s.", k < 0 ? "failed" : "succeeded");
+
+ pa_reserve_wrapper_unref(r);
+
+ return k < 0 ? -1 : 1;
+}
+
+pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name) {
+ pa_reserve_wrapper *r;
+ DBusError error;
+ int k;
+ char *t;
+
+ dbus_error_init(&error);
+
+ pa_assert(c);
+ pa_assert(device_name);
+
+ t = pa_sprintf_malloc("reserve-wrapper@%s", device_name);
+
+ if ((r = pa_shared_get(c, t))) {
+ pa_xfree(t);
+
+ pa_assert(PA_REFCNT_VALUE(r) >= 1);
+ PA_REFCNT_INC(r);
+
+ return r;
+ }
+
+ r = pa_xnew0(pa_reserve_wrapper, 1);
+ PA_REFCNT_INIT(r);
+ r->core = c;
+ pa_hook_init(&r->hook, r);
+ r->shared_name = t;
+
+ pa_assert_se(pa_shared_set(c, r->shared_name, r) >= 0);
+
+ if (!(r->connection = pa_dbus_bus_get(c, DBUS_BUS_SESSION, &error)) || dbus_error_is_set(&error)) {
+ pa_log_error("Unable to contact D-Bus session bus: %s: %s", error.name, error.message);
+ goto fail;
+ }
+
+ if ((k = rd_acquire(
+ &r->device,
+ pa_dbus_connection_get(r->connection),
+ device_name,
+ _("PulseAudio Sound Server"),
+ 0,
+ request_cb,
+ &error)) < 0) {
+
+ pa_log_error("Failed to acquire reservation lock on device '%s': %s", device_name, pa_cstrerror(-k));
+ goto fail;
+ }
+
+ pa_log_debug("Successfully acquired reservation lock on device '%s'", device_name);
+
+ rd_set_userdata(r->device, r);
+
+ return r;
+
+fail:
+ reserve_wrapper_free(r);
+ return NULL;
+}
+
+void pa_reserve_wrapper_unref(pa_reserve_wrapper *r) {
+ pa_assert(r);
+ pa_assert(PA_REFCNT_VALUE(r) >= 1);
+
+ if (PA_REFCNT_DEC(r) > 0)
+ return;
+
+ reserve_wrapper_free(r);
+}
+
+pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r) {
+ pa_assert(r);
+ pa_assert(PA_REFCNT_VALUE(r) >= 1);
+
+ return &r->hook;
+}
diff --git a/src/modules/reserve-wrap.h b/src/modules/reserve-wrap.h
new file mode 100644
index 0000000..7afc511
--- /dev/null
+++ b/src/modules/reserve-wrap.h
@@ -0,0 +1,36 @@
+#ifndef fooreservewraphfoo
+#define fooreservewraphfoo
+
+/***
+ This file is part of PulseAudio.
+
+ Copyright 2009 Lennart Poettering
+
+ PulseAudio is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2 of the License,
+ or (at your option) any later version.
+
+ PulseAudio is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with PulseAudio; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
+***/
+
+#include <pulsecore/core.h>
+#include <pulsecore/hook-list.h>
+
+typedef struct pa_reserve_wrapper pa_reserve_wrapper;
+
+pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name);
+
+void pa_reserve_wrapper_unref(pa_reserve_wrapper *r);
+
+pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r);
+
+#endif
diff --git a/src/modules/reserve.c b/src/modules/reserve.c
new file mode 100644
index 0000000..79ec97a
--- /dev/null
+++ b/src/modules/reserve.c
@@ -0,0 +1,624 @@
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <assert.h>
+
+#include "reserve.h"
+
+struct rd_device {
+ int ref;
+
+ char *device_name;
+ char *application_name;
+ char *application_device_name;
+ char *service_name;
+ char *object_path;
+ int32_t priority;
+
+ DBusConnection *connection;
+
+ int owning:1;
+ int registered:1;
+ int filtering:1;
+ int gave_up:1;
+
+ rd_request_cb_t request_cb;
+ void *userdata;
+};
+
+
+#define SERVICE_PREFIX "org.freedesktop.ReserveDevice1."
+#define OBJECT_PREFIX "/org/freedesktop/ReserveDevice1/"
+
+static const char introspection[] =
+ DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
+ "<node>"
+ " <interface name=\"org.freedesktop.ReserveDevice1\">"
+ " <method name=\"RequestRelease\">"
+ " <arg name=\"priority\" type=\"i\" direction=\"in\"/>"
+ " <arg name=\"result\" type=\"b\" direction=\"out\"/>"
+ " </method>"
+ " <property name=\"Priority\" type=\"i\" access=\"read\"/>"
+ " <property name=\"ApplicationName\" type=\"s\" access=\"read\"/>"
+ " <property name=\"ApplicationDeviceName\" type=\"s\" access=\"read\"/>"
+ " </interface>"
+ " <interface name=\"org.freedesktop.DBus.Properties\">"
+ " <method name=\"Get\">"
+ " <arg name=\"interface\" direction=\"in\" type=\"s\"/>"
+ " <arg name=\"property\" direction=\"in\" type=\"s\"/>"
+ " <arg name=\"value\" direction=\"out\" type=\"v\"/>"
+ " </method>"
+ " </interface>"
+ " <interface name=\"org.freedesktop.DBus.Introspectable\">"
+ " <method name=\"Introspect\">"
+ " <arg name=\"data\" type=\"s\" direction=\"out\"/>"
+ " </method>"
+ " </interface>"
+ "</node>";
+
+static dbus_bool_t add_variant(
+ DBusMessage *m,
+ int type,
+ const void *data) {
+
+ DBusMessageIter iter, sub;
+ char t[2];
+
+ t[0] = (char) type;
+ t[1] = 0;
+
+ dbus_message_iter_init_append(m, &iter);
+
+ if (!dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, t, &sub))
+ return FALSE;
+
+ if (!dbus_message_iter_append_basic(&sub, type, data))
+ return FALSE;
+
+ if (!dbus_message_iter_close_container(&iter, &sub))
+ return FALSE;
+
+ return TRUE;
+}
+
+static DBusHandlerResult object_handler(
+ DBusConnection *c,
+ DBusMessage *m,
+ void *userdata) {
+
+ rd_device *d;
+ DBusError error;
+ DBusMessage *reply = NULL;
+
+ dbus_error_init(&error);
+
+ d = userdata;
+ assert(d->ref >= 1);
+
+ if (dbus_message_is_method_call(
+ m,
+ "org.freedesktop.ReserveDevice1",
+ "RequestRelease")) {
+
+ int32_t priority;
+ dbus_bool_t ret;
+
+ if (!dbus_message_get_args(
+ m,
+ &error,
+ DBUS_TYPE_INT32, &priority,
+ DBUS_TYPE_INVALID))
+ goto invalid;
+
+ ret = FALSE;
+
+ if (priority > d->priority && d->request_cb) {
+ d->ref++;
+
+ if (d->request_cb(d, 0) > 0) {
+ ret = TRUE;
+ d->gave_up = 1;
+ }
+
+ rd_release(d);
+ }
+
+ if (!(reply = dbus_message_new_method_return(m)))
+ goto oom;
+
+ if (!dbus_message_append_args(
+ reply,
+ DBUS_TYPE_BOOLEAN, &ret,
+ DBUS_TYPE_INVALID))
+ goto oom;
+
+ if (!dbus_connection_send(c, reply, NULL))
+ goto oom;
+
+ dbus_message_unref(reply);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+
+ } else if (dbus_message_is_method_call(
+ m,
+ "org.freedesktop.DBus.Properties",
+ "Get")) {
+
+ const char *interface, *property;
+
+ if (!dbus_message_get_args(
+ m,
+ &error,
+ DBUS_TYPE_STRING, &interface,
+ DBUS_TYPE_STRING, &property,
+ DBUS_TYPE_INVALID))
+ goto invalid;
+
+ if (strcmp(interface, "org.freedesktop.ReserveDevice1") == 0) {
+ const char *empty = "";
+
+ if (strcmp(property, "ApplicationName") == 0 && d->application_name) {
+ if (!(reply = dbus_message_new_method_return(m)))
+ goto oom;
+
+ if (!add_variant(
+ reply,
+ DBUS_TYPE_STRING,
+ d->application_name ? (const char**) &d->application_name : &empty))
+ goto oom;
+
+ } else if (strcmp(property, "ApplicationDeviceName") == 0) {
+ if (!(reply = dbus_message_new_method_return(m)))
+ goto oom;
+
+ if (!add_variant(
+ reply,
+ DBUS_TYPE_STRING,
+ d->application_device_name ? (const char**) &d->application_device_name : &empty))
+ goto oom;
+
+ } else if (strcmp(property, "Priority") == 0) {
+ if (!(reply = dbus_message_new_method_return(m)))
+ goto oom;
+
+ if (!add_variant(
+ reply,
+ DBUS_TYPE_INT32,
+ &d->priority))
+ goto oom;
+ } else {
+ if (!(reply = dbus_message_new_error_printf(
+ m,
+ DBUS_ERROR_UNKNOWN_METHOD,
+ "Unknown property %s",
+ property)))
+ goto oom;
+ }
+
+ if (!dbus_connection_send(c, reply, NULL))
+ goto oom;
+
+ dbus_message_unref(reply);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+ } else if (dbus_message_is_method_call(
+ m,
+ "org.freedesktop.DBus.Introspectable",
+ "Introspect")) {
+ const char *i = introspection;
+
+ if (!(reply = dbus_message_new_method_return(m)))
+ goto oom;
+
+ if (!dbus_message_append_args(
+ reply,
+ DBUS_TYPE_STRING,
+ &i,
+ DBUS_TYPE_INVALID))
+ goto oom;
+
+ if (!dbus_connection_send(c, reply, NULL))
+ goto oom;
+
+ dbus_message_unref(reply);
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+ }
+
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+
+invalid:
+ if (reply)
+ dbus_message_unref(reply);
+
+ 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;
+}
+
+static DBusHandlerResult filter_handler(
+ DBusConnection *c,
+ DBusMessage *m,
+ void *userdata) {
+
+ DBusMessage *reply;
+ rd_device *d;
+ DBusError error;
+
+ dbus_error_init(&error);
+
+ d = userdata;
+
+ if (dbus_message_is_signal(m, "org.freedesktop.DBus", "NameLost")) {
+ const char *name;
+
+ if (!dbus_message_get_args(
+ m,
+ &error,
+ DBUS_TYPE_STRING, &name,
+ DBUS_TYPE_INVALID))
+ goto invalid;
+
+ if (strcmp(name, d->service_name) == 0 && d->owning) {
+ d->owning = 0;
+
+ if (!d->gave_up) {
+ d->ref++;
+
+ if (d->request_cb)
+ d->request_cb(d, 1);
+ d->gave_up = 1;
+
+ 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;
+}
+
+
+static const struct DBusObjectPathVTable vtable ={
+ .message_function = object_handler
+};
+
+int rd_acquire(
+ rd_device **_d,
+ DBusConnection *connection,
+ const char *device_name,
+ const char *application_name,
+ int32_t priority,
+ rd_request_cb_t request_cb,
+ DBusError *error) {
+
+ rd_device *d = NULL;
+ int r, k;
+ DBusError _error;
+ DBusMessage *m = NULL, *reply = NULL;
+ dbus_bool_t good;
+
+ if (!error)
+ error = &_error;
+
+ dbus_error_init(error);
+
+ if (!_d)
+ return -EINVAL;
+
+ if (!connection)
+ return -EINVAL;
+
+ if (!device_name)
+ return -EINVAL;
+
+ if (!request_cb && priority != INT32_MAX)
+ return -EINVAL;
+
+ if (!(d = calloc(sizeof(rd_device), 1)))
+ return -ENOMEM;
+
+ d->ref = 1;
+
+ if (!(d->device_name = strdup(device_name))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ if (!(d->application_name = strdup(application_name))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ d->priority = priority;
+ d->connection = dbus_connection_ref(connection);
+ d->request_cb = request_cb;
+
+ if (!(d->service_name = malloc(sizeof(SERVICE_PREFIX) + strlen(device_name)))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+ sprintf(d->service_name, SERVICE_PREFIX "%s", d->device_name);
+
+ if (!(d->object_path = malloc(sizeof(OBJECT_PREFIX) + strlen(device_name)))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+ sprintf(d->object_path, OBJECT_PREFIX "%s", d->device_name);
+
+ if ((k = dbus_bus_request_name(
+ d->connection,
+ d->service_name,
+ DBUS_NAME_FLAG_DO_NOT_QUEUE|
+ (priority < INT32_MAX ? DBUS_NAME_FLAG_ALLOW_REPLACEMENT : 0),
+ error)) < 0) {
+ r = -EIO;
+ goto fail;
+ }
+
+ if (k == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
+ goto success;
+
+ if (k != DBUS_REQUEST_NAME_REPLY_EXISTS) {
+ r = -EIO;
+ goto fail;
+ }
+
+ if (priority <= INT32_MIN) {
+ r = -EBUSY;
+ goto fail;
+ }
+
+ if (!(m = dbus_message_new_method_call(
+ d->service_name,
+ d->object_path,
+ "org.freedesktop.ReserveDevice1",
+ "RequestRelease"))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ if (!dbus_message_append_args(
+ m,
+ DBUS_TYPE_INT32, &d->priority,
+ DBUS_TYPE_INVALID)) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ if (!(reply = dbus_connection_send_with_reply_and_block(
+ d->connection,
+ m,
+ -1,
+ error))) {
+ r = -EIO;
+ goto fail;
+ }
+
+ if (!dbus_message_get_args(
+ reply,
+ error,
+ DBUS_TYPE_BOOLEAN, &good,
+ DBUS_TYPE_INVALID)) {
+ r = -EIO;
+ goto fail;
+ }
+
+ if (!good) {
+ r = -EBUSY;
+ goto fail;
+ }
+
+ if ((k = dbus_bus_request_name(
+ d->connection,
+ d->service_name,
+ DBUS_NAME_FLAG_DO_NOT_QUEUE|
+ (priority < INT32_MAX ? DBUS_NAME_FLAG_ALLOW_REPLACEMENT : 0)|
+ DBUS_NAME_FLAG_REPLACE_EXISTING,
+ error)) < 0) {
+ r = -EIO;
+ goto fail;
+ }
+
+ if (k != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
+ r = -EIO;
+ goto fail;
+ }
+
+success:
+ d->owning = 1;
+
+ if (!(dbus_connection_register_object_path(
+ d->connection,
+ d->object_path,
+ &vtable,
+ d))) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ d->registered = 1;
+
+ if (!dbus_connection_add_filter(
+ d->connection,
+ filter_handler,
+ d,
+ NULL)) {
+ r = -ENOMEM;
+ goto fail;
+ }
+
+ d->filtering = 1;
+
+ *_d = d;
+ return 0;
+
+fail:
+ if (m)
+ dbus_message_unref(m);
+
+ if (reply)
+ dbus_message_unref(reply);
+
+ if (&_error == error)
+ dbus_error_free(&_error);
+
+ if (d)
+ rd_release(d);
+
+ return r;
+}
+
+void rd_release(
+ rd_device *d) {
+
+ if (!d)
+ return;
+
+ assert(d->ref > 0);
+
+ if (--d->ref)
+ return;
+
+
+ if (d->filtering)
+ dbus_connection_remove_filter(
+ d->connection,
+ filter_handler,
+ d);
+
+ if (d->registered)
+ dbus_connection_unregister_object_path(
+ d->connection,
+ d->object_path);
+
+ if (d->owning) {
+ DBusError error;
+ dbus_error_init(&error);
+
+ dbus_bus_release_name(
+ d->connection,
+ d->service_name,
+ &error);
+
+ dbus_error_free(&error);
+ }
+
+ free(d->device_name);
+ free(d->application_name);
+ free(d->application_device_name);
+ free(d->service_name);
+ free(d->object_path);
+
+ if (d->connection)
+ dbus_connection_unref(d->connection);
+
+ free(d);
+}
+
+int rd_set_application_device_name(rd_device *d, const char *n) {
+ char *t;
+
+ if (!d)
+ return -EINVAL;
+
+ assert(d->ref > 0);
+
+ if (!(t = strdup(n)))
+ return -ENOMEM;
+
+ free(d->application_device_name);
+ d->application_device_name = t;
+ return 0;
+}
+
+void rd_set_userdata(rd_device *d, void *userdata) {
+
+ if (!d)
+ return;
+
+ assert(d->ref > 0);
+ d->userdata = userdata;
+}
+
+void* rd_get_userdata(rd_device *d) {
+
+ if (!d)
+ return NULL;
+
+ assert(d->ref > 0);
+
+ return d->userdata;
+}
diff --git a/src/modules/reserve.h b/src/modules/reserve.h
new file mode 100644
index 0000000..ceb1ad1
--- /dev/null
+++ b/src/modules/reserve.h
@@ -0,0 +1,68 @@
+#ifndef fooreservehfoo
+#define fooreservehfoo
+
+/***
+ Copyright 2009 Lennart Poettering
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+***/
+
+#include <dbus/dbus.h>
+#include <inttypes.h>
+
+typedef struct rd_device rd_device;
+
+/* Prototype for a function that is called whenever someone else wants
+ * your app to release the device you having locked. A return value <=
+ * 0 denies the request, a positive return value agrees to it. Before
+ * returning your application should close the device in question
+ * completely to make sure the new application may acceess it. */
+typedef int (*rd_request_cb_t)(
+ rd_device *d,
+ int forced); /* Non-zero if an application forcibly took the lock away without asking. If this is the case then the return value of this call is ignored. */
+
+/* Try to lock the device. Returns 0 on success, a negative errno
+ * style return value on error. The DBus error might be set as well if
+ * the error was caused D-Bus. */
+int rd_acquire(
+ rd_device **d, /* On success a pointer to the newly allocated rd_device object will be filled in here */
+ DBusConnection *connection,
+ const char *device_name, /* The device to lock, e.g. "Audio0" */
+ const char *application_name, /* A human readable name of the application, e.g. "PulseAudio Sound Server" */
+ int32_t priority, /* The priority for this application. If unsure use 0 */
+ rd_request_cb_t request_cb, /* Will be called whenever someone asks that this device shall be released. May be NULL if priority is INT32_MAX */
+ DBusError *error); /* If we fail due to a D-Bus related issue the error will be filled in here. May be NULL. */
+
+/* Unlock (if needed) and destroy a rd_device object again */
+void rd_release(rd_device *d);
+
+/* Set the application device name for a rd_device object Returns 0 on
+ * success, a negative errno style return value on error. */
+int rd_set_application_device_name(rd_device *d, const char *name);
+
+/* Attach a userdata pointer to a rd_device */
+void rd_set_userdata(rd_device *d, void *userdata);
+
+/* Query the userdata pointer from a rd_device. Returns NULL if no
+ * userdata was set. */
+void* rd_get_userdata(rd_device *d);
+
+#endif
commit ba3c7668a472672bd86eb06dbbbffcef17722134
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 06:36:42 2009 +0100
update reserve.c from upstream git
diff --git a/src/modules/reserve.c b/src/modules/reserve.c
index 79ec97a..9a9591d 100644
--- a/src/modules/reserve.c
+++ b/src/modules/reserve.c
@@ -59,6 +59,8 @@ struct rd_device {
static const char introspection[] =
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE
"<node>"
+ " <!-- If you are looking for documentation make sure to check out\n"
+ " http://git.0pointer.de/?p=reserve.git;a=blob;f=reserve.txt -->\n"
" <interface name=\"org.freedesktop.ReserveDevice1\">"
" <method name=\"RequestRelease\">"
" <arg name=\"priority\" type=\"i\" direction=\"in\"/>"
@@ -461,8 +463,17 @@ int rd_acquire(
if (!(reply = dbus_connection_send_with_reply_and_block(
d->connection,
m,
- -1,
+ 5000, /* 5s */
error))) {
+
+ if (dbus_error_has_name(error, DBUS_ERROR_TIMED_OUT) ||
+ dbus_error_has_name(error, DBUS_ERROR_UNKNOWN_METHOD) ||
+ dbus_error_has_name(error, DBUS_ERROR_NO_REPLY)) {
+ /* This must be treated as denied. */
+ r = -EBUSY;
+ goto fail;
+ }
+
r = -EIO;
goto fail;
}
commit 03ac71bcad97f013f1fc7b5ec65f642be437d65b
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 11:29:11 2009 +0100
don't put both the card and the pcm name in the description of a device if one contains the other
diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index ec20d1d..6740c06 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -1448,9 +1448,9 @@ void pa_alsa_init_proplist_pcm_info(pa_core *c, pa_proplist *p, snd_pcm_info_t *
cn = pa_proplist_gets(p, "alsa.card_name");
}
- if (cn && n)
- pa_proplist_setf(p, PA_PROP_DEVICE_DESCRIPTION, "%s - %s", cn, n);
- else if (cn)
+ if (cn && n && !strstr(cn, n) && !strstr(n, cn))
+ pa_proplist_setf(p, PA_PROP_DEVICE_DESCRIPTION, "%s, %s", cn, n);
+ else if (cn && (!n || strstr(cn, n)))
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, cn);
else if (n)
pa_proplist_sets(p, PA_PROP_DEVICE_DESCRIPTION, n);
commit 83148581830f6ed9740a6f82645d76c38e43a600
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 11:29:35 2009 +0100
set reserve interface application device name
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 83fc9e1..dbd95b6 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -134,6 +134,17 @@ static void reserve_done(struct userdata *u) {
}
}
+static void reserve_update(struct userdata *u) {
+ const char *description;
+ pa_assert(u);
+
+ if (!u->sink)
+ return;
+
+ if ((description = pa_proplist_gets(u->sink->proplist, PA_PROP_DEVICE_DESCRIPTION)))
+ pa_reserve_wrapper_set_application_device_name(u->reserve, description);
+}
+
static int reserve_init(struct userdata *u, const char *dname) {
char *rname;
@@ -153,6 +164,8 @@ static int reserve_init(struct userdata *u, const char *dname) {
if (!(u->reserve))
return -1;
+ reserve_update(u);
+
pa_assert(!u->reserve_slot);
u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
@@ -1684,6 +1697,8 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca
pa_log_info("Time scheduling watermark is %0.2fms",
(double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
+ reserve_update(u);
+
if (update_sw_params(u) < 0)
goto fail;
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index 2f0e94c..39df4a9 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -132,6 +132,17 @@ static void reserve_done(struct userdata *u) {
}
}
+static void reserve_update(struct userdata *u) {
+ const char *description;
+ pa_assert(u);
+
+ if (!u->source)
+ return;
+
+ if ((description = pa_proplist_gets(u->source->proplist, PA_PROP_DEVICE_DESCRIPTION)))
+ pa_reserve_wrapper_set_application_device_name(u->reserve, description);
+}
+
static int reserve_init(struct userdata *u, const char *dname) {
char *rname;
@@ -151,6 +162,8 @@ static int reserve_init(struct userdata *u, const char *dname) {
if (!(u->reserve))
return -1;
+ reserve_update(u);
+
pa_assert(!u->reserve_slot);
u->reserve_slot = pa_hook_connect(pa_reserve_wrapper_hook(u->reserve), PA_HOOK_NORMAL, (pa_hook_cb_t) reserve_cb, u);
@@ -1522,6 +1535,8 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p
pa_log_info("Time scheduling watermark is %0.2fms",
(double) pa_bytes_to_usec(u->tsched_watermark, &ss) / PA_USEC_PER_MSEC);
+ reserve_update(u);
+
if (update_sw_params(u) < 0)
goto fail;
diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c
index 52e64ea..fc6b886 100644
--- a/src/modules/alsa/module-alsa-card.c
+++ b/src/modules/alsa/module-alsa-card.c
@@ -282,6 +282,7 @@ int pa__init(pa_module *m) {
struct userdata *u;
char rname[32];
pa_reserve_wrapper *reserve = NULL;
+ const char *description;
pa_alsa_redirect_errors_inc();
snd_config_update_free_global();
@@ -319,6 +320,10 @@ int pa__init(pa_module *m) {
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id);
set_card_name(&data, ma, u->device_id);
+ if (reserve)
+ if ((description = pa_proplist_gets(data.proplist, PA_PROP_DEVICE_DESCRIPTION)))
+ pa_reserve_wrapper_set_application_device_name(reserve, description);
+
u->profiles = data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
if (pa_alsa_probe_profiles(u->device_id, &m->core->default_sample_spec, enumerate_cb, u) < 0) {
pa_card_new_data_done(&data);
diff --git a/src/modules/reserve-wrap.c b/src/modules/reserve-wrap.c
index df2861f..709cb06 100644
--- a/src/modules/reserve-wrap.c
+++ b/src/modules/reserve-wrap.c
@@ -123,7 +123,7 @@ pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name)
_("PulseAudio Sound Server"),
0,
request_cb,
- &error)) < 0) {
+ NULL)) < 0) {
pa_log_error("Failed to acquire reservation lock on device '%s': %s", device_name, pa_cstrerror(-k));
goto fail;
@@ -136,7 +136,10 @@ pa_reserve_wrapper* pa_reserve_wrapper_get(pa_core *c, const char *device_name)
return r;
fail:
+ dbus_error_free(&error);
+
reserve_wrapper_free(r);
+
return NULL;
}
@@ -156,3 +159,10 @@ pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r) {
return &r->hook;
}
+
+void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const char *name) {
+ pa_assert(r);
+ pa_assert(PA_REFCNT_VALUE(r) >= 1);
+
+ rd_set_application_device_name(r->device, name);
+}
diff --git a/src/modules/reserve-wrap.h b/src/modules/reserve-wrap.h
index 7afc511..4625fe6 100644
--- a/src/modules/reserve-wrap.h
+++ b/src/modules/reserve-wrap.h
@@ -33,4 +33,6 @@ void pa_reserve_wrapper_unref(pa_reserve_wrapper *r);
pa_hook* pa_reserve_wrapper_hook(pa_reserve_wrapper *r);
+void pa_reserve_wrapper_set_application_device_name(pa_reserve_wrapper *r, const char *name);
+
#endif
commit 364786ee8c16765da9c634f2293a152744cb2f85
Merge: 8314858... b063e53...
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 11:33:05 2009 +0100
Merge commit 'origin/master-tx'
commit 07a45c7e12e3532078781d7f3d4e1a7f9ed8f243
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 11:35:01 2009 +0100
run make update-po
diff --git a/po/ca.po b/po/ca.po
index 6fe1d4a..b800451 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-02-13 23:27+0100\n"
"Last-Translator: Agusti Grau <fletxa at gmail.com>\n"
"Language-Team: Catalan <fedora at softcatala.net>\n"
@@ -27,63 +27,74 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -222,92 +233,94 @@ msgstr "El mode de sistema ampli no està suportat en aquesta plataforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "S'ha produït un error en setrlimit(%s, (%u, %u)): %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "S'ha produït un error en interpretar la lÃnia de comandes."
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Aquesta aplicació està en el grup '%s', s'està establint la prioritat en "
"temps real."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit ha permés el permÃs acquire-high-priority."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit ha rebutjat el permÃs acquire-high-priority."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit h permés el permÃs acquire-real-time."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit ha rebutjat el permÃs acquire-real-time."
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"La crida de la SUID de root i la prioritat alta/temps real està n "
-"especificades en la configuració, però no té els permissos necessaris:\n"
-"No es pertany al grup '"
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La prioritat alta està habilitada en la configuració però no està permesa "
"per la polÃtica."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "S'ha incrementat el valor de RLIMIT_RTPRIO amb éxit."
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "S'ha produït un error amb RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Es deixa CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La prioritat temps real està habilitada en la configuració però no està "
"permesa per la polÃtica."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "El dimoni no s'està executant."
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "El dimoni s'està executant amb PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "S'ha produït un error en matar el dimoni: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -315,149 +328,149 @@ msgstr ""
"No és necessari executar aquesta aplicació com a root (excepte si "
"s'especifica --system)"
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "Es requereixen permÃsos de root."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "La opció --start no està suportada per a instà ncies de sistema."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat la opció --"
"disallow-exit."
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"S'està executant en mode sistema, però no s'ha especificat la opció --"
"disallow-module-loading."
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
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:692
+#: ../src/daemon/main.c:696
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:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "S'ha produït un error en adquirir stdio."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "Ha fallat la canonada: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "Ha fallat fork(): %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "Ha fallat read(): %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "S'ha produït un error en iniciar el dimoni."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "S'ha iniciat el dimoni."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Aquest és el PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilació: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilació: %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "S'està executant en el host: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "La mida de pà gina és de %lu bytes."
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Compilat amb suport per a Valgrind: sÃ"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Compilat amb suport per a Valgrind: no"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "S'està executant amb el mode valgrind: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Construcció optimitzada: sÃ"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Construcció optmitzada: no"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "S'ha produït un error en obtenir la ID de la mà quina"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "La ID de la mà quina és %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "S'esta utilitzant el directori d'execució %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "S'està utilitzant el directori d'estat %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "S'està executant en mode sistema: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "S'ha produït un error en pa_pid_file_create()."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Està n disponibles els temporitzadors frescos de alta resolució."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -465,27 +478,27 @@ msgstr ""
"Es recomana la utilització d'un kernel amb els temporitzadors d'alta "
"resolució habilitats."
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "S'ha produït un error en pa_core_new()."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "S'ha produït un error en inicialitzar el dimoni."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Com el dimoni s'ha iniciat sense cap mòdul carregat, no funciona."
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "S'ha completat la inicialització del dimoni."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "S'ha iniciat l'aturada del dimoni."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "S'ha aturat el dimoni."
@@ -661,7 +674,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading necessita un argument booleà "
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit necessita un argument booleà "
#: ../src/daemon/cmdline.c:309
@@ -674,12 +688,12 @@ msgstr "Objectiu de log invà lid: utilitzeu 'syslog', 'stderr' o 'auto'."
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit necessita un argument booleà "
+msgid "--log-time expects boolean argument"
+msgstr "--realtime necessita un argument booleà "
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit necessita un argument booleà "
#: ../src/daemon/cmdline.c:359
@@ -739,67 +753,78 @@ msgstr "CÃ rrega: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destà de registre incorrecte '%s'"
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivell de registre incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Mètode de remostreig incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit no disponible en aquesta plataforma."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format de mostra incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Velocitat de mostreig '%s'."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Canals de mostreig incorrectes '%s'."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Mida de fragment incorrecta '%s'."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivell de prioritat incorrecte '%s'."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lectura del fitxer de configuració: %s ###\n"
@@ -813,6 +838,34 @@ msgstr "Alliberant privilegis de root."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "S'han limitat les capacitats a CAP_SYS_NICE correctament."
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"Aquesta aplicació està en el grup '%s', s'està establint la prioritat alta."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1302,7 +1355,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ha fallat pa_stream_connect_record(): %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ha fallat la connexió: %s\n"
@@ -1477,7 +1530,7 @@ msgid "Too many arguments.\n"
msgstr ""
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr ""
@@ -1488,12 +1541,12 @@ msgid "io_new() failed.\n"
msgstr ""
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1505,7 +1558,7 @@ msgid "time_new() failed.\n"
msgstr ""
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1535,7 +1588,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1591,7 +1644,7 @@ msgstr ""
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:136
+#: ../src/utils/pactl.c:137
#, c-format
msgid ""
"User name: %s\n"
@@ -1599,17 +1652,18 @@ msgid ""
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1631,12 +1685,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1658,20 +1712,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1682,12 +1736,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1697,12 +1751,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Error en obrir el fitxer de configuració: %s"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1713,22 +1767,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "Ha fallat la canonada: %s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1749,12 +1803,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1771,12 +1825,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1794,22 +1848,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1835,7 +1889,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1843,66 +1897,66 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr ""
@@ -2081,6 +2135,21 @@ msgstr ""
msgid "Cannot access autospawn lock."
msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "La crida de la SUID de root i la prioritat alta/temps real està n "
+#~ "especificades en la configuració, però no té els permissos necessaris:\n"
+#~ "No es pertany al grup '"
+
+#, fuzzy
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--disallow-exit necessita un argument booleà "
+
#~ msgid ""
#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
#~ "For enabling real-time scheduling please acquire the appropriate "
diff --git a/po/cs.po b/po/cs.po
index 926823c..9be3890 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2008-10-19 22:31+0200\n"
"Last-Translator: Petr Kovar <pknbe at volny.cz>\n"
"Language-Team: Czech <translation-team-cs at lists.sourceforge.net>\n"
@@ -17,63 +17,74 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -212,88 +223,90 @@ msgstr "Režim celého systému nenà na této platformÄ podporován."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) selhalo: %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "NezdaÅila se analýza pÅÃkazového Åádku."
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"NacházÃme se ve skupinÄ \"%s\", což umožÅuje plánovánà o vysoké prioritÄ."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "NacházÃme se ve skupinÄ \"%s\", což umožÅuje plánovánà v reálném Äase."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nám udÄlil oprávnÄnà acquire-high-priority."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit nám neudÄlil oprávnÄnà acquire-high-priority."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nám udÄlil oprávnÄnà acquire-real-time."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit nám neudÄlil oprávnÄnà acquire-real-time."
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"Volaný SUID root a plánovánà v reálném Äase / o vysoké prioritÄ bylo "
-"zažádáno v konfiguraci. Nedisponujeme ovÅ¡em potÅebnými oprávnÄnÃmi:\n"
-"Nejsme ve skupinÄ \""
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Plánovánà o vysoké prioritÄ v konfiguraci zapnuto, ale nepovoleno pravidly."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "ÃspÄÅ¡nÄ zvýšeno RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO selhalo: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Vzdávánà se CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Plánovánà v reálném Äase v konfiguraci zapnuto, ale nepovoleno pravidly."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "Démon nebÄžÃ"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Démon bÄžà jako PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zabità démona se nezdaÅilo: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -301,143 +314,143 @@ msgstr ""
"Tento program nenà urÄen ke spuÅ¡tÄnà pod superuživatelem (nenÃ-li zadáno --"
"system)."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "Jsou vyžadována oprávnÄnà superuživatele."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start nepodporováno u systémových instancÃ."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
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:684
+#: ../src/daemon/main.c:688
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:687
+#: ../src/daemon/main.c:691
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:692
+#: ../src/daemon/main.c:696
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:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "NezdaÅilo se zÃskánà stdio."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "pipe selhalo: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "fork() selhalo: %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "read() selhalo: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "SpuÅ¡tÄnà démona selhalo."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "SpuÅ¡tÄnà démona bylo úspÄÅ¡né."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Toto je PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "PÅekladový poÄÃtaÄ: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "PÅekladové CFLAGS: %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "BÄžà na poÄÃtaÄi: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "Velikost stránky je %lu bajtů"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "PÅeloženo s podporou Valgrind: ano"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "PÅeloženo s podporou Valgrind: ne"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "BÄžà v režimu valgrind: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Optimalizované sestavenÃ: ano"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Optimalizované sestavenÃ: ne"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "NezdaÅilo se zÃskánà ID poÄÃtaÄe"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "ID poÄÃtaÄe je %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "PoužÃván bÄhový adresáŠ%s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "PoužÃván stavový adresáŠ%s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "BÄžà v systémovém režimu: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() selhalo."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
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:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -445,27 +458,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:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new() selhalo."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Selhalo spuÅ¡tÄnà démona."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
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:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "SpuÅ¡tÄnà démona dokonÄeno."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "VypÃnánà démona spuÅ¡tÄno."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Démon ukonÄen."
@@ -618,7 +631,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading pÅedpokládá booleovský argument"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit booleovský argument"
#: ../src/daemon/cmdline.c:309
@@ -632,12 +646,12 @@ msgstr ""
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit booleovský argument"
+msgid "--log-time expects boolean argument"
+msgstr "--realtime pÅedpokládá booleovský argument"
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit booleovský argument"
#: ../src/daemon/cmdline.c:359
@@ -697,67 +711,78 @@ msgstr "NaÄÃst Jednou s n"
msgid "Path: %s\n"
msgstr "Cesta: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Neplatný protokolovacà cÃl \"%s\"."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Neplatná protokolovacà úroveŠ\"%s\"."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Neplatná metoda pÅevzorkovánà \"%s\"."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Neplatné rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit na této platformÄ nenà podporováno."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Neplatný vzorkovacà formát \"%s\"."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Neplatná vzorkovacà frekvence \"%s\"."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Neplatné vzorkovacà kanály \"%s\"."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Neplatné vzorkovacà kanály \"%s\"."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Neplatný poÄet fragmentů \"%s\"."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Neplatná velikost fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Neplatná úroveŠnice \"%s\"."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "NezdaÅilo se otevÅÃt konfiguraÄnà soubor: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Ätenà z konfiguraÄnÃho souboru: %s ###\n"
@@ -771,6 +796,35 @@ msgstr "RuÅ¡enà superuživatelských oprávnÄnÃ."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "Schopnosti úspÄÅ¡nÄ omezeny na CAP_SYS_NICE."
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "NezdaÅilo se zabÃt démona PulseAudio."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"NacházÃme se ve skupinÄ \"%s\", což umožÅuje plánovánà o vysoké prioritÄ."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1260,7 +1314,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() selhalo: %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Spojenà selhalo: %s\n"
@@ -1465,7 +1519,7 @@ msgid "Too many arguments.\n"
msgstr "PÅÃliÅ¡ mnoho argumentů.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() selhalo.\n"
@@ -1476,12 +1530,12 @@ msgid "io_new() failed.\n"
msgstr "io_new() selhalo.\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() selhalo.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1493,7 +1547,7 @@ msgid "time_new() failed.\n"
msgstr "time_new() selhalo.\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() selhalo.\n"
@@ -1523,7 +1577,7 @@ msgstr "NezdaÅilo se obnovenÃ: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "VAROVÃNÃ: Zvukový server nenà mÃstnÃ, nedojde k pozastavenÃ.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1586,14 +1640,15 @@ msgstr "Velikost vzorkovacà vyrovnávacà pamÄti: %s\n"
msgid "Failed to get server information: %s\n"
msgstr "NezdaÅilo se zÃskánà informacà o serveru: %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1607,12 +1662,12 @@ msgstr ""
"Výchozà zdroj: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "NezdaÅilo se zÃskánà informacà o cÃli: %s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1646,12 +1701,12 @@ msgstr ""
"Vlastnosti:\n"
"%s"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "NezdaÅilo se zÃskánà informacà o zdroji: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1685,20 +1740,20 @@ msgstr ""
"Vlastnosti:\n"
"%s"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "nic"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Selhalo zÃskánà informacà o modulu: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1714,12 +1769,12 @@ msgstr ""
"PoÄet použità %s\n"
"Automatické uvolnÄnÃ: %s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Selhalo zÃskánà informacà o klientu: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1734,12 +1789,12 @@ msgstr ""
"Vlastnosti:\n"
"%s"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Selhalo až get s n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1755,22 +1810,22 @@ msgstr ""
"Vlastnosti:\n"
"%s"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "pipe selhalo: %s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "NezdaÅilo se zÃskánà cÃlových vstupnÃch informacÃ: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1791,12 +1846,12 @@ msgid ""
"\t\t%s\n"
msgstr "Vstup s Modul s s s s s s n s"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, fuzzy, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Selhalo až get zdroj s n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1813,12 +1868,12 @@ msgid ""
"\t\t%s\n"
msgstr "Zdroj Výstup s Modul s s s s s n s"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, fuzzy, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Selhalo až get s n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -1836,22 +1891,22 @@ msgid ""
"\t\t%s\n"
msgstr "Ukázka s s s s s s s n s"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "SelhánÃ: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, fuzzy, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Selhalo až s n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "PÅedÄasný konec souboru\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -1884,7 +1939,7 @@ msgstr ""
" s SERVER název z až až\n"
" n název NÃZEV Jak až zapnuto n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1895,66 +1950,66 @@ msgstr ""
"PÅeloženo s libpulse %s\n"
"Propojeno s libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, fuzzy, c-format
msgid "Please specify a sample file to load\n"
msgstr "ProsÃm a soubor až n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Selhalo otevÅenà zvukového souboru.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, fuzzy, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Vy až a název až n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, fuzzy, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Vy až a název až odstranit n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, fuzzy, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr "Vy až a cÃl rejstÅÃk a a cÃl n"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, fuzzy, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "Vy až a zdroj rejstÅÃk a a zdroj n"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, fuzzy, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Vy až a modul název a n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, fuzzy, c-format
msgid "You have to specify a module index\n"
msgstr "Vy až a modul rejstÅÃk n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, fuzzy, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "Vy ne cÃl Vy až pÅi booleovská hodnota hodnota n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, fuzzy, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "Vy ne zdroj Vy až pÅi booleovská hodnota hodnota n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, fuzzy, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Vy až a cÃl rejstÅÃk a a cÃl n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "Nezadán žádný platný pÅÃkaz.\n"
@@ -2152,6 +2207,21 @@ msgstr "s n"
msgid "Cannot access autospawn lock."
msgstr "pÅÃstup."
+#, fuzzy
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "Volaný SUID root a plánovánà v reálném Äase / o vysoké prioritÄ bylo "
+#~ "zažádáno v konfiguraci. Nedisponujeme ovÅ¡em potÅebnými oprávnÄnÃmi:\n"
+#~ "Nejsme ve skupinÄ \""
+
+#, fuzzy
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--disallow-exit booleovský argument"
+
#~ msgid "Default sink name (%s) does not exist in name register."
#~ msgstr "Výchozà jméno cÃle (%s) ve jmenném registru neexistuje."
diff --git a/po/de.po b/po/de.po
index 23e7190..e55fd1e 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-02-19 12:04+0100\n"
"Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
"Language-Team: German <fedora-trans-de at redhat.com>\n"
@@ -18,69 +18,80 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
#, fuzzy
msgid "Analog Stereo"
msgstr "Stereo"
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
#, fuzzy
msgid "Analog Surround 4.0"
msgstr "Surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
#, fuzzy
msgid "Analog Surround 4.1"
msgstr "Surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
#, fuzzy
msgid "Analog Surround 5.0"
msgstr "Surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
#, fuzzy
msgid "Analog Surround 5.1"
msgstr "Surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
#, fuzzy
msgid "Analog Surround 7.1"
msgstr "Surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -217,88 +228,93 @@ msgstr "System-Modus auf dieser Plattform nicht unterstützt."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) fehlgeschlagen: %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "Parsen der Kommandzeile fehlgeschlagen."
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
"ermöglicht."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Wir befinden uns in der Gruppe '%s', was Echtzeit-Scheduling ermöglicht."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Richtlinien gewähren das Recht aquire-high-priority."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Richtlinien verweigern das Recht acquire-high-priority."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Richtlinien gewähren das Recht aquire-real-time."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Richtlinien verweigern das Recht acquire-real-time."
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, fuzzy, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"Konfiguration fordert Aufruf der SUID root und Echtzeit-Scheduling höchster "
-"Priorität. Allerdings fehlen die nötigen Rechte:\n"
-"Wir befinden uns nicht in der Gruppe '"
+"' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n"
+"Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
+"Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "Scheduling höchster Priorität konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO erfolgreich erhöht"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO fehlgeschlagen: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Verwerfe CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "Echtzeit-Scheduling konfiguriert, jedoch nicht erlaubt."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "Daemon läuft nicht"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon läuft als PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Konnte Prozess nicht abbrechen: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -306,167 +322,167 @@ msgstr ""
"Dieses Programm sollte ohne die Option --system nicht als Administrator "
"ausgeführt werden."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
msgid "Root privileges required."
msgstr "Root-Berechtigungen benötigt."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start nicht unterstützt für System-Instanzen."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "System-Modus aktiv, jeodch --disallow-exit nicht gesetzt!"
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
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:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "System-Modus aktiv, SHM-Modus gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "System-Modus aktiv, Exit-Idle-Time gezwungenermaÃen deaktiviert!"
-#: ../src/daemon/main.c:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "Reservieren von STDIO fehlgeschlagen."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "pipe fehlgeschlagen: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "fork() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "read() fehlgeschlagen: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Start des Daemons fehlgeschlagen."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "Start des Daemons erfolgreich."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Dies ist PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Kompilier-Host: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Kompilier-CFLAGS: %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "Laufe auf Host: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr "%u CPUs gefunden."
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "SeitengröÃe ist %lu Bytes."
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Kompiliere mit Valgrind-Unterstützung: ja"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Kompiliere mit Valgrind-Unterstützung: nein"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Läuft im Valgrind-Modus: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Optimiertes Build: ja"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Optimiertes Build: nein"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Beziehen der Maschinen-ID fehlgeschlagen"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "System- ID ist %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "Nutze Laufzeit-Verzeichnis %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "Nutze Zustands-Verzeichnis %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "Laufe im System-Modus: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() fehlgeschlagen."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Neue hochauslösende Timer verfügbar! Guten Appetit!"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
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:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new() fehlgeschlagen."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Konnte Daemon nicht initialisieren."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Daemon verweigert Ausführung, da keine Module geladen."
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "Start des Daemons abgeschlossen."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "Herunterfahren des Daemon gestartet."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Daemon beendet."
@@ -638,7 +654,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "Option --disallow-module-loading erfordert bool'schen Wert"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "Option --disallow-exit erfordert bool'schen Wert"
#: ../src/daemon/cmdline.c:309
@@ -651,11 +668,13 @@ msgstr ""
"Ungültiges Log-Ziel: Benutzen Sie entweder 'syslog', 'stderr' oder 'auto'."
#: ../src/daemon/cmdline.c:333
-msgid "--log-time boolean argument"
-msgstr "--log-time erfordert bool'schen Wert"
+#, fuzzy
+msgid "--log-time expects boolean argument"
+msgstr "Option --realtime erfordert bool'schen Wert"
#: ../src/daemon/cmdline.c:340
-msgid "--log-meta boolean argument"
+#, fuzzy
+msgid "--log-meta expects boolean argument"
msgstr "--log-meta erfordert bool'schen Wert"
#: ../src/daemon/cmdline.c:359
@@ -715,67 +734,78 @@ msgstr "Lade einmalig: %s\n"
msgid "Path: %s\n"
msgstr "Pfad: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Ungültiges Log-Ziel '%s'."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Ungültige Log-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Ungültige Resample-Methode '%s'."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Ungültiges rlimit '%s'."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit auf dieser Plattform nicht unterstützt."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Ungültiges Sample-Format '%s'."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Ungültige Sample-Rate '%s'."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Ungültige Sample-Kanäle '%s'."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Ungültige Anzahl von Fragmenten '%s'."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Ungültige FragmentgröÃe '%s'."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Ungültige Nice-Stufe '%s'."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Ãffnen der Konfigurationsdatei fehlgeschlagen : %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lese von Konfigurationsdatei: %s ###\n"
@@ -788,6 +818,36 @@ msgstr "Root-Privilegien aufgeben."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "Fähigkeiten erfolgreich auf CAP_SYS_NICE reduziert."
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Terminieren des PulseAudio-Daemon fehlgeschlagen."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"Wir befinden uns in der Gruppe '%s', was Scheduling höchster Priorität "
+"ermöglicht."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1275,7 +1335,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() fehlgeschlagen: %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Verbindungsfehler: %s\n"
@@ -1492,7 +1552,7 @@ msgid "Too many arguments.\n"
msgstr "Zu viele Argumente.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() fehlgeschlagen.\n"
@@ -1503,12 +1563,12 @@ msgid "io_new() failed.\n"
msgstr "io_new() fehlgeschlagen.\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() fehlgeschlagen.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1520,7 +1580,7 @@ msgid "time_new() failed.\n"
msgstr "time_new() fehlgeschlagen.\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() fehlgeschlagen.\n"
@@ -1550,7 +1610,7 @@ msgstr "Resume fehlgeschlagen: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "WARNUNG: Sound-Server läuft nicht lokal, nicht ausgesetzt.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1615,14 +1675,15 @@ msgstr "Sample-Pufferspeichergrösse: %s\n"
msgid "Failed to get server information: %s\n"
msgstr "Beziehen der Server-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1636,12 +1697,12 @@ msgstr ""
"Vorgabe Quelle: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Erhalten der Sink-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1680,12 +1741,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Beziehen der Quellen-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1724,20 +1785,20 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "k. A."
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Beziehen der Modul-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1754,12 +1815,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Beziehen der Client-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1774,12 +1835,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Beziehen der Karten-Information fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1796,22 +1857,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktive Profile: %s\n"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Konnte Sink-Eingabe-Informationen nicht holen: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1848,12 +1909,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Konnte Informationen über Quell-Ausgabe nicht holen: %s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1882,12 +1943,12 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Beziehen der Sample-Informationen fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1918,22 +1979,22 @@ msgstr ""
"\tEigenschaften:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Hochladen des Sample fehlgeschlagen: %s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Dateiende ist zu früh aufgetreten\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1978,7 +2039,7 @@ msgstr ""
" -s, --server=SERVER Name des Zielservers\n"
" -n, --client-name=NAME Rufname des Clients auf dem Server\n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1989,48 +2050,48 @@ msgstr ""
"Kompiliert mit libpulse %s\n"
"Gelinkt mit libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "Geben Sie eine zu öffnende Sample-Datei an\n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Ãffnen der Audio-Datei fehlgeschlagen.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Sie müssen eine abzuspielende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Sie müssen eine zu löschende Sample-Datei angeben\n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr "Sie müssen einen Sink-Eingabe-Indexwert und einen Sink angeben\n"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr ""
"Sie müssen eine Indexwert für die Quell-Ausgabe und eine Quelle angeben\n"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Sie müssen einen Modulnamen angeben und Argumente übergeben.\n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Sie müssen einen Indexwert für ein Modul angeben\n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
@@ -2039,7 +2100,7 @@ msgstr ""
"Sie sollten nur eine Senke angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
@@ -2048,12 +2109,12 @@ msgstr ""
"Sie sollten nur eine Quelle angeben. Sie müssen zumindest einen bool'schen "
"Wert übergeben.\n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Sie müssen einen Karten-Name/Indexwert und einen Profilnamen angeben\n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "Kein gültiger Befehl angegeben.\n"
@@ -2258,14 +2319,17 @@ msgstr "Fehler beim Zugriff auf Autostart -Sperre."
#, fuzzy
#~ msgid ""
-#~ "', PolicyKit refuse to grant us the requested privileges and we have no "
-#~ "increase RLIMIT_NICE/RLIMIT_RTPRIO resource limits.\n"
-#~ "For enabling real-time/high-priority scheduling please acquire the "
-#~ "appropriate PolicyKit privileges, or become a member of '"
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
#~ msgstr ""
-#~ "' und PolicyKit verweigern diese Rechte. Verwerfe SUID wieder.\n"
-#~ "Erlangen Sie die den Richtlinien entsprechenden Rechte, um Echtzeit-"
-#~ "Scheduling zu aktivieren oder werden Sie Mitglied der Gruppe '"
+#~ "Konfiguration fordert Aufruf der SUID root und Echtzeit-Scheduling "
+#~ "höchster Priorität. Allerdings fehlen die nötigen Rechte:\n"
+#~ "Wir befinden uns nicht in der Gruppe '"
+
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--log-time erfordert bool'schen Wert"
#~ msgid ""
#~ "', or increase the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this "
diff --git a/po/el.po b/po/el.po
index 262ecd5..e23edb5 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: el\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2008-08-22 19:40+0300\n"
"Last-Translator: Dimitris Glezos <dimitris at glezos.com>\n"
"Language-Team: Greek <fedora-trans-el at redhat.com>\n"
@@ -16,63 +16,74 @@ msgstr ""
"X-Generator: KAider 0.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
+
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -209,221 +220,227 @@ msgstr ""
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr ""
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
msgid "Root privileges required."
msgstr ""
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "ÎÏ
ÏÏ ÎµÎ¯Î½Î±Î¹ Ïο PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -431,27 +448,27 @@ msgstr ""
"ÎικΠμοÏ
, ο ÏÏ
ÏÎ®Î½Î±Ï ÏοÏ
είναι για Ïα μÏάζα! Î ÏÏÏÏαÏη ÏοÏ
ÏÎµÏ ÏήμεÏα είναι "
"Linux με ενεÏγοÏοιημÎνα Ïα high-resolution timers!"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr ""
@@ -556,7 +573,7 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+msgid "--disallow-exit expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:309
@@ -568,11 +585,11 @@ msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
#: ../src/daemon/cmdline.c:333
-msgid "--log-time boolean argument"
+msgid "--log-time expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:340
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:359
@@ -632,67 +649,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr ""
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr ""
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
@@ -705,6 +733,32 @@ msgstr ""
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr ""
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr ""
@@ -1192,7 +1246,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr ""
@@ -1367,7 +1421,7 @@ msgid "Too many arguments.\n"
msgstr ""
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr ""
@@ -1378,12 +1432,12 @@ msgid "io_new() failed.\n"
msgstr ""
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1395,7 +1449,7 @@ msgid "time_new() failed.\n"
msgstr ""
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1425,7 +1479,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1481,7 +1535,7 @@ msgstr ""
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:136
+#: ../src/utils/pactl.c:137
#, c-format
msgid ""
"User name: %s\n"
@@ -1489,17 +1543,18 @@ msgid ""
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1521,12 +1576,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1548,20 +1603,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1572,12 +1627,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1587,12 +1642,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, c-format
msgid "Failed to get card information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1603,22 +1658,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, c-format
msgid "\tActive Profile: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1639,12 +1694,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1661,12 +1716,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1684,22 +1739,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1725,7 +1780,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1733,66 +1788,66 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr ""
diff --git a/po/es.po b/po/es.po
index baee21d..b293ed3 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-01-16 09:25-0300\n"
"Last-Translator: daniel cabrera <h.daniel.cabrera at gmail.com>\n"
"Language-Team: Spanish <fedora-trans-es at redhat.com>\n"
@@ -16,63 +16,74 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -211,90 +222,91 @@ msgstr "El modo a nivel de sistema no es soportado en esta plataforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falló: %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "Falló al analizar la lÃnea de comando."
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos en el grupo '%s', permitiendo planificación en tiempo real."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit garantiza que se obtenga el privilegio de alta prioridad."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de alta prioridad."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit garantiza el acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit se niega a dar acceso al privilegio de tiempo real."
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"En la configuración se ha pedido una llamada de SUID root y planificación en "
-"tiempo real/de prioridad alta. Sin embargo, carecemos de los provilegios "
-"necesarios:\n"
-"No estamos en el grupo '"
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitadada la planificación de prioridad alta, pero no están "
"permitidas por la polÃtica."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO incrementado en forma exitosa"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "Fallo en RLIMIT_RTPRIO: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Está habilitada la planificación en tiempo real, pero no está permitido por "
"la polÃtica."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "El demonio no está funcionando"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "El demonio está funcionando como PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "No se ha podido detener el demonio: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -302,149 +314,149 @@ msgstr ""
"Este programa no tiene por qué ser ejecutado como root (a menos que --system "
"sea especificado)."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "Se necesitan privilegios de usuario root."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start no está soportado para las instancias del sistema."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-exit! "
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Ejecutándose en modo de sistema, ¡pero no se ha configurado --disallow-"
"module-loading!"
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente el modo SHM!"
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Ejecutándose en modo de sistema, ¡desactivando forzadamente exit idle time!"
-#: ../src/daemon/main.c:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "Fallo al intentar adquirir stdio."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "Falló el pipe: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "Falló el fork(): %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "Falló la operación read(): %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Falló el inicio del demonio. "
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "El demonio se inició exitosamente."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Esto es PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilación: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilación CFLAGS: %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "Ejecutándose en el host: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "El tamaño de la página es de %lu bytes"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Soporte para compilar con Valgrind: si"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Soporte para compilar con Valgrind: no"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Ejecutándose en modo valgrind: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Build optimizado: si"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Build optimizado: no"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Fallo al intentar obtener el ID de la máquina"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "El ID de la máquina es %s"
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilizando directorio de tiempo de ejecución %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "Utilizando directorio de estado %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "Ejecutándose en modo de sistema: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "Ha fallado pa_pid_file_create()."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"¡Existen cronómetros de alta resolución fresquitos y disponibles! ¡Bon "
"appetit!"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -452,29 +464,29 @@ msgstr ""
"¡Amigo, su kernel deja mucho que desear! ¡El plato que hoy recomienda el "
"chef es Linux con cronómetros de alta resolución activados! "
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "Falló pa_core_new()."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Fallo al intentar iniciar el demonio."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"El demonio se ha iniciado sin ningún módulo cargado, y por ello se niega a "
"funcionar."
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "El demonio se inició completamente."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "Comienza a apagarse el demonio."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "El demonio se ha apagado."
@@ -663,7 +675,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera un argumento booleano"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit argumento booleano"
#: ../src/daemon/cmdline.c:309
@@ -676,12 +689,12 @@ msgstr "Log target inválido: use o \"syslog\", o \"stderr\", o \"auto\"."
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit argumento booleano"
+msgid "--log-time expects boolean argument"
+msgstr "--realtime espera un argumento booleano"
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit argumento booleano"
#: ../src/daemon/cmdline.c:359
@@ -741,67 +754,78 @@ msgstr "Carga una vez: %s\n"
msgid "Path: %s\n"
msgstr "Ruta: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destino de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Nivel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de remuestreo inválido '%s'."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] Rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] Rlimit no soportado en esta plataforma."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de muestra inválido '%s'."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Tasa de muestra inválida '%s'."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canales de muestra inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Canales de muestra inválidos '%s'."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Cantidad de fragmentoa inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamaño inválido de fragmento '%s'."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Nivel de nice inválido '%s'."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, 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:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Leyendo desde el archivo de confioguración: %s ###\n"
@@ -815,6 +839,34 @@ msgstr "Abandonando privilegios de root."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "Capacidades limitadas con éxito para CAP_SYS_NICE-"
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Error al intentar detener el demonio de PulseAudio."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "Estamos en el grupo '%s', permitiendo planificación de prioridad alta."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1302,7 +1354,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falló: %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Error en la conexión: %s\n"
@@ -1529,7 +1581,7 @@ msgid "Too many arguments.\n"
msgstr "Demasiados argumentos.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falló.\n"
@@ -1540,12 +1592,12 @@ msgid "io_new() failed.\n"
msgstr "io_new() falló.\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falló.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1557,7 +1609,7 @@ msgid "time_new() failed.\n"
msgstr "time_new() falló.\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falló.\n"
@@ -1587,7 +1639,7 @@ 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:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1655,14 +1707,15 @@ msgstr "Tamaño del cache de muestra: %s\n"
msgid "Failed to get server information: %s\n"
msgstr "Error al intentar obtener información del servidor: %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1676,12 +1729,12 @@ msgstr ""
"Fuente por defecto: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Error al intentar obtener información del destino: %s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1715,12 +1768,12 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Error al intentar obtener información de la fuente: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1754,20 +1807,20 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Error al intentar obtener información del módulo: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1783,12 +1836,12 @@ msgstr ""
"Contador de uso: %s\n"
"Descargar automáticamente: %s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Error al intentar obtener información del cliente: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1803,12 +1856,12 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Error al intentar obtener información de autoload: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1824,22 +1877,22 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "Falló el pipe: %s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Error al intentar obtener información de entrada del destino: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1873,13 +1926,13 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, 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"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1908,12 +1961,12 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Error al intentar obtener información de muestra: %s\n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -1942,22 +1995,22 @@ msgstr ""
"Propiedades:\n"
"%s"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Falla: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Fallo al cargar muestra: %s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Fin prematuro del archivo\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2003,7 +2056,7 @@ msgstr ""
" -n, --client-name=NAME Cómo llamar a este cliente en el "
"servidor\n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -2014,49 +2067,49 @@ msgstr ""
"Compilado con libpulse %s\n"
"Linked con libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique un archivo de muestra a cargar\n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Error al intentar abrir el archivo de sonido.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Debe especificar un nombre de muestra para ser escuchado\n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Debe especificar un nombre de muestra para ser eliminado\n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
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"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
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"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Debe especificar un nombre de módulo y los argumentos\n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Debe especificar un Ãndice de módulo\n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, fuzzy, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
@@ -2065,7 +2118,7 @@ msgstr ""
"No puede especificar más de un destino. Tiene que especificar al menos un "
"valor booleano.\n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, fuzzy, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
@@ -2074,13 +2127,13 @@ msgstr ""
"No puede especificar más de una fuente. Tiene que especificar al menos un "
"valor booleano.\n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, fuzzy, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"Debe especificar un Ãndice para las entradas del destino y un destino\n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "No se ha especificadfo ningún comando válido.\n"
@@ -2290,6 +2343,22 @@ msgstr "Utilizando especificaciones de muestra '%s'\n"
msgid "Cannot access autospawn lock."
msgstr "No se puede acceder al candado de autogeneración."
+#, fuzzy
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "En la configuración se ha pedido una llamada de SUID root y planificación "
+#~ "en tiempo real/de prioridad alta. Sin embargo, carecemos de los "
+#~ "provilegios necesarios:\n"
+#~ "No estamos en el grupo '"
+
+#, 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 "
diff --git a/po/fi.po b/po/fi.po
index 4306364..ba0b9e7 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: git trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-02-13 08:57+0200\n"
"Last-Translator: Timo Jyrinki <timo.jyrinki at iki.fi>\n"
"Language-Team: Finnish <laatu at lokalisointi.org>\n"
@@ -15,63 +15,74 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
+
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -208,83 +219,89 @@ msgstr ""
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr ""
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr ""
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Tosiaikainen ajoitus otettu käyttöön asetuksissa, mutta käytännöt eivät "
"salli sitä."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "Taustaprosessi ei ole käynnissä"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Taustaprosessi käynnissä prosessitunnisteella %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Taustaprosessin lopettaminen epäonnistui: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -292,144 +309,144 @@ msgstr ""
"Tätä ohjelmaa ei ole tarkoitettu suoritettavaksi pääkäyttäjänä (ellei --"
"system ole määritelty)."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
msgid "Root privileges required."
msgstr "Pääkäyttäjän (root) oikeudet vaaditaan."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr ""
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
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:692
+#: ../src/daemon/main.c:696
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:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr ""
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr ""
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Taustaprosessin käynnistys epäonnistui."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "Taustaprosessin käynnistys onnistui."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Tämä on PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Käännöksen isäntäkone: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Käännösaikaiset C-liput (CFLAGS): %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "Käynnissä isäntäkoneella: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr "Löydettiin %u CPU:ta."
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "Sivun koko on %lu tavua"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Käännetty Valgrind-tuella: kyllä"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Käännetty Valgrind-tuella: ei"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Käynnissä valgrind-tilassa: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Optimoitu rakentaminen: kyllä"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Optimoitu rakentaminen: ei"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Konetunnisteen nouto epäonnistui"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "Konetunniste on %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "Käytetään ajonaikaista hakemistoa %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "Käytetään tilahakemistoa %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "Suoritetaan järjestelmätilassa: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr ""
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Korkean tarkkuuden ajastimet käytettävissä."
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -437,29 +454,29 @@ msgstr ""
"Hei, ytimesi on kehno! Linux korkean tarkkuuden ajastimien tuella on hyvin "
"suositeltava!"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr ""
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Taustaprosessin alustus epäonnistui."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
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:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "Taustaprosessin käynnistys valmis."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "Taustaprosessin sulkeminen käynnistetty."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Taustaprosessi lopetettu."
@@ -564,7 +581,7 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+msgid "--disallow-exit expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:309
@@ -576,11 +593,11 @@ msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
msgstr ""
#: ../src/daemon/cmdline.c:333
-msgid "--log-time boolean argument"
+msgid "--log-time expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:340
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr ""
#: ../src/daemon/cmdline.c:359
@@ -640,67 +657,78 @@ msgstr "Lataa kerran: %s\n"
msgid "Path: %s\n"
msgstr "Polku: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "Epäkelpo kanavakartta\n"
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Asetustiedoston avaaminen epäonnistui: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Luettu asetustiedostosta: %s ###\n"
@@ -713,6 +741,33 @@ msgstr "Pudotetaan pääkäyttäjän oikeudet."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr ""
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "PulseAudio-taustaprosessin lopettaminen epäonnistui."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1200,7 +1255,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr ""
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Yhteysvirhe: %s\n"
@@ -1375,7 +1430,7 @@ msgid "Too many arguments.\n"
msgstr "Liian monta argumenttia.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr ""
@@ -1386,12 +1441,12 @@ msgid "io_new() failed.\n"
msgstr ""
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr ""
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1403,7 +1458,7 @@ msgid "time_new() failed.\n"
msgstr ""
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr ""
@@ -1433,7 +1488,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1489,14 +1544,15 @@ msgstr ""
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1510,12 +1566,12 @@ msgstr ""
"Oletuslähde: %s\n"
"Eväste: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Nielun tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1554,12 +1610,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Lähteen tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1598,20 +1654,20 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "-"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Moduulin tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1628,12 +1684,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Asiakkaan tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1648,12 +1704,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Kortin tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1670,22 +1726,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfiilit:\n"
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktiivinen profiili: %s\n"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Nielun sisääntulon tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1722,12 +1778,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Lähteen ulostulon tietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1756,12 +1812,12 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Näytetietojen nouto epäonnistui: %s\n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1792,22 +1848,22 @@ msgstr ""
"\tOminaisuudet:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Epäonnistuminen: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Ennenaikainen tiedoston päättyminen\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1833,7 +1889,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1841,66 +1897,66 @@ msgid ""
"Linked with libpulse %s\n"
msgstr ""
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr ""
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr ""
diff --git a/po/fr.po b/po/fr.po
index 3706e6b..8908a6e 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio trunk\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2008-10-18 20:34+0200\n"
"Last-Translator: Pablo Martin-Gomez <pablo.martin-gomez at laposte.net>\n"
"Language-Team: Français <fedora-trans-fr at redhat.com>\n"
@@ -19,63 +19,74 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -215,93 +226,94 @@ msgstr "Mode système étendu non pris en charge sur cette plateforme."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) a échoué : %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "Ãchec lors de l'analyse de la ligne de commande"
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"Nous sommes dans le groupe « %s », permettant une planification à haute "
"priorité."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"Nous sommes dans le groupe « %s », permettant une planification en temps réel."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de haute priorité."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit a accordé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit a refusé l'acquisition des permissions de temps réel."
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"Le SUID root a été appelé et la planification à haute priorité/en temps réel "
-"demandée dans la configuration. Néanmoins nous n'avons pas les permissions "
-"nécessaires :\n"
-"nous ne somme pas dans le groupe "
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La planification à haute priorité est activée dans la configuration mais "
"n'est pas permise par la politique."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Augmentation de RLIMIT_RTPRIO réussie"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO a échoué : %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Abandon de CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"La planification en temps réel est activée mais n'est pas permise par la "
"politique."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "Lé démon n'est pas lancé"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Le démon est lancé avec le PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Impossible de tuer le démon : %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -309,148 +321,148 @@ msgstr ""
"Le programme n'est pas conçu pour être lancé en tant que root (sauf si --"
"system est renseigné)."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "Les permissions root sont nécessaires."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start n'est pas pris en charge pour les instances système."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
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:684
+#: ../src/daemon/main.c:688
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:687
+#: ../src/daemon/main.c:691
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:692
+#: ../src/daemon/main.c:696
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:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "Ãchec lors de l'acquisition de stdio."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "Ãchec du tube : %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "Ãchec de fork()Â : %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "Ãchec de read()Â : %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Ãchec lors du démarrage du démon."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "Démarrage du démon réussi."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Pulseaudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Hôte de compilation : %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS de compilation : %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "Exécution sur l'hôte : %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "La taille de la page est de %lu octets"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Compilé avec la prise en charge Valgrind : oui"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Compilé avec la prise en charge Valgrind : non"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Exécution en mode valgrind : %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Construction optimisée : oui"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Construction optimisée : non"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Ãchec lors de l'obtention de l'ID de la machine"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID de la machine est %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "Utilisation du répertoire d'exécution %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "Utilisation du répertoire d'état %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "Exécution en mode système : %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "Ãchec de pa_pid_file_create()."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
"De nouvelles horloges à haute résolution sont disponibles ! Bon appétit !"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -458,27 +470,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:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "Ãchec de pa_core_new()."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Ãchec lors de l'initialisation du démon"
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
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:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "Démarrage du démon effectué."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "Fermeture du démon initiée."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Démon terminé."
@@ -666,7 +678,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading requiert un paramètre booléen"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit requiert un paramètre booléen"
#: ../src/daemon/cmdline.c:309
@@ -679,12 +692,12 @@ msgstr "Cible du journal invalide : utilisez « syslog », « stderr » ou
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit requiert un paramètre booléen"
+msgid "--log-time expects boolean argument"
+msgstr "--realtime requiert un paramètre booléen"
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit requiert un paramètre booléen"
#: ../src/daemon/cmdline.c:359
@@ -745,67 +758,78 @@ msgid "Path: %s\n"
msgstr "Chemin : %s\n"
# dans les lignes suivantes [%s = nom de fichier: %u = ligne dans celui-ci]
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Cible du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Niveau du journal « %s » invalide."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Méthode de rééchantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit « %s » invalide."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit n'est pas pris en charge sur cette plateforme."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Format d'échantillon « %s » invalide."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Canaux d'échantillonnage « %s » invalide."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Nombre de fragments « %s » invalide."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Taille du fragment « %s » invalide."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Niveau de priorité (nice) « %s » invalide."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, 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:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lecture à partir du fichier de configuration : %s ###\n"
@@ -819,6 +843,36 @@ msgstr "Abandon des permissions root."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "Limitation des capacités à CAP_SYS_NICE réussie."
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Impossible de tuer le démon PulseAudio."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"Nous sommes dans le groupe « %s », permettant une planification à haute "
+"priorité."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1309,7 +1363,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "Ãchec de pa_stream_connect_record()Â : %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Ãchec lors de la connexion : %s\n"
@@ -1542,7 +1596,7 @@ msgid "Too many arguments.\n"
msgstr "Trop de paramètres.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "Ãchec de pa_mainloop_new().\n"
@@ -1553,12 +1607,12 @@ msgid "io_new() failed.\n"
msgstr "Ãchec de io_new().\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "Ãchec de pa_context_new().\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1570,7 +1624,7 @@ msgid "time_new() failed.\n"
msgstr "Ãchec de time_new().\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "Ãchec de pa_mainloop_run().\n"
@@ -1601,7 +1655,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"AVERTISSEMENT : le serveur de son n'est pas local, suspension annulée.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1669,14 +1723,15 @@ msgstr "Taille du cache de l'échantillon : %s\n"
msgid "Failed to get server information: %s\n"
msgstr "Ãchec lors de l'obtention des informations du serveur : %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1690,13 +1745,13 @@ msgstr ""
"Source par défaut : %s\n"
"Cookie : %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Ãchec lors de l'obtention des informations sur la destination : %s\n"
# demander à Lennart s'il s'agit de monitor of source
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1730,12 +1785,12 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Ãchec lors de l'obtention des informations sur la source : %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1769,20 +1824,20 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "n/d"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Ãchec lors de l'obtention des informations du module : %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1798,12 +1853,12 @@ msgstr ""
"Nombre d'utilisations : %s\n"
"Déchargement automatique : %s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Ãchec lors de l'obtention des informations du client : %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1818,13 +1873,13 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr ""
"Ãchec lors de l'obtention des informations du chargement automatique : %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1840,24 +1895,24 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "Ãchec du tube : %s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
"Ãchec lors de l'obtention des informations de l'entrée de la destination : %"
"s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1891,13 +1946,13 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
"Ãchec lors de l'obtention des informations de la sortie de la source : %s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1926,7 +1981,7 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Ãchec lors de l'obtention des informations de l'échantillon : %s\n"
@@ -1934,7 +1989,7 @@ msgstr "Ãchec lors de l'obtention des informations de l'échantillon : %s\n"
# Lazy ?
# load-sample-lazy = Create a new entry in the sample cache, but don't load
# the sample immediately. The sample is loaded only when it is first used
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -1963,22 +2018,22 @@ msgstr ""
"Propriétés :\n"
"%s"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Ãchec : %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Ãchec lors de l'envoi de l'échantillon : %s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Fin prématurée du fichier\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -2024,7 +2079,7 @@ msgstr ""
" -n, --client-name=NOM Définit le nom de ce client sur le "
"serveur\n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -2035,48 +2090,48 @@ msgstr ""
"Compilé avec libpulse %s\n"
"Lié avec libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "Veuillez indiquer un fichier d'échantillon à charger\n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Ãchec lors de l'ouverture du fichier audio.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Vous devez indiquer un nom d'échantillon à lire\n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Vous devez indiquer un nom d'échantillon à supprimer\n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Vous devez indiquer un index de sortie de destination et une destination\n"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "Vous devez indiquer un index de sortie de source et une source\n"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Vous devez indiquer un nom de module et des paramètres.\n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Vous devez indiquer un index de module\n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, fuzzy, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
@@ -2085,7 +2140,7 @@ msgstr ""
"Vous ne pouvez pas indiquer plus d'une destination. Vous devez indiquer au "
"moins une valeur booléenne.\n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, fuzzy, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
@@ -2094,13 +2149,13 @@ msgstr ""
"Vous ne pouvez pas indiquer plus d'une source. Vous devez indiquer au moins "
"une valeur booléenne.\n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, fuzzy, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"Vous devez indiquer un index de sortie de destination et une destination\n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "Aucune commande valide indiquée.\n"
@@ -2312,6 +2367,22 @@ msgstr "Utilisation de la spécification de l'échantillon « %s »\n"
msgid "Cannot access autospawn lock."
msgstr "Impossible d'accèder au verrou autonome."
+#, fuzzy
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "Le SUID root a été appelé et la planification à haute priorité/en temps "
+#~ "réel demandée dans la configuration. Néanmoins nous n'avons pas les "
+#~ "permissions nécessaires :\n"
+#~ "nous ne somme pas dans le groupe "
+
+#, fuzzy
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--disallow-exit requiert un paramètre booléen"
+
#~ msgid "Default sink name (%s) does not exist in name register."
#~ msgstr ""
#~ "Le nom de la destination par défaut (%s) n'existe pas dans le registre "
diff --git a/po/it.po b/po/it.po
index 9404692..96660b8 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-17 23:22+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-02-23 19:19+0100\n"
"Last-Translator: Luca Ferretti <elle.uca at libero.it>\n"
"Language-Team: Italiano <tp at lists.linux.it>\n"
@@ -15,6 +15,83 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+#: ../src/modules/alsa/alsa-util.c:526
+msgid "Analog Mono"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:532
+#, fuzzy
+msgid "Analog Stereo"
+msgstr "Stereo"
+
+#: ../src/modules/alsa/alsa-util.c:538
+msgid "Digital Stereo (IEC958)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:544
+msgid "Digital Stereo (HDMI)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:551
+#, fuzzy
+msgid "Analog Surround 4.0"
+msgstr "Surround 4.0"
+
+#: ../src/modules/alsa/alsa-util.c:558
+msgid "Digital Surround 4.0 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:566
+#, fuzzy
+msgid "Analog Surround 4.1"
+msgstr "Surround 4.1"
+
+#: ../src/modules/alsa/alsa-util.c:574
+#, fuzzy
+msgid "Analog Surround 5.0"
+msgstr "Surround 5.0"
+
+#: ../src/modules/alsa/alsa-util.c:582
+#, fuzzy
+msgid "Analog Surround 5.1"
+msgstr "Surround 5.1"
+
+#: ../src/modules/alsa/alsa-util.c:590
+msgid "Digital Surround 5.1 (IEC958/AC3)"
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:599
+#, fuzzy
+msgid "Analog Surround 7.1"
+msgstr "Surround 7.1"
+
+#: ../src/modules/alsa/alsa-util.c:1582
+#, c-format
+msgid ""
+"snd_pcm_avail() returned a value that is exceptionally large: %lu bytes (%lu "
+"ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
+#, c-format
+msgid ""
+"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
#: ../src/daemon/ltdl-bind-now.c:124
msgid "Failed to find original lt_dlopen loader."
msgstr "Ricerca del loader lt_dlopen originale non riuscita."
@@ -115,8 +192,7 @@ msgstr "Il GID dell'utente \"%s\" e del gruppo \"%s\" non corrispondono."
msgid "Home directory of user '%s' is not '%s', ignoring."
msgstr "La directory home dell'utente \"%s\" non è \"%s\", ignorato."
-#: ../src/daemon/main.c:201
-#: ../src/daemon/main.c:206
+#: ../src/daemon/main.c:201 ../src/daemon/main.c:206
#, c-format
msgid "Failed to create '%s': %s"
msgstr "Creazione di \"%s\" non riuscita: %s"
@@ -150,247 +226,271 @@ msgstr "Modalità \"system wide\" non supportata su questa piattaforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) non riuscita: %s"
-#: ../src/daemon/main.c:429
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "Analisi della riga di comando non riuscita."
-#: ../src/daemon/main.c:451
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
-#: ../src/daemon/main.c:458
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Attualmente nel gruppo \"%s\", che consente scheduling real-time."
-#: ../src/daemon/main.c:466
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority assegnati da PolicyKit."
-#: ../src/daemon/main.c:469
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "Privilegi acquire-high-priority rifiutati da PolicyKit."
-#: ../src/daemon/main.c:474
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "Privilegi acquire-real-time assegnati da PolicyKit."
-#: ../src/daemon/main.c:477
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "Privilegi acquire-real-time rifiutati da PolicyKit."
-#: ../src/daemon/main.c:506
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
-"Called SUID root and real-time and/or high-priority scheduling was requested in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"Called SUID root and real-time and/or high-priority scheduling was requested "
+"in the configuration. However, we lack the necessary privileges:\n"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"Lo scheduling invocato come root SUID e real-time o high-priority è stato richiesto nella configurazione. Purtroppo mancano i privilegi necessari:\n"
-"Non si è parte del gruppo '"
-#: ../src/daemon/main.c:530
-msgid "High-priority scheduling enabled in configuration but not allowed by policy."
-msgstr "Scheduling high-priority abilitato nella configurazione, ma non ammesso dalla politica."
+#: ../src/daemon/main.c:536
+msgid ""
+"High-priority scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Scheduling high-priority abilitato nella configurazione, ma non ammesso "
+"dalla politica."
-#: ../src/daemon/main.c:559
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "Incremento di RLIMIT_RTPRIO riuscito"
-#: ../src/daemon/main.c:562
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO non riuscito: %s"
# abbandono??
-#: ../src/daemon/main.c:569
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Abbandono del CAP_NICE"
-#: ../src/daemon/main.c:576
-msgid "Real-time scheduling enabled in configuration but not allowed by policy."
-msgstr "Scheduling real-time abilitato nella configurazione, ma non ammesso dalla politica."
+#: ../src/daemon/main.c:582
+msgid ""
+"Real-time scheduling enabled in configuration but not allowed by policy."
+msgstr ""
+"Scheduling real-time abilitato nella configurazione, ma non ammesso dalla "
+"politica."
-#: ../src/daemon/main.c:637
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "Demone non in esecuzione"
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demone in esecuzione con PID %u"
-#: ../src/daemon/main.c:649
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Terminazione del demone non riuscita: %s"
-#: ../src/daemon/main.c:667
-msgid "This program is not intended to be run as root (unless --system is specified)."
-msgstr "Questo programma non è pensato per essere eseguito come root (a meno di specificare --system)."
+#: ../src/daemon/main.c:673
+msgid ""
+"This program is not intended to be run as root (unless --system is "
+"specified)."
+msgstr ""
+"Questo programma non è pensato per essere eseguito come root (a meno di "
+"specificare --system)."
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:675
msgid "Root privileges required."
msgstr "Richiesti privilegi di root."
-#: ../src/daemon/main.c:674
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start non supportato per le istanze di sistema."
-#: ../src/daemon/main.c:679
+#: ../src/daemon/main.c:685
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:682
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
-msgstr "In esecuzione in modalità sistema, ma --disallow-module-loading non impostato."
+msgstr ""
+"In esecuzione in modalità sistema, ma --disallow-module-loading non "
+"impostato."
-#: ../src/daemon/main.c:685
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
-msgstr "In esecuzione in modalità sistema, disabilitata modalità SHM in modo forzoso."
+msgstr ""
+"In esecuzione in modalità sistema, disabilitata modalità SHM in modo forzoso."
# tempo idle????
-#: ../src/daemon/main.c:690
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
-msgstr "In esecuzione in modalità sistema, disabilitato il tempo idle di uscita in modo forzoso."
+msgstr ""
+"In esecuzione in modalità sistema, disabilitato il tempo idle di uscita in "
+"modo forzoso."
-#: ../src/daemon/main.c:717
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "Acquisizione di STDIO non riuscita."
-#: ../src/daemon/main.c:723
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "pipe non riuscita: %s"
-#: ../src/daemon/main.c:728
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "fork() non riuscita: %s"
-#: ../src/daemon/main.c:742
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "read() non riuscita: %s"
-#: ../src/daemon/main.c:748
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Avvio del demone non riuscito."
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "Avvio del demone riuscito."
-#: ../src/daemon/main.c:820
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Questo è PulseAudio %s"
-#: ../src/daemon/main.c:821
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Host di compilazione: %s"
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS di compilazione: %s"
-#: ../src/daemon/main.c:825
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "In esecuzione sull'host: %s"
# evviva il rispetto della l10n!!!
-#: ../src/daemon/main.c:828
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr "Trovate %u CPU."
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "La dimensione di pagina è %lu byte"
-#: ../src/daemon/main.c:833
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Compilato con supporto a Valgrind: sì"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Compilato con supporto a Valgrind: no"
-#: ../src/daemon/main.c:838
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "In esecuzione in modalità valgrind: %s"
-#: ../src/daemon/main.c:841
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Build ottimizzata: sì"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Build ottimizzata: no"
-#: ../src/daemon/main.c:847
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Recupero dell'ID della macchina non riuscito"
-#: ../src/daemon/main.c:850
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "L'ID della macchina è %s"
-#: ../src/daemon/main.c:855
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "In uso directory di runtime %s."
-#: ../src/daemon/main.c:860
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "In uso directory di stato %s."
-#: ../src/daemon/main.c:863
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "In esecuzione in modalità sistema: %s"
-#: ../src/daemon/main.c:878
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() non riuscita."
# io mi domando e dico..... mah!
-#: ../src/daemon/main.c:890
+#: ../src/daemon/main.c:896
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:892
-msgid "Dude, your kernel stinks! The chef's recommendation today is Linux with high-resolution timers enabled!"
-msgstr "Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i timer high-resolution abilitati!"
+#: ../src/daemon/main.c:898
+msgid ""
+"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
+"resolution timers enabled!"
+msgstr ""
+"Hey, questo kernel è andato a male! Lo chef oggi raccomanda Linux con i "
+"timer high-resolution abilitati!"
-#: ../src/daemon/main.c:904
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new() non riuscita."
-#: ../src/daemon/main.c:965
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Inizializzazione del demone non riuscita."
-#: ../src/daemon/main.c:970
+#: ../src/daemon/main.c:977
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:983
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "Completato l'avvio del demone."
-#: ../src/daemon/main.c:989
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "Iniziato l'arresto del demone."
-#: ../src/daemon/main.c:1010
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Demone terminato."
@@ -406,37 +506,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"
@@ -447,10 +558,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"
@@ -460,70 +573,99 @@ msgstr ""
"COMMANDI:\n"
" -h, --help Mostra questo aiuto\n"
" --version Mostra la versione\n"
-" --dump-conf Riversa la configurazione predefinita\n"
-" --dump-modules Riversa l'elenco dei moduli disponibili\n"
+" --dump-conf Riversa la configurazione "
+"predefinita\n"
+" --dump-modules Riversa l'elenco dei moduli "
+"disponibili\n"
" --dump-resample-methods Riversa i metodi di ricampionamento\n"
" disponibili\n"
-" --cleanup-shm Pulisce i segmenti di memoria condivisa\n"
+" --cleanup-shm Pulisce i segmenti di memoria "
+"condivisa\n"
" esauriti\n"
-" --start Avvia il demone se non è in esecuzione\n"
+" --start Avvia il demone se non è in "
+"esecuzione\n"
" -k --kill Uccide un demone in esecuzione\n"
-" --check Controlla la presenza di un demone in\n"
-" esecuzione (restituisce solo il codice\n"
+" --check Controlla la presenza di un demone "
+"in\n"
+" esecuzione (restituisce solo il "
+"codice\n"
" di uscita)\n"
"\n"
"OPZIONI:\n"
" --system[=BOOL] Esegue un'istanza di sistema\n"
" -D, --daemonize[=BOOL] Rende demone dopo l'avvio\n"
" --fail[=BOOL] Esce quando l'avvio non riesce\n"
-" --high-priority[=BOOL] Tenta di impostare un livello di nice\n"
-" elevato (disponibile solo come root,\n"
-" quando SUID o con RLIMIT_NICE elevato)\n"
+" --high-priority[=BOOL] Tenta di impostare un livello di "
+"nice\n"
+" elevato (disponibile solo come "
+"root,\n"
+" quando SUID o con RLIMIT_NICE "
+"elevato)\n"
" --realtime[=BOOL] Tenta di abilitare lo scheduling\n"
-" realtime (disponibile solo come root,\n"
-" quando SUID o con RLIMIT_RTPRIO elevato)\n"
-" --disallow-module-loading[=BOOL] Rifiuta il caricamento/rimozione dei\n"
+" realtime (disponibile solo come "
+"root,\n"
+" quando SUID o con RLIMIT_RTPRIO "
+"elevato)\n"
+" --disallow-module-loading[=BOOL] Rifiuta il caricamento/rimozione "
+"dei\n"
" moduli richiesi dall'utente dopo \n"
" l'avvio\n"
-" --disallow-exit[=BOOL] Rifiuta le richieste utente di uscita\n"
-" --exit-idle-time=SECONDI Termina il demone quando inattivo e una\n"
+" --disallow-exit[=BOOL] Rifiuta le richieste utente di "
+"uscita\n"
+" --exit-idle-time=SECONDI Termina il demone quando inattivo e "
+"una\n"
" volta trascorso questo tempo\n"
" --module-idle-time=SECONDI Rimuove i moduli caricati in modo\n"
-" automatico quando inattivo e una volta\n"
+" automatico quando inattivo e una "
+"volta\n"
" trascorso questo tempo\n"
" --scache-idle-time=SECONDI Rimuove i campioni caricati in modo\n"
-" automatico quando inattivo e una volta\n"
+" automatico quando inattivo e una "
+"volta\n"
" trascorso questo tempo\n"
" --log-level[=LIVELLO] Incrementa o imposta il livello di \n"
" verbosità \n"
" -v Incrementa il livello di verbosità \n"
-" --log-target={auto,syslog,stderr} Specifica la destinazione del registro\n"
-" --log-meta[=BOOL] Include la posizione del codice nei \n"
+" --log-target={auto,syslog,stderr} Specifica la destinazione del "
+"registro\n"
+" --log-meta[=BOOL] Include la posizione del codice "
+"nei \n"
" messaggi di registro\n"
-" --log-time[=BOOL] Include i marcatempo nei messaggi di\n"
+" --log-time[=BOOL] Include i marcatempo nei messaggi "
+"di\n"
" registro\n"
-" --log-backtrace=FRAMES Include un backtrace nei messaggi di \n"
+" --log-backtrace=FRAMES Include un backtrace nei messaggi "
+"di \n"
" registro\n"
-" -p, --dl-search-path=PERCORSO Imposta il percorso di ricerca per gli \n"
-" oggetti condivisi dinamici (plugin)\n"
-" --resample-method=METODO Usa il metodo di ricampionamento indicato\n"
-" (vedere --dump-resample-methods per i\n"
+" -p, --dl-search-path=PERCORSO Imposta il percorso di ricerca per "
+"gli \n"
+" oggetti condivisi dinamici "
+"(plugin)\n"
+" --resample-method=METODO Usa il metodo di ricampionamento "
+"indicato\n"
+" (vedere --dump-resample-methods per "
+"i\n"
" valori ammessi)\n"
" --use-pid-file[=BOOL] Crea un file PID\n"
-" --no-cpu-limit[=BOOL] Non installa un limitatore di carico\n"
-" della CPU sulle piattaforme che lo \n"
+" --no-cpu-limit[=BOOL] Non installa un limitatore di "
+"carico\n"
+" della CPU sulle piattaforme che "
+"lo \n"
" supportano.\n"
" --disable-shm[=BOOL] Disabilita il supporto alla memoria\n"
" condivisa.\n"
"\n"
"SCRIPT DI AVVIO:\n"
-" -L, --load=\"MODULO ARGOMENTI\" Carica il modulo di plugin specificato\n"
+" -L, --load=\"MODULO ARGOMENTI\" Carica il modulo di plugin "
+"specificato\n"
" con gli argomenti specificati\n"
" -F, --file=NOME_FILE Esegue lo script specificato\n"
-" -C Apre una riga di comando sulla TTY in \n"
+" -C Apre una riga di comando sulla TTY "
+"in \n"
" esecuzione dopo l'avvio\n"
"\n"
-" -n Non carica il file script predefinito\n"
+" -n Non carica il file script "
+"predefinito\n"
#: ../src/daemon/cmdline.c:252
msgid "--daemonize expects boolean argument"
@@ -534,8 +676,13 @@ msgid "--fail expects boolean argument"
msgstr "--fail richiede un argomento booleano"
#: ../src/daemon/cmdline.c:269
-msgid "--log-level expects log level argument (either numeric in range 0..4 or one of debug, info, notice, warn, error)."
-msgstr "--log-level richiede il livello di registro come argomento (sia nell'intervallo numerico 0..4 oppure uno tra 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 richiede il livello di registro come argomento (sia "
+"nell'intervallo numerico 0..4 oppure uno tra debug, info, notice, warn, "
+"error)."
#: ../src/daemon/cmdline.c:281
msgid "--high-priority expects boolean argument"
@@ -553,7 +700,8 @@ msgstr "--disallow-module-loading richiede un argomento booleano"
#
# Segnalato http://pulseaudio.org/ticket/484
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit richiede un argomento booleano"
#: ../src/daemon/cmdline.c:309
@@ -562,16 +710,19 @@ msgstr "--use-pid-file richiede un argomento booleano"
#: ../src/daemon/cmdline.c:326
msgid "Invalid log target: use either 'syslog', 'stderr' or 'auto'."
-msgstr "Destinazione del registro non valida: usare \"syslog\", \"stderr\" o \"auto\"."
+msgstr ""
+"Destinazione del registro non valida: usare \"syslog\", \"stderr\" o \"auto"
+"\"."
-# FIXME missing expects???
#: ../src/daemon/cmdline.c:333
-msgid "--log-time boolean argument"
-msgstr "--log-time richiede un argomento booleano"
+#, fuzzy
+msgid "--log-time expects boolean argument"
+msgstr "--realtime richiede un argomento booleano"
# FIXME missing expects???
#: ../src/daemon/cmdline.c:340
-msgid "--log-meta boolean argument"
+#, fuzzy
+msgid "--log-meta expects boolean argument"
msgstr "--log-meta richiede un argomento booleano"
#: ../src/daemon/cmdline.c:359
@@ -632,68 +783,79 @@ msgstr "Caricato una sola volta: %s\n"
msgid "Path: %s\n"
msgstr "Percorso: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Destinazione di registro \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] Livello di registro \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Metodo di ricampionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit non supportato su questa piattaforma."
# o campionamento?? ma campionamento non è sampling?
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato di campionamento \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Frequenza di campionamento '%s' non valida."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Canali di campionamento \"%s\" non validi."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Numero di frammenti \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Dimensione dei frammenti \"%s\" non valida."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Livello di nice \"%s\" non valido."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Apertura del file di configurazione non riuscita: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lettura dal file di configurazione: %s ###\n"
@@ -706,8 +868,35 @@ msgstr "Abbandono dei privilegi di root."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "Limitazione delle capacità a CAP_SYS_NICE riuscita."
-#: ../src/pulse/channelmap.c:103
-#: ../src/pulse/channelmap.c:804
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Uccisione del demone PulseAudio non riuscita."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "Attualmente nel gruppo \"%s\", che consente scheduling high-priority."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
+#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -913,12 +1102,9 @@ msgstr "Superiore posteriore sinistro"
msgid "Top Rear Right"
msgstr "Superiore posteriore destro"
-#: ../src/pulse/channelmap.c:476
-#: ../src/pulse/sample.c:167
-#: ../src/pulse/volume.c:170
-#: ../src/pulse/volume.c:196
-#: ../src/pulse/volume.c:216
-#: ../src/pulse/volume.c:246
+#: ../src/pulse/channelmap.c:476 ../src/pulse/sample.c:167
+#: ../src/pulse/volume.c:170 ../src/pulse/volume.c:196
+#: ../src/pulse/volume.c:216 ../src/pulse/volume.c:246
msgid "(invalid)"
msgstr "(non valido)"
@@ -1067,8 +1253,7 @@ msgstr "%0.1f KiB"
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() non riuscita"
@@ -1081,21 +1266,21 @@ msgstr "Analisi dei dati cookie non riuscita"
msgid "Failed to open configuration file '%s': %s"
msgstr "Apertura del file di configurazione \"%s\" non riuscita: %s"
-#: ../src/pulse/context.c:517
+#: ../src/pulse/context.c:519
msgid "No cookie loaded. Attempting to connect without."
msgstr "Nessun cookie caricato. Tentativo di connettersi senza."
-#: ../src/pulse/context.c:643
+#: ../src/pulse/context.c:649
#, c-format
msgid "fork(): %s"
msgstr "fork(): %s"
-#: ../src/pulse/context.c:696
+#: ../src/pulse/context.c:702
#, c-format
msgid "waitpid(): %s"
msgstr "waitpid(): %s"
-#: ../src/pulse/context.c:1257
+#: ../src/pulse/context.c:1279
#, c-format
msgid "Received message for unknown extension '%s'"
msgstr "Ricevuto messaggio per l'estensione sconosciuta \"%s\""
@@ -1181,94 +1366,89 @@ msgstr "Stream spostato sul device %s (%u, %ssospeso).%s \n"
msgid "not "
msgstr "non"
-#: ../src/utils/pacat.c:259
+#: ../src/utils/pacat.c:271
#, c-format
msgid "Connection established.%s \n"
msgstr "Connessione stabilita.%s \n"
-#: ../src/utils/pacat.c:262
+#: ../src/utils/pacat.c:274
#, c-format
msgid "pa_stream_new() failed: %s\n"
msgstr "pa_stream_new() non riuscita: %s\n"
-#: ../src/utils/pacat.c:288
+#: ../src/utils/pacat.c:301
#, c-format
msgid "pa_stream_connect_playback() failed: %s\n"
msgstr "pa_stream_connect_playback() non riuscita: %s\n"
-#: ../src/utils/pacat.c:294
+#: ../src/utils/pacat.c:307
#, c-format
msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() non riuscita: %s\n"
-#: ../src/utils/pacat.c:308
-#: ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:758
-#: ../src/utils/paplay.c:183
+#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Connessione non riuscita: %s\n"
-#: ../src/utils/pacat.c:329
-#: ../src/utils/paplay.c:75
+#: ../src/utils/pacat.c:341 ../src/utils/paplay.c:75
#, c-format
msgid "Failed to drain stream: %s\n"
msgstr "Svuotamento dello stream non riuscito: %s\n"
-#: ../src/utils/pacat.c:334
-#: ../src/utils/paplay.c:80
+#: ../src/utils/pacat.c:346 ../src/utils/paplay.c:80
#, c-format
msgid "Playback stream drained.\n"
msgstr "Stream di riproduzione svuotato.\n"
-#: ../src/utils/pacat.c:344
-#: ../src/utils/paplay.c:92
+#: ../src/utils/pacat.c:356 ../src/utils/paplay.c:92
#, c-format
msgid "Draining connection to server.\n"
msgstr "Svuotamento della connessione sul server.\n"
-#: ../src/utils/pacat.c:370
+#: ../src/utils/pacat.c:382
#, c-format
msgid "Got EOF.\n"
msgstr "Ricevuto EOF.\n"
-#: ../src/utils/pacat.c:376
+#: ../src/utils/pacat.c:388
#, c-format
msgid "pa_stream_drain(): %s\n"
msgstr "pa_stream_drain(): %s\n"
-#: ../src/utils/pacat.c:386
+#: ../src/utils/pacat.c:398
#, c-format
msgid "read() failed: %s\n"
msgstr "read() non riuscita: %s\n"
-#: ../src/utils/pacat.c:418
+#: ../src/utils/pacat.c:430
#, c-format
msgid "write() failed: %s\n"
msgstr "write() non riuscita: %s\n"
-#: ../src/utils/pacat.c:439
+#: ../src/utils/pacat.c:451
#, c-format
msgid "Got signal, exiting.\n"
msgstr "Ricevuto il segnale, uscita.\n"
-#: ../src/utils/pacat.c:453
+#: ../src/utils/pacat.c:465
#, c-format
msgid "Failed to get latency: %s\n"
msgstr "Recupero della latenza non riuscito: %s\n"
# dubbio: tempo o durata??
-#: ../src/utils/pacat.c:458
+#: ../src/utils/pacat.c:470
#, c-format
msgid "Time: %0.3f sec; Latency: %0.0f usec. \r"
msgstr "Tempo: %0.3f sec; Latenza: %0.0f millisec. \r"
-#: ../src/utils/pacat.c:478
+#: ../src/utils/pacat.c:490
#, c-format
msgid "pa_stream_update_timing_info() failed: %s\n"
msgstr "pa_stream_update_timing_info() non riuscita: %s\n"
-#: ../src/utils/pacat.c:491
+#: ../src/utils/pacat.c:503
#, c-format
msgid ""
"%s [options]\n"
@@ -1281,27 +1461,44 @@ msgid ""
"\n"
" -v, --verbose Enable verbose operations\n"
"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
-" -d, --device=DEVICE The name of the sink/source to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
-" --stream-name=NAME How to call this stream on the server\n"
-" --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
-" --rate=SAMPLERATE The sample rate in Hz (defaults to 44100)\n"
-" --format=SAMPLEFORMAT The sample type, one of s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be (defaults to s16ne)\n"
-" --channels=CHANNELS The number of channels, 1 for mono, 2 for stereo\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
+" -d, --device=DEVICE The name of the sink/source to "
+"connect to\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
+" --rate=SAMPLERATE The sample rate in Hz (defaults to "
+"44100)\n"
+" --format=SAMPLEFORMAT The sample type, one of s16le, "
+"s16be, u8, float32le,\n"
+" float32be, ulaw, alaw, s32le, s32be "
+"(defaults to s16ne)\n"
+" --channels=CHANNELS The number of channels, 1 for mono, "
+"2 for stereo\n"
" (defaults to 2)\n"
-" --channel-map=CHANNELMAP Channel map to use instead of the default\n"
-" --fix-format Take the sample format from the sink the stream is\n"
+" --channel-map=CHANNELMAP Channel map to use instead of the "
+"default\n"
+" --fix-format Take the sample format from the sink "
+"the stream is\n"
" being connected to.\n"
-" --fix-rate Take the sampling rate from the sink the stream is\n"
+" --fix-rate Take the sampling rate from the sink "
+"the stream is\n"
" being connected to.\n"
-" --fix-channels Take the number of channels and the channel map\n"
-" from the sink the stream is being connected to.\n"
+" --fix-channels Take the number of channels and the "
+"channel map\n"
+" from the sink the stream is being "
+"connected to.\n"
" --no-remix Don't upmix or downmix channels.\n"
-" --no-remap Map channels by index instead of name.\n"
-" --latency=BYTES Request the specified latency in bytes.\n"
-" --process-time=BYTES Request the specified process time per request in bytes.\n"
+" --no-remap Map channels by index instead of "
+"name.\n"
+" --latency=BYTES Request the specified latency in "
+"bytes.\n"
+" --process-time=BYTES Request the specified process time "
+"per request in bytes.\n"
msgstr ""
"%s [OPZIONI]\n"
"\n"
@@ -1313,41 +1510,58 @@ msgstr ""
"\n"
" -v, --verbose Abilita la modalità prolisse\n"
"\n"
-" -s, --server=SERVER Il nome del server a cui connettersi\n"
+" -s, --server=SERVER Il nome del server a cui "
+"connettersi\n"
" -d, --device=DEVICE Il nome del sink/sorgente a cui\n"
" connettersi\n"
-" -n, --client-name=NOME Come chiamare questo client sul server\n"
-" --stream-name=NOME Come chiamare questo stream sul server\n"
-" --volume=VOLUME Specifica il volume iniziale (lineare) \n"
+" -n, --client-name=NOME Come chiamare questo client sul "
+"server\n"
+" --stream-name=NOME Come chiamare questo stream sul "
+"server\n"
+" --volume=VOLUME Specifica il volume iniziale "
+"(lineare) \n"
" nell'intervallo 0...65536\n"
" --rate=FREQ_CAMP La frequenza di campionamento in Hz\n"
" (44100 come predefinita)\n"
-" --format=FORM_CAMP Il tipo di campionamento. Valori ammessi\n"
+" --format=FORM_CAMP Il tipo di campionamento. Valori "
+"ammessi\n"
" sono: s16le, s16be, u8, float32le,\n"
-" float32be, ulaw, alaw, s32le, s32be\n"
+" float32be, ulaw, alaw, s32le, "
+"s32be\n"
" (s16ne come predefinito)\n"
-" --channels=CANALI Il numero di canali, 1 per mono, 2 per\n"
+" --channels=CANALI Il numero di canali, 1 per mono, 2 "
+"per\n"
" stereo (2 come predefinito)\n"
-" --channel-map=MAP_CANALI La mappa di canali da usare al posto di\n"
+" --channel-map=MAP_CANALI La mappa di canali da usare al posto "
+"di\n"
" quella predefinita\n"
-" --fix-format Recupera il formato di campionamento\n"
-" dal sink a cui lo stream sta per essere\n"
+" --fix-format Recupera il formato di "
+"campionamento\n"
+" dal sink a cui lo stream sta per "
+"essere\n"
" connesso.\n"
-" --fix-rate Recupera la frequenza di campionamento\n"
-" dal sink a cui lo stream sta per essere\n"
+" --fix-rate Recupera la frequenza di "
+"campionamento\n"
+" dal sink a cui lo stream sta per "
+"essere\n"
" connesso.\n"
-" --fix-channels Recupera il numero di canali e la mappa\n"
-" dei canali dal sink a cui lo stream \n"
+" --fix-channels Recupera il numero di canali e la "
+"mappa\n"
+" dei canali dal sink a cui lo "
+"stream \n"
" sta per essere connesso.\n"
" --no-remix Non eseguire l'upmix o il downmix \n"
" dei canali.\n"
-" --no-remap Mappa i canali per indice invece che \n"
+" --no-remap Mappa i canali per indice invece "
+"che \n"
" per nome.\n"
-" --latency=BYTE Richiede la latenza specificata in byte.\n"
-" --process-time=BYTE Richiede il tempo di elaborazione per\n"
+" --latency=BYTE Richiede la latenza specificata in "
+"byte.\n"
+" --process-time=BYTE Richiede il tempo di elaborazione "
+"per\n"
" richiesta specificato in byte.\n"
-#: ../src/utils/pacat.c:592
+#: ../src/utils/pacat.c:604
#, c-format
msgid ""
"pacat %s\n"
@@ -1358,95 +1572,90 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pacat.c:649
+#: ../src/utils/pacat.c:661
#, c-format
msgid "Invalid channel map '%s'\n"
msgstr "Mappa di canali \"%s\" non valida\n"
-#: ../src/utils/pacat.c:678
+#: ../src/utils/pacat.c:690
#, c-format
msgid "Invalid latency specification '%s'\n"
msgstr "Specifica di latenza \"%s\" non valida\n"
# esecuzione???
-#: ../src/utils/pacat.c:685
+#: ../src/utils/pacat.c:697
#, c-format
msgid "Invalid process time specification '%s'\n"
msgstr "Specifica di tempo di elaborazione \"%s\" non valida\n"
-#: ../src/utils/pacat.c:696
+#: ../src/utils/pacat.c:708
#, c-format
msgid "Invalid sample specification\n"
msgstr "Specifica di campionamento non valida\n"
-#: ../src/utils/pacat.c:701
+#: ../src/utils/pacat.c:713
#, c-format
msgid "Channel map doesn't match sample specification\n"
msgstr "La mappa di canali non corrisponde alla specifica di campionamento\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:720
#, c-format
msgid "Opening a %s stream with sample specification '%s'.\n"
msgstr "Apertura di uno stream %s con specifica di campionamento \"%s\".\n"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:720
msgid "recording"
msgstr "registrazione"
-#: ../src/utils/pacat.c:708
+#: ../src/utils/pacat.c:720
msgid "playback"
msgstr "riproduzione"
-#: ../src/utils/pacat.c:716
+#: ../src/utils/pacat.c:728
#, c-format
msgid "open(): %s\n"
msgstr "open(): %s\n"
-#: ../src/utils/pacat.c:721
+#: ../src/utils/pacat.c:733
#, c-format
msgid "dup2(): %s\n"
msgstr "dup2(): %s\n"
-#: ../src/utils/pacat.c:731
+#: ../src/utils/pacat.c:743
#, c-format
msgid "Too many arguments.\n"
msgstr "Troppi argomenti.\n"
-#: ../src/utils/pacat.c:744
-#: ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1013
-#: ../src/utils/paplay.c:381
+#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() non riuscita.\n"
-#: ../src/utils/pacat.c:765
+#: ../src/utils/pacat.c:777
#, c-format
msgid "io_new() failed.\n"
msgstr "io_new() non riuscita.\n"
-#: ../src/utils/pacat.c:771
-#: ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1027
-#: ../src/utils/paplay.c:396
+#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() non riuscita.\n"
-#: ../src/utils/pacat.c:779
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
+#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
msgstr "pa_context_connect() non riuscita: %s"
-#: ../src/utils/pacat.c:790
+#: ../src/utils/pacat.c:802
#, c-format
msgid "time_new() failed.\n"
msgstr "time_new() non riuscita.\n"
-#: ../src/utils/pacat.c:797
-#: ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1035
-#: ../src/utils/paplay.c:407
+#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() non riuscita.\n"
@@ -1477,8 +1686,7 @@ msgstr "Ripristino non riuscito: %s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "ATTENZIONE: server audio non locale, impossibile sospendere.\n"
-#: ../src/utils/pasuspender.c:176
-#: ../src/utils/pactl.c:764
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1496,14 +1704,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 [OPZIONI] ... \n"
"\n"
" -h, --help Mostra questo aiuto\n"
" --version Mostra la versione\n"
-" -s, --server=SERVER Il nome del server a cui connettersi\n"
+" -s, --server=SERVER Il nome del server a cui "
+"connettersi\n"
"\n"
#: ../src/utils/pasuspender.c:251
@@ -1530,7 +1740,9 @@ msgstr "Attualmente in uso: %u blocchi contenenti %s byte in totale.\n"
#: ../src/utils/pactl.c:117
#, c-format
msgid "Allocated during whole lifetime: %u blocks containing %s bytes total.\n"
-msgstr "Allocati durante l'intera esecuzione: %u blocchi contenenti %s byte in totale.\n"
+msgstr ""
+"Allocati durante l'intera esecuzione: %u blocchi contenenti %s byte in "
+"totale.\n"
#: ../src/utils/pactl.c:120
#, c-format
@@ -1542,14 +1754,15 @@ msgstr "Dimensione della cache dei campioni: %s\n"
msgid "Failed to get server information: %s\n"
msgstr "Recupero delle informazioni del server non riuscito: %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1563,7 +1776,7 @@ msgstr ""
"Sorgente predefinita: %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Recupero delle informazioni del sink non riuscito: %s\n"
@@ -1571,7 +1784,7 @@ msgstr "Recupero delle informazioni del sink non riuscito: %s\n"
# nel relativo messaggio per il source
# c'è "monitor of sink", quindi assumo che
# qui dovesse essere "monitor of source"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1610,12 +1823,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Recupero delle informazioni della sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1654,28 +1867,20 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:303
-#: ../src/utils/pactl.c:347
-#: ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419
-#: ../src/utils/pactl.c:478
-#: ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489
-#: ../src/utils/pactl.c:533
-#: ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540
-#: ../src/utils/pactl.c:583
-#: ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "N/D"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Recupero delle informazioni del modulo non riuscito: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1692,12 +1897,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Recupero delle informazioni del client non riuscito: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1712,12 +1917,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Recupero delle informazioni della scheda non riuscito: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1734,12 +1939,12 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfili:\n"
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tProfilo attivo: %s\n"
@@ -1748,12 +1953,13 @@ msgstr "\tProfilo attivo: %s\n"
# A stream that is connected to an output device, i.e. an input for a sink.
#
# from http://pulseaudio.org/wiki/WritingVolumeControlUIs
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
-msgstr "Recupero delle informazioni dell'ingresso per il sink non riuscito: %s\n"
+msgstr ""
+"Recupero delle informazioni dell'ingresso per il sink non riuscito: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1794,12 +2000,13 @@ msgstr ""
# A stream that is connected to an input device, i.e. an output of a source.
#
# from http://pulseaudio.org/wiki/WritingVolumeControlUIs
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
-msgstr "Recupero delle informazioni dell'uscita per la sorgente non riuscito: %s\n"
+msgstr ""
+"Recupero delle informazioni dell'uscita per la sorgente non riuscito: %s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1828,13 +2035,13 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Recupero delle informazioni del campione non riuscito: %s\n"
# campiona lazy??
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1865,23 +2072,22 @@ msgstr ""
"\tProprietà :\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:599
-#: ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Fallimento: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Caricamento del campione non riuscito: %s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Fine del file prematura\n"
-#: ../src/utils/pactl.c:770
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1901,8 +2107,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 [OPZIONE...] stat\n"
"%s [OPZIONE...] list\n"
@@ -1924,7 +2132,7 @@ msgstr ""
" -s, --server=SERVER Il nome del server a cui connettersi\n"
" -n, --client-name=NOME Come chiamare questo client sul server\n"
-#: ../src/utils/pactl.c:822
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1935,62 +2143,71 @@ msgstr ""
"Compilato con libpulse %s\n"
"Link eseguito con libpulse %s\n"
-#: ../src/utils/pactl.c:861
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "Specificare un file campione da caricare\n"
-#: ../src/utils/pactl.c:883
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Apertura del file audio non riuscita.\n"
-#: ../src/utils/pactl.c:895
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Ã necessario specificare un nome di campione da riprodurre\n"
-#: ../src/utils/pactl.c:907
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Ã necessario specificare un nome di campione da rimuovere\n"
-#: ../src/utils/pactl.c:915
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr "Ã necessario specificare un ingresso per sink e un sink\n"
-#: ../src/utils/pactl.c:924
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "Ã necessario specificare una uscita per sorgente e una sorgente\n"
-#: ../src/utils/pactl.c:938
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Ã necessario specificare un nome di modulo e gli argomenti.\n"
-#: ../src/utils/pactl.c:958
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Ã necessario specificare un indice di modulo\n"
-#: ../src/utils/pactl.c:968
+#: ../src/utils/pactl.c:972
#, c-format
-msgid "You may not specify more than one sink. You have to specify a boolean value.\n"
-msgstr "Non è possibile specificare più di un sink. à necessario specificare un valore booleano.\n"
+msgid ""
+"You may not specify more than one sink. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Non è possibile specificare più di un sink. à necessario specificare un "
+"valore booleano.\n"
-#: ../src/utils/pactl.c:981
+#: ../src/utils/pactl.c:985
#, c-format
-msgid "You may not specify more than one source. You have to specify a boolean value.\n"
-msgstr "Non è possibile specificare più di una sorgente. à necessario specificare un valore booleano.\n"
+msgid ""
+"You may not specify more than one source. You have to specify a boolean "
+"value.\n"
+msgstr ""
+"Non è possibile specificare più di una sorgente. à necessario specificare un "
+"valore booleano.\n"
-#: ../src/utils/pactl.c:993
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
-msgstr "Ã necessario specificare un nome/indice di scheda e un nome di profilo.\n"
+msgstr ""
+"Ã necessario specificare un nome/indice di scheda e un nome di profilo.\n"
-#: ../src/utils/pactl.c:1008
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "Nessun comando valido specificato.\n"
@@ -2002,14 +2219,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 SORGENTE] [-c FILE] [-d|-e|-i|-r]\n"
+"%s [-D DISPLAY] [-S SERVER] [-O SINK] [-I SORGENTE] [-c FILE] [-d|-e|-i|-"
+"r]\n"
"\n"
" -d Mostra i dati PulseAudio attuali attaccati al display X11 (predef)\n"
" -e Esporta i dati PulseAudio locali sul display X11\n"
-" -i Importa i dati PulseAudio dal display X11 alle variabili ambientali e\n"
+" -i Importa i dati PulseAudio dal display X11 alle variabili ambientali "
+"e\n"
" al file cookie locali \n"
" -r Rimuove i dati PulseAudio dal display X11\n"
@@ -2096,14 +2316,12 @@ msgstr "Il demone non sta rispondendo."
msgid "select(): %s"
msgstr "select(): %s"
-#: ../src/utils/pacmd.c:154
-#: ../src/utils/pacmd.c:171
+#: ../src/utils/pacmd.c:154 ../src/utils/pacmd.c:171
#, c-format
msgid "read(): %s"
msgstr "read(): %s"
-#: ../src/utils/pacmd.c:187
-#: ../src/utils/pacmd.c:201
+#: ../src/utils/pacmd.c:187 ../src/utils/pacmd.c:201
#, c-format
msgid "write(): %s"
msgstr "write(): %s"
@@ -2134,11 +2352,15 @@ msgid ""
"\n"
" -v, --verbose Enable verbose operation\n"
"\n"
-" -s, --server=SERVER The name of the server to connect to\n"
+" -s, --server=SERVER The name of the server to connect "
+"to\n"
" -d, --device=DEVICE The name of the sink to connect to\n"
-" -n, --client-name=NAME How to call this client on the server\n"
-" --stream-name=NAME How to call this stream on the server\n"
-" --volume=VOLUME Specify the initial (linear) volume in range 0...65536\n"
+" -n, --client-name=NAME How to call this client on the "
+"server\n"
+" --stream-name=NAME How to call this stream on the "
+"server\n"
+" --volume=VOLUME Specify the initial (linear) volume "
+"in range 0...65536\n"
" --channel-map=CHANNELMAP Set the channel map to the use\n"
msgstr ""
"%s [OPZIONI] [FILE]\n"
@@ -2148,11 +2370,15 @@ msgstr ""
"\n"
" -v, --verbose Abilita la modalità prolissa\n"
"\n"
-" -s, --server=SERVER Il nome del server a cui connettersi\n"
+" -s, --server=SERVER Il nome del server a cui "
+"connettersi\n"
" -d, --device=DEVICE Il nome del sink a cui connettersi\n"
-" -n, --client-name=NOME Come chiamare questo client sul server\n"
-" --stream-name=NOME Come chiamare questo stream sul server\n"
-" --volume=VOLUME Specifica il volume iniziale (lineare) \n"
+" -n, --client-name=NOME Come chiamare questo client sul "
+"server\n"
+" --stream-name=NOME Come chiamare questo stream sul "
+"server\n"
+" --volume=VOLUME Specifica il volume iniziale "
+"(lineare) \n"
" nell'intervallo 0...65536\n"
" --channel-map=MAPPA_CANALI Imposta la mappa di canali da usare\n"
@@ -2187,13 +2413,26 @@ msgstr "La mappa dei canali non corrisponde al file.\n"
msgid "Using sample spec '%s'\n"
msgstr "In uso la specifica di campionamento \"%s\"\n"
-#: ../src/pulsecore/lock-autospawn.c:126
-#: ../src/pulsecore/lock-autospawn.c:207
+#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Impossibile accedere al lock di autospawn."
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "Lo scheduling invocato come root SUID e real-time o high-priority è stato "
+#~ "richiesto nella configurazione. Purtroppo mancano i privilegi necessari:\n"
+#~ "Non si è parte del gruppo '"
+
+# FIXME missing expects???
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--log-time richiede un argomento booleano"
+
#~ msgid "Default sink name (%s) does not exist in name register."
#~ msgstr "Il nome del sink predefinito (%s) non esiste nel registro dei nomi."
+
#~ msgid "pa_stream_drop() failed: %s\n"
#~ msgstr "pa_stream_drop() non riuscita: %s\n"
-
diff --git a/po/pl.po b/po/pl.po
index eb629d2..1f3c7a5 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-02-20 18:42+0100\n"
"Last-Translator: Piotr DrÄ
g <piotrdrag at gmail.com>\n"
"Language-Team: Polish <pl at li.org>\n"
@@ -13,66 +13,80 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr "Analogowe mono"
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr "Analogowe stereo"
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr "Cyfrowe stereo (IEC958)"
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr "Cyfrowe stereo (HDMI)"
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr "Analogowe surround 4.0"
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr "Cyfrowe surround 4.0 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr "Analogowe surround 4.1"
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr "Analogowe surround 5.0"
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr "Analogowe surround 5.1"
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr "Cyfrowe surround 5.1 (IEC958/AC3)"
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr "Analogowe surround 7.1"
-#: ../src/modules/alsa/alsa-util.c:1577
-#, c-format
+#: ../src/modules/alsa/alsa-util.c:1582
+#, fuzzy, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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_update() zwróciÅo wyjÄ
tkowo dużÄ
wartoÅÄ: %lu bajty (%lu ms). "
"Prawdopodobnie jest to bÅÄ
d sterownika ALSA. ProszÄ zgÅosiÄ ten problem "
"programistom ALSA."
-#: ../src/modules/alsa/alsa-util.c:1609
-#, c-format
+#: ../src/modules/alsa/alsa-util.c:1622
+#, fuzzy, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+"snd_pcm_avail_update() zwróciÅo wyjÄ
tkowo dużÄ
wartoÅÄ: %lu bajty (%lu ms). "
+"Prawdopodobnie jest to bÅÄ
d sterownika ALSA. ProszÄ zgÅosiÄ ten problem "
+"programistom ALSA."
+
+#: ../src/modules/alsa/alsa-util.c:1668
+#, fuzzy, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%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() zwróciÅo wyjÄ
tkowo dużÄ
wartoÅÄ: %lu bajty (%lu ms). "
@@ -212,91 +226,93 @@ msgstr "Tryb systemowy nie jest obsÅugiwany na tej platformie."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "Analiza wiersza poleceÅ nie powiodÅa siÄ."
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie o wysokim priorytecie."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie w czasie rzeczywistym."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKit nadaÅ uprawnienie \"acquire-high-priority\"."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKit odmówiŠnadania uprawnienia \"acquire-high-priority\"."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKit nadaÅ uprawnienie \"acquire-real-time\"."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKit odmówiŠnadania uprawnienia \"acquire-real-time\"."
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"WywoÅane SUID roota i szeregowanie w czasie rzeczywistym i/lub o wysokim "
-"priorytecie zostaÅo zażÄ
dane w konfiguracji. Mimo to brak niezbÄdnych "
-"uprawnieÅ:\n"
-"Nie jesteÅmy w grupie \""
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie o wysokim priorytecie jest wÅÄ
czone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "PomyÅlnie zwiÄkszono RLIMIT_RTPRIO"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Oddawanie CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"Szeregowanie w czasie rzeczywistym jest wÅÄ
czone w konfiguracji, ale nie "
"jest zezwolone przez politykÄ."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "Demon nie jest uruchomiony"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Demon jest uruchomiony jako PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Zniszczenie demona nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -304,146 +320,146 @@ msgstr ""
"Ten program nie powinien byÄ uruchomiany jako root (chyba, że podano --"
"system)"
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
msgid "Root privileges required."
msgstr "Wymagane sÄ
uprawnienia roota."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start nie jest obsÅugiwane przy uruchamianiu systemowym."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
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:684
+#: ../src/daemon/main.c:688
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:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Uruchamianie w trybie systemowym, wymuszanie wyÅÄ
czenia trybu SHM!"
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
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:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "Uzyskanie standardowego wejÅcia/wyjÅcia nie powiodÅo siÄ"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "potok nie powiódÅ siÄ: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "fork() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "read() nie powiodÅo siÄ: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Uruchomienie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "PomyÅlnie uruchomiono demona."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "To jest PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Komputer kompilacji: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "CFLAGS kompilacji: %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "Uruchamianie na komputerze: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr "Znaleziono %u procesorów."
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "Rozmiar strony to %lu bajtów"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Skompilowano z obsÅugÄ
Valgrind: tak"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Skompilowano z obsÅugÄ
Valgrind: nie"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Uruchamianie w trybie Valgrind: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Budowanie optymalizowane: tak"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Budowanie optymalizowane: nie"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Uzyskanie identyfikatora komputera nie powiodÅo siÄ"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "Identyfikator komputera to %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "Używanie folderu wykonywania %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "Używanie folderu stanu %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "Uruchamianie w trybie systemowym: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Åwieże zegary o wysokiej rozdzielczoÅci! Smacznego!"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -451,27 +467,27 @@ msgstr ""
"KoleÅ, twoje jÄ
dro Åmierdzi! Szef kuchni poleca dzisiaj Linuksa w wÅÄ
czonymi "
"zegarami o wysokiej rozdzielczoÅci!"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new() nie powiodÅo siÄ."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Zainicjowanie demona nie powiodÅo siÄ."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "Uruchamianie demona bez żadnych wczytanych moduÅów, odmawianie pracy."
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "ZakoÅczono uruchamianie demona."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "Zainicjowano wyÅÄ
czenie demona."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Demon zostaÅ zniszczony."
@@ -654,7 +670,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading oczekuje parametru zmiennej logicznej"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit zmienna logiczna"
#: ../src/daemon/cmdline.c:309
@@ -668,11 +685,13 @@ msgstr ""
"\"auto\"."
#: ../src/daemon/cmdline.c:333
-msgid "--log-time boolean argument"
-msgstr "--log-time parametr zmiennej logicznej"
+#, fuzzy
+msgid "--log-time expects boolean argument"
+msgstr "-realtime oczekuje parametru zmiennej logicznej"
#: ../src/daemon/cmdline.c:340
-msgid "--log-meta boolean argument"
+#, fuzzy
+msgid "--log-meta expects boolean argument"
msgstr "--log-meta parametr zmiennej logicznej"
#: ../src/daemon/cmdline.c:359
@@ -732,67 +751,78 @@ msgstr "Wczytanie jednorazowe: %s\n"
msgid "Path: %s\n"
msgstr "Åcieżka: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] NieprawidÅowy dziennik docelowy \"%s\"."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom dziennika \"%s\"."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] NieprawidÅowa metoda resamplingu \"%s\"."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] NieprawidÅowy rlimit \"%s\"."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit nie jest obsÅugiwany na tej platformie."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] NieprawidÅowy format próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] NieprawidÅowa czÄstotliwoÅÄ próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] NieprawidÅowe kanaÅy próbki \"%s\"."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] NieprawidÅowe kanaÅy próbki \"%s\"."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] NieprawidÅowa liczba fragmentów \"%s\"."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] NieprawidÅowy rozmiar fragmentu \"%s\"."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] NieprawidÅowy poziom nice \"%s\"."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Otwarcie pliku konfiguracji nie powiodÅo siÄ: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Odczytano z pliku konfiguracji: %s ###\n"
@@ -805,6 +835,35 @@ msgstr "Porzucanie uprawnieÅ roota."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "PomyÅlnie ograniczono możliwoÅci do CAP_SYS_NICE."
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Zniszczenie demona PulseAudio nie powiodÅo siÄ."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+"JesteÅmy w grupie \"%s\", co umożliwia szeregowanie o wysokim priorytecie."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1292,7 +1351,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() nie powiodÅo siÄ: %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "PoÅÄ
czenie nie powiodÅo siÄ: %s\n"
@@ -1517,7 +1576,7 @@ msgid "Too many arguments.\n"
msgstr "Za dużo parametrów.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() nie powiodÅo siÄ.\n"
@@ -1528,12 +1587,12 @@ msgid "io_new() failed.\n"
msgstr "io_new() nie powiodÅo siÄ.\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() nie powiodÅo siÄ.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1545,7 +1604,7 @@ msgid "time_new() failed.\n"
msgstr "time_new() nie powiodÅo siÄ.\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() nie powiodÅo siÄ.\n"
@@ -1576,7 +1635,7 @@ msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
"OSTRZEÅ»ENIE: serwer dźwiÄku nie jest lokalny, nie zostanie wstrzymany.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1643,14 +1702,15 @@ msgstr "Rozmiar pamiÄci podrÄcznej próbek: %s\n"
msgid "Failed to get server information: %s\n"
msgstr "Uzyskanie informacji o serwerze nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1664,12 +1724,12 @@ msgstr ""
"DomyÅlne źródÅo: %s\n"
"Ciasteczko: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Uzyskanie informacji o odpÅywie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1708,12 +1768,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Uzyskanie informacji o źródle nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1752,20 +1812,20 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "nie dotyczy"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Uzyskanie informacji o module nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1782,12 +1842,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Uzyskanie informacji o kliencie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1802,12 +1862,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, c-format
msgid "Failed to get card information: %s\n"
msgstr "Uzyskanie informacji o karcie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1824,22 +1884,22 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr "\tProfile:\n"
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, c-format
msgid "\tActive Profile: %s\n"
msgstr "\tAktywny profil: %s\n"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Uzyskanie informacji o wejÅciu odpÅywu nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1876,12 +1936,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Uzyskanie informacji o wyjÅciu źródÅa nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1910,12 +1970,12 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Uzyskanie informacji o przykÅadzie nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1946,22 +2006,22 @@ msgstr ""
"\tWÅaÅciwoÅci:\n"
"\t\t%s\n"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Niepowodzenie: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "UsuniÄcie próbki nie powiodÅo siÄ: %s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Przedwczesny koniec pliku\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -2006,7 +2066,7 @@ msgstr ""
" -s, --server=SERWER Nazwa serwera do poÅÄ
czenia siÄ\n"
" -n, --client-name=NAZWA Jak nazwaÄ tego klienta na serwerze\n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -2017,47 +2077,47 @@ msgstr ""
"Skompilowane za pomocÄ
libpulse %s\n"
"Skonsolidowane za pomocÄ
libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "ProszÄ podaÄ plik próbki do wczytania\n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Otwarcie pliku dźwiÄkowego nie powiodÅo siÄ.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Należy podaÄ nazwÄ próbki do odtworzenia\n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Należy podaÄ nazwÄ próbki do usuniÄcia\n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr "Należy podaÄ indeks odpÅywu wejÅcia i odpÅyw\n"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "Należy podaÄ indeks źródÅa wyjÅcia i źródÅo\n"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Należy podaÄ nazwÄ moduÅu i parametry.\n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Należy podaÄ indeks moduÅu\n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
@@ -2065,7 +2125,7 @@ msgid ""
msgstr ""
"Nie można podaÄ wiÄcej niż jednego odpÅywu. Należy podaÄ wartoÅÄ logicznÄ
.\n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
@@ -2073,12 +2133,12 @@ msgid ""
msgstr ""
"Nie można podaÄ wiÄcej niż jednego źródÅa. Należy podaÄ wartoÅÄ logicznÄ
.\n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr "Należy podaÄ nazwÄ karty/indeks i nazwÄ profilu\n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "Nie podano prawidÅowego polecenia.\n"
@@ -2281,3 +2341,17 @@ msgstr "Używanie przykÅadowej specyfikacji \"%s\"\n"
#: ../src/pulsecore/lock-autospawn.c:126 ../src/pulsecore/lock-autospawn.c:207
msgid "Cannot access autospawn lock."
msgstr "Nie można uzyskaÄ dostÄpu do blokady automatycznego wznawiania."
+
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "WywoÅane SUID roota i szeregowanie w czasie rzeczywistym i/lub o wysokim "
+#~ "priorytecie zostaÅo zażÄ
dane w konfiguracji. Mimo to brak niezbÄdnych "
+#~ "uprawnieÅ:\n"
+#~ "Nie jesteÅmy w grupie \""
+
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--log-time parametr zmiennej logicznej"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 2e75cc4..c6d4c11 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2008-11-21 01:21-0300\n"
"Last-Translator: Henrique (LonelySpooky) Junior <lspooky at fedoraproject.org>\n"
"Language-Team: Brazilian-Portuguese <fedora-trans-pt_br at redhat.com>\n"
@@ -18,63 +18,74 @@ msgstr ""
"X-Poedit-Language: Brazilian Portuguese\n"
"X-Poedit-Country: Brazil\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -213,90 +224,91 @@ msgstr "O modo ampliado do sistema não tem suporte nessa plataforma."
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) falhou: %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "Falha em interpretar a linha de comando."
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "Estamos no grupo '%s', permitindo escalonamento em tempo real."
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégio de alta prioridade."
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de alta prioridade."
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "O PolicyKit assegura-nos a aquisição de privilégios de tempo-real."
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "O PolicyKit recusa a aquisição de privilégios de tempo real."
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"A chamada de SUID root e tempo real/alta prioridade no escalonamento foi "
-"requisitada pela configuração. Todavia, falta-nos os privilégios "
-"necessários:\n"
-"Não estamos no grupo'"
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de alta prioridade foi habilitado para esta configuração, "
"mas não é permitida pela polÃtica."
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "RLIMIT_RTPRIO aumentado com sucesso"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO falhou: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "Abandonando CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
"O escalonamento de tempo real foi habilitado pela configuração, mas não é "
"permitido pela polÃtica."
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "O daemon não está em execução"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "Daemon executando como PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "Falha em encerrar o daemon: %s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -304,144 +316,144 @@ msgstr ""
"Este programa não é para ser executado como root (a não ser que --system "
"seja especificado)."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "Privilégios de rot são requeridos."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start não tem suporte para instâncias de sistemas."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
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:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
"Executando no modo system, mas --disallow-module-loading não foi configurado!"
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "Executando no modo system, desabilitando forçadamente o modo SHM!"
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
"Executando no modo system, desabilitando forçadamente o exit idle time!"
-#: ../src/daemon/main.c:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "Falha em adquirir o stdio."
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "O pipe falhou: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "O fork() falhou: %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "A operação read() falhou: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "Falha na partida do daemon."
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "Os daemons foram iniciados com sucesso."
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Este é o PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "Host de compilação: %s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "Compilação CFLAGS: %s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "Executando no host: %s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "O tamanho da página é %lu bytes"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "Compilado com suporte do Valgrind: sim"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "Compilado com suporte do Valgrind: não"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "Executando em modo valgrind: %s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "Build otimizado: sim"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "Build otimizado: não"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "Falha em obter o ID da máquina"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "A ID da máquina é %s."
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "Usando o diretório de runtime %s."
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "Usando o diretório de estado %s."
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "Executando em modo do sistema: %s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() falhou."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "Timers de alta resolução frequinhos disponÃveis! Bon appetit!"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
@@ -449,28 +461,28 @@ msgstr ""
"Cara, teu kernel fede! A recomendação do chef hoje é Linux com timers de "
"alta resolução habilitados!"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new() falhou."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "Falha em iniciar o daemon."
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
"O Daemon iniciou sem qualquer módulo carregado, recusando-se a trabalhar."
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "A partida dos Daemon está completa."
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "O encerramento do Daemon foi iniciado."
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "Daemon terminado."
@@ -651,7 +663,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading espera um argumento booleano"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit argumento booleano"
#: ../src/daemon/cmdline.c:309
@@ -664,12 +677,12 @@ msgstr "Log target inválido: use 'syslog', 'stderr' ou 'auto'."
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit argumento booleano"
+msgid "--log-time expects boolean argument"
+msgstr "--realtime espera um argumento booleano"
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit argumento booleano"
#: ../src/daemon/cmdline.c:359
@@ -729,67 +742,78 @@ msgstr "Carrega uma vez: %s\n"
msgid "Path: %s\n"
msgstr "Caminho: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] Alvo do log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] NÃvel de log inválido '%s'."
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] Método de reamostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] rlimit inválido '%s'."
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] rlimit não tem suporte nessa plataforma."
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] Formato de amostragem inválido '%s'."
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] Taxa de amostragem inválida '%s'."
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] Canais de amostragem inválidos'%s'."
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] Números de fragmentos inválidos '%s'."
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] Tamanho de fragmentos inválido '%s'."
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] Número de nice inválido'%s'."
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Falha em abrir o arquivo de configuração: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### Lido do arquivo de configuração: %s ###\n"
@@ -803,6 +827,34 @@ msgstr "Descartando os privilégios de root."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "As capacidades foram limitadas com sucesso para CAP_SYS_NICE."
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "Falha em cancelar o daemon do PulseAudio."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "Estamos no grupo '%s', permitindo escalonamento de alta prioridade."
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1290,7 +1342,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() falhou: %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Falha na conexão: %s\n"
@@ -1512,7 +1564,7 @@ msgid "Too many arguments.\n"
msgstr "Argumentos em excesso.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() falhou.\n"
@@ -1523,12 +1575,12 @@ msgid "io_new() failed.\n"
msgstr "io_new() falhou.\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() falhou.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1540,7 +1592,7 @@ msgid "time_new() failed.\n"
msgstr "time_new() falhou.\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() falhou.\n"
@@ -1572,7 +1624,7 @@ msgstr ""
"AVISO: O servidor de som não é local, Sound server is not local, não está em "
"suspenso.\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1637,14 +1689,15 @@ msgstr "Tamanho do cache para amostragem: %s\n"
msgid "Failed to get server information: %s\n"
msgstr "Falha em obter a informação do servidor: %s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1658,12 +1711,12 @@ msgstr ""
"Fonte padrão %s\n"
"Cookie: %08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "Falha em obter a informação do destino: %s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1697,12 +1750,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "Falha em obter a informação da fonte: %s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1736,20 +1789,20 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Falha em obter a informação do módulo: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1765,12 +1818,12 @@ msgstr ""
"Contador de uso: %s\n"
"Auto descarregar: %s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Falhou ao obter a informação do cliente: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1785,12 +1838,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Falha em obter a informação do autoload: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1806,22 +1859,22 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "O pipe falhou: %s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "Falha na obtenção da informação de entrada do destino: %s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1855,12 +1908,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "Falha em obter informações sobre a saÃda da fonte: %s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1889,12 +1942,12 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "Falha em obter informações sobre a amostragem: %s\n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -1923,22 +1976,22 @@ msgstr ""
"Propriedades:\n"
"%s"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Falha: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "Falha em carregar a amostra: %s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "Fim prematuro do arquivo\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -1983,7 +2036,7 @@ msgstr ""
" -n, --client-name=NAME Como chamar este cliente no "
"servidor \n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1994,48 +2047,48 @@ msgstr ""
"Compilado com libpulse %s\n"
"Linkado com libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "Por favor, especifique o arquivo de amostra a ser carregado\n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Falha em abrir o arquivo de som.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "Você deve especificar um nome da amostra para ser executada\n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "Você deve especificar um nome da amostra para ser removida\n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "Você tem que especificar um Ãndice de saÃda da fonte e uma fonte\n"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "Você deve especificar um nome do módulo e seus argumentos\n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "Você deve especificar um Ãndice de um módulo\n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, fuzzy, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
@@ -2044,7 +2097,7 @@ msgstr ""
"Você não pode especificar mais de um destino. Pelo menos um valor booleano "
"deve ser especificado.\n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, fuzzy, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
@@ -2053,13 +2106,13 @@ msgstr ""
"Você não pode especificar mais de uma fonte. Pelo menos um valor booleano "
"deve ser especificado.\n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, fuzzy, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
"Você tem que especificar a entrada para o destino (sink) e um destino(sink)\n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "Nenhum comando válido especificado.\n"
@@ -2264,6 +2317,22 @@ msgstr "Usando a especificação da amostragem '%s'\n"
msgid "Cannot access autospawn lock."
msgstr "Não foi possÃvel acessar a trava de autogeração."
+#, fuzzy
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "A chamada de SUID root e tempo real/alta prioridade no escalonamento foi "
+#~ "requisitada pela configuração. Todavia, falta-nos os privilégios "
+#~ "necessários:\n"
+#~ "Não estamos no grupo'"
+
+#, 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."
diff --git a/po/sv.po b/po/sv.po
index ce3fd73..2e70d8c 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pulseaudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2008-09-05 18:24+0100\n"
"Last-Translator: Daniel Nylander <po at danielnylander.se>\n"
"Language-Team: Swedish <tp-sv at listor.tp-sv.se>\n"
@@ -15,63 +15,74 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
+
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -209,81 +220,87 @@ msgstr ""
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) misslyckades: %s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr ""
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr ""
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr ""
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr ""
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr ""
-#: ../src/daemon/main.c:508
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr ""
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO misslyckades: %s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr ""
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr ""
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr ""
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr ""
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr ""
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
@@ -291,168 +308,168 @@ msgstr ""
"Detta program är inte tänkt att köras som root (såvida inte --system har "
"angivits)."
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "Root-behörighet krävs."
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "--start stöds inte för systeminstanser."
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr ""
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr ""
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr ""
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr ""
-#: ../src/daemon/main.c:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr ""
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "pipe misslyckades: %s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "fork() misslyckades: %s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "read() misslyckades: %s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr ""
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr ""
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "Detta är PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr ""
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr ""
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr ""
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr ""
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr ""
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr ""
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr ""
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr ""
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr ""
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr ""
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr ""
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr ""
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr ""
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr ""
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create() misslyckades."
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr ""
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr ""
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new() misslyckades."
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr ""
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr ""
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr ""
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr ""
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr ""
@@ -557,7 +574,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading förväntar sig ett booleskt argument"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit booleskt argument"
#: ../src/daemon/cmdline.c:309
@@ -570,12 +588,12 @@ msgstr ""
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit booleskt argument"
+msgid "--log-time expects boolean argument"
+msgstr "--realtime förväntar sig ett booleskt argument"
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit booleskt argument"
#: ../src/daemon/cmdline.c:359
@@ -635,67 +653,78 @@ msgstr ""
msgid "Path: %s\n"
msgstr "Sökväg: %s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr ""
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr ""
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "Misslyckades med att öppna konfigurationsfil: %s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr ""
@@ -709,6 +738,32 @@ msgstr "Släpper root-behörighet."
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr ""
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "Mono"
@@ -1197,7 +1252,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_record() misslyckades: %s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "Anslutningsfel: %s\n"
@@ -1372,7 +1427,7 @@ msgid "Too many arguments.\n"
msgstr "För många argument.\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new() misslyckades.\n"
@@ -1383,12 +1438,12 @@ msgid "io_new() failed.\n"
msgstr "io_new() misslyckades.\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new() misslyckades.\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, fuzzy, c-format
msgid "pa_context_connect() failed: %s"
@@ -1400,7 +1455,7 @@ msgid "time_new() failed.\n"
msgstr "time_new() misslyckades.\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run() misslyckades.\n"
@@ -1430,7 +1485,7 @@ msgstr ""
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr ""
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1489,7 +1544,7 @@ msgstr ""
msgid "Failed to get server information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:136
+#: ../src/utils/pactl.c:137
#, c-format
msgid ""
"User name: %s\n"
@@ -1497,17 +1552,18 @@ msgid ""
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
msgstr ""
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, c-format
msgid ""
"Sink #%u\n"
@@ -1529,12 +1585,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, c-format
msgid ""
"Source #%u\n"
@@ -1556,20 +1612,20 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr ""
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, c-format
msgid ""
"Module #%u\n"
@@ -1580,12 +1636,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "Misslyckades med att få klientinformation: %s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, c-format
msgid ""
"Client #%u\n"
@@ -1595,12 +1651,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "Misslyckades med att få modulinformation: %s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, c-format
msgid ""
"Card #%u\n"
@@ -1611,22 +1667,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "pipe misslyckades: %s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, c-format
msgid ""
"Sink Input #%u\n"
@@ -1647,12 +1703,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, c-format
msgid ""
"Source Output #%u\n"
@@ -1669,12 +1725,12 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, c-format
msgid ""
"Sample #%u\n"
@@ -1692,22 +1748,22 @@ msgid ""
"\t\t%s\n"
msgstr ""
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "Fel: %s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr ""
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr ""
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, c-format
msgid ""
"%s [options] stat\n"
@@ -1733,7 +1789,7 @@ msgid ""
"server\n"
msgstr ""
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1744,66 +1800,66 @@ msgstr ""
"Kompilerad med libpulse %s\n"
"Länkad med libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr ""
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "Misslyckades med att öppna ljudfil.\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr ""
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr ""
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr ""
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr ""
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr ""
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr ""
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr ""
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr ""
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr ""
@@ -1985,6 +2041,10 @@ msgstr ""
msgid "Cannot access autospawn lock."
msgstr ""
+#, fuzzy
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--disallow-exit booleskt argument"
+
#~ msgid "pa_stream_drop() failed: %s\n"
#~ msgstr "pa_stream_drop() misslyckades: %s\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index eb0fca2..96fdeb7 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PulseAudio\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-20 03:24+0100\n"
+"POT-Creation-Date: 2009-02-24 11:33+0100\n"
"PO-Revision-Date: 2009-01-24 12:47+0800\n"
"Last-Translator: çæ³½å½ <zak.zeguo.wang at gmail.com>\n"
"Language-Team: Chinese/Simplified\n"
@@ -17,63 +17,74 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../src/modules/alsa/alsa-util.c:525
+#: ../src/modules/alsa/alsa-util.c:526
msgid "Analog Mono"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:531
+#: ../src/modules/alsa/alsa-util.c:532
msgid "Analog Stereo"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:537
+#: ../src/modules/alsa/alsa-util.c:538
msgid "Digital Stereo (IEC958)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:543
+#: ../src/modules/alsa/alsa-util.c:544
msgid "Digital Stereo (HDMI)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:550
+#: ../src/modules/alsa/alsa-util.c:551
msgid "Analog Surround 4.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:557
+#: ../src/modules/alsa/alsa-util.c:558
msgid "Digital Surround 4.0 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:565
+#: ../src/modules/alsa/alsa-util.c:566
msgid "Analog Surround 4.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:573
+#: ../src/modules/alsa/alsa-util.c:574
msgid "Analog Surround 5.0"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:581
+#: ../src/modules/alsa/alsa-util.c:582
msgid "Analog Surround 5.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:589
+#: ../src/modules/alsa/alsa-util.c:590
msgid "Digital Surround 5.1 (IEC958/AC3)"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:598
+#: ../src/modules/alsa/alsa-util.c:599
msgid "Analog Surround 7.1"
msgstr ""
-#: ../src/modules/alsa/alsa-util.c:1577
+#: ../src/modules/alsa/alsa-util.c:1582
#, c-format
msgid ""
-"snd_pcm_avail_update() returned a value that is exceptionally large: %lu "
-"bytes (%lu ms). Most likely this is an ALSA driver bug. 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 ""
-#: ../src/modules/alsa/alsa-util.c:1609
+#: ../src/modules/alsa/alsa-util.c:1622
+#, c-format
+msgid ""
+"snd_pcm_delay() returned a value that is exceptionally large: %li bytes (%s%"
+"lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
+"to the ALSA developers."
+msgstr ""
+
+#: ../src/modules/alsa/alsa-util.c:1668
#, c-format
msgid ""
"snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes "
-"(%lu ms). Most likely this is an ALSA driver bug. Please report this issue "
+"(%lu ms).\n"
+"Most likely this is a bug in the ALSA driver '%s'. Please report this issue "
"to the ALSA developers."
msgstr ""
@@ -212,251 +223,254 @@ msgstr "æ¤å¹³å°ä¸æ¯æsystem-wide模å¼ã"
msgid "setrlimit(%s, (%u, %u)) failed: %s"
msgstr "setrlimit(%s, (%u, %u)) 失败ï¼%s"
-#: ../src/daemon/main.c:431
+#: ../src/daemon/main.c:432
msgid "Failed to parse command line."
msgstr "åæå½ä»¤è¡å¤±è´¥ã"
-#: ../src/daemon/main.c:453
+#: ../src/daemon/main.c:456
#, c-format
msgid "We're in the group '%s', allowing high-priority scheduling."
msgstr "æ们å¨'%s'ç»ä¸ï¼å
许é«ä¼å
级è°åº¦ã"
-#: ../src/daemon/main.c:460
+#: ../src/daemon/main.c:463
#, c-format
msgid "We're in the group '%s', allowing real-time scheduling."
msgstr "æ们å¨'%s'ç»ä¸ï¼å
许å®æ¶è°åº¦ã"
-#: ../src/daemon/main.c:468
+#: ../src/daemon/main.c:471
msgid "PolicyKit grants us acquire-high-priority privilege."
msgstr "PolicyKitæäºæ们âè·åé«ä¼å
级âæéã"
-#: ../src/daemon/main.c:471
+#: ../src/daemon/main.c:474
msgid "PolicyKit refuses acquire-high-priority privilege."
msgstr "PolicyKitæç»âè·åé«ä¼å
级âæéã"
-#: ../src/daemon/main.c:476
+#: ../src/daemon/main.c:479
msgid "PolicyKit grants us acquire-real-time privilege."
msgstr "PolicyKitæäºæ们âè·åå®æ¶âæéã"
-#: ../src/daemon/main.c:479
+#: ../src/daemon/main.c:482
msgid "PolicyKit refuses acquire-real-time privilege."
msgstr "PolicyKitæç»æ们âè·åå®æ¶âæéã"
-#: ../src/daemon/main.c:508
-#, fuzzy
+#: ../src/daemon/main.c:511
+#, c-format
msgid ""
"Called SUID root and real-time and/or high-priority scheduling was requested "
"in the configuration. However, we lack the necessary privileges:\n"
-"We are not in group '"
+"We are not in group '%s', PolicyKit refuse to grant us the requested "
+"privileges and we have no increase RLIMIT_NICE/RLIMIT_RTPRIO resource "
+"limits.\n"
+"For enabling real-time/high-priority scheduling please acquire the "
+"appropriate PolicyKit privileges, or become a member of '%s', or increase "
+"the RLIMIT_NICE/RLIMIT_RTPRIO resource limits for this user."
msgstr ""
-"æ¤é
ç½®éè¦è°ç¨SUID rootåå®æ¶ï¼é«ä¼å
级è°åº¦ãä½æ¯æ们没ææéçæéï¼\n"
-"æ们ä¸å±è¯¥ç»"
-#: ../src/daemon/main.c:532
+#: ../src/daemon/main.c:536
msgid ""
"High-priority scheduling enabled in configuration but not allowed by policy."
msgstr "é
ç½®ä¸å·²å¯ç¨é«ä¼å
级è°åº¦ï¼ä½çç¥æªå
许ã"
-#: ../src/daemon/main.c:561
+#: ../src/daemon/main.c:565
msgid "Successfully increased RLIMIT_RTPRIO"
msgstr "æé«RLIMIT_RTPRIOæåã"
-#: ../src/daemon/main.c:564
+#: ../src/daemon/main.c:568
#, c-format
msgid "RLIMIT_RTPRIO failed: %s"
msgstr "RLIMIT_RTPRIO失败ï¼%s"
-#: ../src/daemon/main.c:571
+#: ../src/daemon/main.c:575
msgid "Giving up CAP_NICE"
msgstr "æ£å¨æ¾å¼CAP_NICE"
-#: ../src/daemon/main.c:578
+#: ../src/daemon/main.c:582
msgid ""
"Real-time scheduling enabled in configuration but not allowed by policy."
msgstr "é
ç½®ä¸å·²å¯ç¨å®æ¶è°åº¦ï¼ä½çç¥æªå
许ã"
-#: ../src/daemon/main.c:639
+#: ../src/daemon/main.c:643
msgid "Daemon not running"
msgstr "åå°ç¨åºæ²¡æè¿è¡"
-#: ../src/daemon/main.c:641
+#: ../src/daemon/main.c:645
#, c-format
msgid "Daemon running as PID %u"
msgstr "åå°ç¨åºæ£å¨è¿è¡ï¼PID %u"
-#: ../src/daemon/main.c:651
+#: ../src/daemon/main.c:655
#, c-format
msgid "Failed to kill daemon: %s"
msgstr "ææ»åå°ç¨åºå¤±è´¥ï¼%s"
-#: ../src/daemon/main.c:669
+#: ../src/daemon/main.c:673
msgid ""
"This program is not intended to be run as root (unless --system is "
"specified)."
msgstr "ä¸åºä»¥root身份è¿è¡æ¬ç¨åºï¼é¤éæå® --systemï¼ã"
-#: ../src/daemon/main.c:671
+#: ../src/daemon/main.c:675
#, fuzzy
msgid "Root privileges required."
msgstr "éè¦rootæéã"
-#: ../src/daemon/main.c:676
+#: ../src/daemon/main.c:680
msgid "--start not supported for system instances."
msgstr "ç³»ç»å®ä¾ä¸æ¯æ --startã"
-#: ../src/daemon/main.c:681
+#: ../src/daemon/main.c:685
msgid "Running in system mode, but --disallow-exit not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-exit æªè®¾å®ï¼"
-#: ../src/daemon/main.c:684
+#: ../src/daemon/main.c:688
msgid "Running in system mode, but --disallow-module-loading not set!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼ä½æ¯ --disallow-module-loading æªè®¾å®ï¼"
-#: ../src/daemon/main.c:687
+#: ../src/daemon/main.c:691
msgid "Running in system mode, forcibly disabling SHM mode!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨SHM模å¼ï¼"
-#: ../src/daemon/main.c:692
+#: ../src/daemon/main.c:696
msgid "Running in system mode, forcibly disabling exit idle time!"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼å¼ºå¶ç¦ç¨éåºç©ºé²æ¶é´ï¼"
-#: ../src/daemon/main.c:719
+#: ../src/daemon/main.c:723
msgid "Failed to acquire stdio."
msgstr "è·åstdio失败ã"
-#: ../src/daemon/main.c:725
+#: ../src/daemon/main.c:729
#, c-format
msgid "pipe failed: %s"
msgstr "管é失败ï¼%s"
-#: ../src/daemon/main.c:730
+#: ../src/daemon/main.c:734
#, c-format
msgid "fork() failed: %s"
msgstr "fork()失败ï¼%s"
-#: ../src/daemon/main.c:744
+#: ../src/daemon/main.c:748
#, c-format
msgid "read() failed: %s"
msgstr "read()失败ï¼%s"
-#: ../src/daemon/main.c:750
+#: ../src/daemon/main.c:754
msgid "Daemon startup failed."
msgstr "åå°ç¨åºå¯å¨å¤±è´¥ã"
-#: ../src/daemon/main.c:752
+#: ../src/daemon/main.c:756
msgid "Daemon startup successful."
msgstr "åå°ç¨åºå¯å¨æåã"
-#: ../src/daemon/main.c:822
+#: ../src/daemon/main.c:826
#, c-format
msgid "This is PulseAudio %s"
msgstr "è¿æ¯ PulseAudio %s"
-#: ../src/daemon/main.c:823
+#: ../src/daemon/main.c:827
#, c-format
msgid "Compilation host: %s"
msgstr "ç¼è¯ä¸»æºï¼%s"
-#: ../src/daemon/main.c:824
+#: ../src/daemon/main.c:828
#, c-format
msgid "Compilation CFLAGS: %s"
msgstr "ç¼è¯CFLAGSï¼%s"
-#: ../src/daemon/main.c:827
+#: ../src/daemon/main.c:831
#, c-format
msgid "Running on host: %s"
msgstr "æ£å¨ä¸»æºä¸è¿è¡ï¼%s"
-#: ../src/daemon/main.c:830
+#: ../src/daemon/main.c:834
#, c-format
msgid "Found %u CPUs."
msgstr ""
-#: ../src/daemon/main.c:832
+#: ../src/daemon/main.c:836
#, c-format
msgid "Page size is %lu bytes"
msgstr "页é¢å¤§å°ä¸º%luåè"
-#: ../src/daemon/main.c:835
+#: ../src/daemon/main.c:839
msgid "Compiled with Valgrind support: yes"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼æ¯"
-#: ../src/daemon/main.c:837
+#: ../src/daemon/main.c:841
msgid "Compiled with Valgrind support: no"
msgstr "ç¼è¯å¯ç¨Valgrindæ¯æï¼å¦"
-#: ../src/daemon/main.c:840
+#: ../src/daemon/main.c:844
#, c-format
msgid "Running in valgrind mode: %s"
msgstr "æ£å¨ä»¥valgrind模å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:843
+#: ../src/daemon/main.c:847
msgid "Optimized build: yes"
msgstr "ä¼åçæï¼æ¯"
-#: ../src/daemon/main.c:845
+#: ../src/daemon/main.c:849
msgid "Optimized build: no"
msgstr "ä¼åçæï¼å¦"
-#: ../src/daemon/main.c:849
+#: ../src/daemon/main.c:853
msgid "Failed to get machine ID"
msgstr "è·åmachine ID失败"
-#: ../src/daemon/main.c:852
+#: ../src/daemon/main.c:856
#, c-format
msgid "Machine ID is %s."
msgstr "machine IDæ¯%sã"
-#: ../src/daemon/main.c:857
+#: ../src/daemon/main.c:861
#, c-format
msgid "Using runtime directory %s."
msgstr "æ£å¨ä½¿ç¨è¿è¡æ¶æ件夹%sã"
-#: ../src/daemon/main.c:862
+#: ../src/daemon/main.c:866
#, c-format
msgid "Using state directory %s."
msgstr "æ£å¨ä½¿ç¨ç¶ææ件夹%sã"
-#: ../src/daemon/main.c:865
+#: ../src/daemon/main.c:869
#, c-format
msgid "Running in system mode: %s"
msgstr "æ£å¨ä»¥ç³»ç»æ¨¡å¼è¿è¡ï¼%s"
-#: ../src/daemon/main.c:880
+#: ../src/daemon/main.c:884
msgid "pa_pid_file_create() failed."
msgstr "pa_pid_file_create()失败ã"
-#: ../src/daemon/main.c:892
+#: ../src/daemon/main.c:896
msgid "Fresh high-resolution timers available! Bon appetit!"
msgstr "æ°é²çé«å辨ç计æ¶å¨å¼é
äºï¼å个饱ï¼"
-#: ../src/daemon/main.c:894
+#: ../src/daemon/main.c:898
msgid ""
"Dude, your kernel stinks! The chef's recommendation today is Linux with high-"
"resolution timers enabled!"
msgstr "èå
ï¼ä½ çå
æ ¸çèï¼ç°å¨æµè¡çæ¯å¯ç¨äºé«å辩ç计åå¨çLinuxï¼"
-#: ../src/daemon/main.c:906
+#: ../src/daemon/main.c:910
msgid "pa_core_new() failed."
msgstr "pa_core_new()失败ã"
-#: ../src/daemon/main.c:967
+#: ../src/daemon/main.c:972
msgid "Failed to initialize daemon."
msgstr "åå°ç¨åºåå§å失败ã"
-#: ../src/daemon/main.c:972
+#: ../src/daemon/main.c:977
msgid "Daemon startup without any loaded modules, refusing to work."
msgstr "åå°ç¨åºå¯å¨æªå 载任ä½æ¨¡åï¼æç»å·¥ä½ã"
-#: ../src/daemon/main.c:985
+#: ../src/daemon/main.c:990
msgid "Daemon startup complete."
msgstr "åå°ç¨åºå¯å¨å®æã"
-#: ../src/daemon/main.c:991
+#: ../src/daemon/main.c:996
msgid "Daemon shutdown initiated."
msgstr "å¼å§å
³éåå°ç¨åºã"
-#: ../src/daemon/main.c:1009
+#: ../src/daemon/main.c:1014
msgid "Daemon terminated."
msgstr "åå°ç¨åºå·²ç»æ¢ã"
@@ -615,7 +629,8 @@ msgid "--disallow-module-loading expects boolean argument"
msgstr "--disallow-module-loading æå¾
å¸å°åæ°"
#: ../src/daemon/cmdline.c:302
-msgid "--disallow-exit boolean argument"
+#, fuzzy
+msgid "--disallow-exit expects boolean argument"
msgstr "--disallow-exit å¸å°åæ°"
#: ../src/daemon/cmdline.c:309
@@ -628,12 +643,12 @@ msgstr "æ æçæ¥å¿ç®æ ï¼ä»syslogï¼stderråautoä¸éåä¸ä¸ª"
#: ../src/daemon/cmdline.c:333
#, fuzzy
-msgid "--log-time boolean argument"
-msgstr "--disallow-exit å¸å°åæ°"
+msgid "--log-time expects boolean argument"
+msgstr "--realtime æå¾
å¸å°åæ°"
#: ../src/daemon/cmdline.c:340
#, fuzzy
-msgid "--log-meta boolean argument"
+msgid "--log-meta expects boolean argument"
msgstr "--disallow-exit å¸å°åæ°"
#: ../src/daemon/cmdline.c:359
@@ -693,67 +708,78 @@ msgstr "å è½½ä¸æ¬¡ï¼%s\n"
msgid "Path: %s\n"
msgstr "è·¯å¾ï¼%s\n"
-#: ../src/daemon/daemon-conf.c:212
+#: ../src/daemon/daemon-conf.c:213
#, c-format
msgid "[%s:%u] Invalid log target '%s'."
msgstr "[%s:%u] æ æçæ¥å¿ç®æ '%s'ã"
-#: ../src/daemon/daemon-conf.c:228
+#: ../src/daemon/daemon-conf.c:229
#, c-format
msgid "[%s:%u] Invalid log level '%s'."
msgstr "[%s:%u] æ æçæ¥å¿çº§å«'%s'ã"
-#: ../src/daemon/daemon-conf.c:244
+#: ../src/daemon/daemon-conf.c:245
#, c-format
msgid "[%s:%u] Invalid resample method '%s'."
msgstr "[%s:%u] æ æçééæ ·æ¹æ³'%s'ã"
-#: ../src/daemon/daemon-conf.c:267
+#: ../src/daemon/daemon-conf.c:268
#, c-format
msgid "[%s:%u] Invalid rlimit '%s'."
msgstr "[%s:%u] æ æçrlimit '%s'ã"
-#: ../src/daemon/daemon-conf.c:274
+#: ../src/daemon/daemon-conf.c:275
#, c-format
msgid "[%s:%u] rlimit not supported on this platform."
msgstr "[%s:%u] æ¤å¹³å°ä¸æ¯ærlimitã"
-#: ../src/daemon/daemon-conf.c:290
+#: ../src/daemon/daemon-conf.c:291
#, c-format
msgid "[%s:%u] Invalid sample format '%s'."
msgstr "[%s:%u] æ æçæ ·åæ ¼å¼'%s'ã"
-#: ../src/daemon/daemon-conf.c:308
+#: ../src/daemon/daemon-conf.c:309
#, c-format
msgid "[%s:%u] Invalid sample rate '%s'."
msgstr "[%s:%u] æ æçæ ·åç'%s'ã"
-#: ../src/daemon/daemon-conf.c:326
+#: ../src/daemon/daemon-conf.c:333
#, c-format
msgid "[%s:%u] Invalid sample channels '%s'."
msgstr "[%s:%u] æ æçæ ·åéé'%s'ã"
-#: ../src/daemon/daemon-conf.c:344
+#: ../src/daemon/daemon-conf.c:351
+#, fuzzy, c-format
+msgid "[%s:%u] Invalid channel map '%s'."
+msgstr "[%s:%u] æ æçæ ·åéé'%s'ã"
+
+#: ../src/daemon/daemon-conf.c:369
#, c-format
msgid "[%s:%u] Invalid number of fragments '%s'."
msgstr "[%s:%u] æ æçå段æ°'%s'ã"
-#: ../src/daemon/daemon-conf.c:362
+#: ../src/daemon/daemon-conf.c:387
#, c-format
msgid "[%s:%u] Invalid fragment size '%s'."
msgstr "[%s:%u] æ æçå段大å°'%s'ã"
-#: ../src/daemon/daemon-conf.c:380
+#: ../src/daemon/daemon-conf.c:405
#, c-format
msgid "[%s:%u] Invalid nice level '%s'."
msgstr "[%s:%u] æ æçnice level '%s'ã"
-#: ../src/daemon/daemon-conf.c:566
+#: ../src/daemon/daemon-conf.c:518
#, c-format
msgid "Failed to open configuration file: %s"
msgstr "æå¼é
ç½®æ件失败ï¼%s"
-#: ../src/daemon/daemon-conf.c:640
+#: ../src/daemon/daemon-conf.c:534
+msgid ""
+"The specified default channel map has a different number of channels than "
+"the specified default number of channels."
+msgstr ""
+
+#: ../src/daemon/daemon-conf.c:612
#, c-format
msgid "### Read from configuration file: %s ###\n"
msgstr "### ä»é
ç½®æ件读åï¼%s ###\n"
@@ -767,6 +793,34 @@ msgstr "æ£å¨åæ¶rootæéã"
msgid "Limited capabilities successfully to CAP_SYS_NICE."
msgstr "æ§è½æåéå¶å°CAP_SYS_NICEã"
+#: ../src/daemon/pulseaudio.desktop.in.h:1
+msgid "PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/pulseaudio.desktop.in.h:2
+msgid "Start the PulseAudio Sound System"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:1
+msgid ""
+"High-priority scheduling (negative Unix nice level) for the PulseAudio daemon"
+msgstr ""
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:2
+#, fuzzy
+msgid "Real-time scheduling for the PulseAudio daemon"
+msgstr "ææ»PulseAudioåå°ç¨åºå¤±è´¥ã"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:3
+#, fuzzy
+msgid ""
+"System policy prevents PulseAudio from acquiring high-priority scheduling."
+msgstr "æ们å¨'%s'ç»ä¸ï¼å
许é«ä¼å
级è°åº¦ã"
+
+#: ../src/daemon/org.pulseaudio.policy.in.h:4
+msgid "System policy prevents PulseAudio from acquiring real-time scheduling."
+msgstr ""
+
#: ../src/pulse/channelmap.c:103 ../src/pulse/channelmap.c:804
msgid "Mono"
msgstr "å声é"
@@ -1254,7 +1308,7 @@ msgid "pa_stream_connect_record() failed: %s\n"
msgstr "pa_stream_connect_playback()失败ï¼%s\n"
#: ../src/utils/pacat.c:321 ../src/utils/pasuspender.c:159
-#: ../src/utils/pactl.c:759 ../src/utils/paplay.c:183
+#: ../src/utils/pactl.c:762 ../src/utils/paplay.c:183
#, c-format
msgid "Connection failure: %s\n"
msgstr "è¿æ¥å¤±è´¥ï¼%s\n"
@@ -1464,7 +1518,7 @@ msgid "Too many arguments.\n"
msgstr "åæ°è¿å¤ã\n"
#: ../src/utils/pacat.c:756 ../src/utils/pasuspender.c:280
-#: ../src/utils/pactl.c:1014 ../src/utils/paplay.c:381
+#: ../src/utils/pactl.c:1017 ../src/utils/paplay.c:381
#, c-format
msgid "pa_mainloop_new() failed.\n"
msgstr "pa_mainloop_new()失败ã\n"
@@ -1475,12 +1529,12 @@ msgid "io_new() failed.\n"
msgstr "io_new()失败ã\n"
#: ../src/utils/pacat.c:783 ../src/utils/pasuspender.c:293
-#: ../src/utils/pactl.c:1028 ../src/utils/paplay.c:396
+#: ../src/utils/pactl.c:1031 ../src/utils/paplay.c:396
#, c-format
msgid "pa_context_new() failed.\n"
msgstr "pa_context_new()失败ã\n"
-#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1034
+#: ../src/utils/pacat.c:791 ../src/utils/pactl.c:1037
#: ../src/utils/paplay.c:404
#, c-format
msgid "pa_context_connect() failed: %s"
@@ -1492,7 +1546,7 @@ msgid "time_new() failed.\n"
msgstr "time_new()失败ã\n"
#: ../src/utils/pacat.c:809 ../src/utils/pasuspender.c:301
-#: ../src/utils/pactl.c:1039 ../src/utils/paplay.c:410
+#: ../src/utils/pactl.c:1042 ../src/utils/paplay.c:410
#, c-format
msgid "pa_mainloop_run() failed.\n"
msgstr "pa_mainloop_run()失败ã\n"
@@ -1522,7 +1576,7 @@ msgstr "æ¢å¤å¤±è´¥ï¼%s\n"
msgid "WARNING: Sound server is not local, not suspending.\n"
msgstr "è¦åï¼éæ¬å°å£°é³æå¡å¨ï¼ä¸ä¼æèµ·ã\n"
-#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:765
+#: ../src/utils/pasuspender.c:176 ../src/utils/pactl.c:768
#: ../src/utils/paplay.c:191
#, c-format
msgid "Got SIGINT, exiting.\n"
@@ -1587,14 +1641,15 @@ msgstr "éæ ·ç¼å大å°ï¼%s\n"
msgid "Failed to get server information: %s\n"
msgstr "è·åæå¡å¨ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:136
-#, c-format
+#: ../src/utils/pactl.c:137
+#, fuzzy, c-format
msgid ""
"User name: %s\n"
"Host Name: %s\n"
"Server Name: %s\n"
"Server Version: %s\n"
"Default Sample Specification: %s\n"
+"Default Channel Map: %s\n"
"Default Sink: %s\n"
"Default Source: %s\n"
"Cookie: %08x\n"
@@ -1608,12 +1663,12 @@ msgstr ""
"é»è®¤é³é¢å
¥å£ï¼%s\n"
"Cookieï¼%08x\n"
-#: ../src/utils/pactl.c:175
+#: ../src/utils/pactl.c:178
#, c-format
msgid "Failed to get sink information: %s\n"
msgstr "è·åé³é¢åºå£ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:191
+#: ../src/utils/pactl.c:194
#, fuzzy, c-format
msgid ""
"Sink #%u\n"
@@ -1647,12 +1702,12 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:255
+#: ../src/utils/pactl.c:258
#, c-format
msgid "Failed to get source information: %s\n"
msgstr "è·åé³é¢å
¥å£ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:271
+#: ../src/utils/pactl.c:274
#, fuzzy, c-format
msgid ""
"Source #%u\n"
@@ -1686,20 +1741,20 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:303 ../src/utils/pactl.c:347 ../src/utils/pactl.c:382
-#: ../src/utils/pactl.c:419 ../src/utils/pactl.c:478 ../src/utils/pactl.c:479
-#: ../src/utils/pactl.c:489 ../src/utils/pactl.c:533 ../src/utils/pactl.c:534
-#: ../src/utils/pactl.c:540 ../src/utils/pactl.c:583 ../src/utils/pactl.c:584
-#: ../src/utils/pactl.c:591
+#: ../src/utils/pactl.c:306 ../src/utils/pactl.c:350 ../src/utils/pactl.c:385
+#: ../src/utils/pactl.c:422 ../src/utils/pactl.c:481 ../src/utils/pactl.c:482
+#: ../src/utils/pactl.c:492 ../src/utils/pactl.c:536 ../src/utils/pactl.c:537
+#: ../src/utils/pactl.c:543 ../src/utils/pactl.c:586 ../src/utils/pactl.c:587
+#: ../src/utils/pactl.c:594
msgid "n/a"
msgstr "n/a"
-#: ../src/utils/pactl.c:321
+#: ../src/utils/pactl.c:324
#, c-format
msgid "Failed to get module information: %s\n"
msgstr "è·å模åä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:339
+#: ../src/utils/pactl.c:342
#, fuzzy, c-format
msgid ""
"Module #%u\n"
@@ -1715,12 +1770,12 @@ msgstr ""
"使ç¨è®¡æ°å¨ï¼%s\n"
"èªå¨å¸è½½ï¼%s\n"
-#: ../src/utils/pactl.c:358
+#: ../src/utils/pactl.c:361
#, c-format
msgid "Failed to get client information: %s\n"
msgstr "è·å客æ·ç«¯ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:376
+#: ../src/utils/pactl.c:379
#, fuzzy, c-format
msgid ""
"Client #%u\n"
@@ -1735,12 +1790,12 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:393
+#: ../src/utils/pactl.c:396
#, fuzzy, c-format
msgid "Failed to get card information: %s\n"
msgstr "è·åèªå¨å 载信æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:411
+#: ../src/utils/pactl.c:414
#, fuzzy, c-format
msgid ""
"Card #%u\n"
@@ -1756,22 +1811,22 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:425
+#: ../src/utils/pactl.c:428
#, c-format
msgid "\tProfiles:\n"
msgstr ""
-#: ../src/utils/pactl.c:431
+#: ../src/utils/pactl.c:434
#, fuzzy, c-format
msgid "\tActive Profile: %s\n"
msgstr "管é失败ï¼%s"
-#: ../src/utils/pactl.c:442
+#: ../src/utils/pactl.c:445
#, c-format
msgid "Failed to get sink input information: %s\n"
msgstr "è·åé³é¢åºå£è¾å
¥ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:461
+#: ../src/utils/pactl.c:464
#, fuzzy, c-format
msgid ""
"Sink Input #%u\n"
@@ -1805,12 +1860,12 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:500
+#: ../src/utils/pactl.c:503
#, c-format
msgid "Failed to get source output information: %s\n"
msgstr "è·åé³é¢å
¥å£è¾åºä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:520
+#: ../src/utils/pactl.c:523
#, fuzzy, c-format
msgid ""
"Source Output #%u\n"
@@ -1839,12 +1894,12 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:551
+#: ../src/utils/pactl.c:554
#, c-format
msgid "Failed to get sample information: %s\n"
msgstr "è·åéæ ·ä¿¡æ¯å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:569
+#: ../src/utils/pactl.c:572
#, fuzzy, c-format
msgid ""
"Sample #%u\n"
@@ -1873,22 +1928,22 @@ msgstr ""
"å±æ§ï¼\n"
"%s"
-#: ../src/utils/pactl.c:599 ../src/utils/pactl.c:609
+#: ../src/utils/pactl.c:602 ../src/utils/pactl.c:612
#, c-format
msgid "Failure: %s\n"
msgstr "失败ï¼%s\n"
-#: ../src/utils/pactl.c:633
+#: ../src/utils/pactl.c:636
#, c-format
msgid "Failed to upload sample: %s\n"
msgstr "ä¸ä¼ éæ ·å¤±è´¥ï¼%s\n"
-#: ../src/utils/pactl.c:650
+#: ../src/utils/pactl.c:653
#, c-format
msgid "Premature end of file\n"
msgstr "æ件è¿æ©ç»æ\n"
-#: ../src/utils/pactl.c:771
+#: ../src/utils/pactl.c:774
#, fuzzy, c-format
msgid ""
"%s [options] stat\n"
@@ -1932,7 +1987,7 @@ msgstr ""
" -s, --server=SERVER è¦è¿æ¥çæå¡å¨å\n"
" -n, --client-name=NAME æ¤å®¢æ·ç«¯å¨æå¡å¨ä¸çå称\n"
-#: ../src/utils/pactl.c:823
+#: ../src/utils/pactl.c:826
#, c-format
msgid ""
"pactl %s\n"
@@ -1943,66 +1998,66 @@ msgstr ""
"Compiled with libpulse %s\n"
"Linked with libpulse %s\n"
-#: ../src/utils/pactl.c:862
+#: ../src/utils/pactl.c:865
#, c-format
msgid "Please specify a sample file to load\n"
msgstr "请æå®è¦å è½½çéæ ·æ件\n"
-#: ../src/utils/pactl.c:884
+#: ../src/utils/pactl.c:887
#, c-format
msgid "Failed to open sound file.\n"
msgstr "æå¼å£°é³æ件失败ã\n"
-#: ../src/utils/pactl.c:896
+#: ../src/utils/pactl.c:899
#, c-format
msgid "You have to specify a sample name to play\n"
msgstr "ä½ å¿
é¡»æå®è¦ææ¾çéæ ·å\n"
-#: ../src/utils/pactl.c:908
+#: ../src/utils/pactl.c:911
#, c-format
msgid "You have to specify a sample name to remove\n"
msgstr "ä½ å¿
é¡»æå®è¦å é¤çéæ ·å\n"
-#: ../src/utils/pactl.c:916
+#: ../src/utils/pactl.c:919
#, c-format
msgid "You have to specify a sink input index and a sink\n"
msgstr "ä½ å¿
é¡»æå®é³é¢åºå£ç´¢å¼åé³é¢åºå£\n"
-#: ../src/utils/pactl.c:925
+#: ../src/utils/pactl.c:928
#, c-format
msgid "You have to specify a source output index and a source\n"
msgstr "ä½ å¿
é¡»æå®é³é¢å
¥å£è¾åºç´¢å¼åé³é¢å
¥å£\n"
-#: ../src/utils/pactl.c:939
+#: ../src/utils/pactl.c:942
#, c-format
msgid "You have to specify a module name and arguments.\n"
msgstr "å¿
é¡»æå®æ¨¡ååååæ°ã\n"
-#: ../src/utils/pactl.c:959
+#: ../src/utils/pactl.c:962
#, c-format
msgid "You have to specify a module index\n"
msgstr "å¿
é¡»æå®æ¨¡åç´¢å¼\n"
-#: ../src/utils/pactl.c:969
+#: ../src/utils/pactl.c:972
#, fuzzy, c-format
msgid ""
"You may not specify more than one sink. You have to specify a boolean "
"value.\n"
msgstr "ä¸å¯æå®å¤ä¸ªé³é¢åºå£ãå¿
é¡»æå®è³å°ä¸ä¸ªå¸å°å¼ã\n"
-#: ../src/utils/pactl.c:982
+#: ../src/utils/pactl.c:985
#, fuzzy, c-format
msgid ""
"You may not specify more than one source. You have to specify a boolean "
"value.\n"
msgstr "ä¸å¯æå®å¤ä¸ªé³é¢å
¥å£ãå¿
é¡»æå®è³å°ä¸ä¸ªå¸å°å¼ã\n"
-#: ../src/utils/pactl.c:994
+#: ../src/utils/pactl.c:997
#, fuzzy, c-format
msgid "You have to specify a card name/index and a profile name\n"
msgstr "ä½ å¿
é¡»æå®é³é¢åºå£ç´¢å¼åé³é¢åºå£\n"
-#: ../src/utils/pactl.c:1009
+#: ../src/utils/pactl.c:1012
#, c-format
msgid "No valid command specified.\n"
msgstr "æªæå®ææçå½ä»¤ã\n"
@@ -2204,6 +2259,20 @@ msgstr "æ£å¨ä½¿ç¨éæ ·è§æ ¼'%s'\n"
msgid "Cannot access autospawn lock."
msgstr "ä¸è½è®¿é®autospawnéã"
+#, fuzzy
+#~ msgid ""
+#~ "Called SUID root and real-time and/or high-priority scheduling was "
+#~ "requested in the configuration. However, we lack the necessary "
+#~ "privileges:\n"
+#~ "We are not in group '"
+#~ msgstr ""
+#~ "æ¤é
ç½®éè¦è°ç¨SUID rootåå®æ¶ï¼é«ä¼å
级è°åº¦ãä½æ¯æ们没ææéçæéï¼\n"
+#~ "æ们ä¸å±è¯¥ç»"
+
+#, fuzzy
+#~ msgid "--log-time boolean argument"
+#~ msgstr "--disallow-exit å¸å°åæ°"
+
#~ msgid ""
#~ "' and PolicyKit refuse to grant us priviliges. Dropping SUID again.\n"
#~ "For enabling real-time scheduling please acquire the appropriate "
commit 71263929cb825acc1fed15fa33e110d77b2c37a7
Author: Lennart Poettering <lennart at poettering.net>
Date: Tue Feb 24 11:35:47 2009 +0100
ignore tags file
diff --git a/src/.gitignore b/src/.gitignore
index 80d33d3..8537044 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -1,3 +1,4 @@
+TAGS
alsa-time-test
gtk-test
prioq-test
--
hooks/post-receive
PulseAudio Sound Server
More information about the pulseaudio-commits
mailing list