Arun Raghavan | 22 Apr 09:39 2014

[PATCH] build-sys: Add an --enable-debug option

This stops the abuse of __OPTIMIZE__ in builds, and adds an explicit
configure-time option to enable a debug-friendly build. We can extend
this with more debug-related options as needed.

One small side-effect that this change has is that non-debug builds no
longer have fastpath asserts enabled (which is how it should be).
 README                           |  6 +-----                     |  2 +-                     | 12 +++++-------
 src/daemon/main.c                |  6 ++----
 src/modules/gconf/module-gconf.c |  2 +-
 src/pulsecore/pid.c              |  4 ++--
 6 files changed, 12 insertions(+), 20 deletions(-)

diff --git a/README b/README
index 66c1847..904d1c1 100644
--- a/README
+++ b/README
 <at>  <at>  -34,11 +34,7  <at>  <at>  AUTHORS:

-	In order to run pulseaudio from the build dir __OPTIMIZE__ should be
-	disabled (look at src/pulsecore/core-util.h::pa_run_from_build_tree()),
-	this can be done by passing "CFLAGS=-O0" to the configure script:
-	  ./
-	  CFLAGS="-ggdb3 -O0" LDFLAGS="-ggdb3" ./configure
+	  ./configure
(Continue reading)

Arun Raghavan | 22 Apr 09:35 2014

Trivial gconf fixes

A couple of quick compiler warning fixes follow.

-- Arun
John Frankish | 22 Apr 05:57 2014

Problems with pulseaudio-5.0 and gnome-session-3.10.x

Using pulseaudio-5.0 and gnome-session/gnome-shell-3.10.x compiled from source on tinycorelinux x86_64.

If I start gnome-session from the console prompt, pulseaudio only shows a dummy output, even though my
hardware is detected as per aplay/alsamixer.

D: [pulseaudio] module.c: Checking for existence of
'/usr/local/lib/pulse/modules/': success
I: [pulseaudio] module-udev-detect.c: Found 0 cards.

On the same machine and without changing anything, if I first start another window manager (flwm) from the
console prompt, pulseaudio works fine. If I then exit back to the console prompt and start gnome-session,
pulseaudio also works fine. The only issue being that the speaker test in gnome-control-center does not
produce any sound.

I don't understand why pulseaudio/gnome-session would not work in the first case, but does work in the
second case. I suppose it's a permissions issue, but the same user is being used in both cases.

Any trouble-shooting pointers would be much appreciated.

Hemanth Meenakshisundaram | 21 Apr 02:30 2014

[PATCH] combine-sink: fix zero adjust_time behaviour.

From: Hemanth Meenakshisundaram <hemanth <at>>

A value of 0 for adjust_time should disable rate adjustment.
Fix a bug where a 0 value causes rate adjustment to be called
continuously instead after an unsuspend event.
 src/modules/module-combine-sink.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/module-combine-sink.c b/src/modules/module-combine-sink.c
index deabceb..bd18b7a 100644
--- a/src/modules/module-combine-sink.c
+++ b/src/modules/module-combine-sink.c
 <at>  <at>  -610,7 +610,7  <at>  <at>  static void unsuspend(struct userdata *u) {
     PA_IDXSET_FOREACH(o, u->outputs, idx)

-    if (!u->time_event)
+    if ((!u->time_event) && (u->adjust_time > 0))
         u->time_event = pa_core_rttime_new(u->core, pa_rtclock_now() + u->adjust_time, time_callback, u);

     pa_log_info("Resumed successfully...");

Alexander E. Patrakov | 19 Apr 23:21 2014

[PATCH] Don't use tsched on unsafe ALSA plugins

Since the dca ALSA plugin is based on extplug, it has a slave and therefore
a card. Thus, PulseAudio thinks that it looks like hardware and attempts
rewinds, which this plugin cannot handle correctly, because ALSA never
notifies extplug plugins about rewinds.

The same mishandling of rewinds applies to some other plugins.

Work around this ALSA bug by switching to IRQ-based scheduling on strange
plugin types.
I have not deleted the "does a card exist" check, but for the AC3 encoder
case (which is mentioned in the git log) it is now redundant. Feel free
to delete if no other triggering use case is known.

P.S. I see this line in alsa-lib/src/pcm/pcm_extplug.c:

        params->info &= ~(SND_PCM_INFO_MMAP | SND_PCM_INFO_MMAP_VALID);

but then also:

        snd_pcm_access_mask_t saccess_mask = { SND_PCM_ACCBIT_MMAP };

How should I understand this - is the intention here to disable mmap access
or enable it?

 src/modules/alsa/alsa-util.c | 48 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 1ce2e16..c6dd80c 100644
(Continue reading)

Tanu Kaskinen | 17 Apr 11:14 2014

Patch review status wiki page updated

Patch review status updated:


* 2014-04-17
   * 157 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 275 days old.

* 2014-03-24
   * 138 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 251 days old.

* 2014-03-14
   * 136 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 241 days old.

* 2014-03-07
   * 136 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 234 days old.

* 2014-02-22
   * 137 patches are pending review (not counting the "in a github 
branch" patches).
   * The oldest pending patch is 221 days old.

(Continue reading)

Lukas Zapletal | 16 Apr 13:21 2014

When (un)docking PA does not switch output between speakers and out


in Fedora 20 we have this %SUBJ% bug which is annoying. Before I start 
digging I want to ask if you guys know if this has been fixed upstream.

If so, I will backport this into F20 because this is driving me crazy.

If not, please point me on the code bits I should start to hack. Thanks.
Peter Barada | 15 Apr 18:24 2014

Routing to/from HE910 cell modem w/echo cancellation


I'm a bit unclear on how to use paplay/parecord as replacements for

On my dm3730-based system I have an HE910 modem hooked up and have
created a snd-soc device for it (using the snd-soc-dummy-dai) to move
data in/out of the HE910 PCM port.  My alsa devices show up as:

root <at> lv5000:~# aplay -L
    Discard all samples (playback) or generate zero samples (capture)
    Default Audio Device
    Default Audio Device
    Default Audio Device
    Default Audio Device

Where omap3beagle source is the microphone and its sink is the speaker,
omap3he910 source is PCM data from the HE910 and its sink is PCM data to
the HE910.

Previously I'd setup two pipes using aplay/arecord to move the data
(Continue reading)

David Henningsson | 15 Apr 17:25 2014

[PATCH 1/2] fdsem: remove superfluous parameter in call to pa_fdsem_new_shm

This parameter was never assigned, so just remove it.

Note that the only current user of this function is shmasyncq.c,
which is unused - we don't even build it. But I fixed it up anyway.

Signed-off-by: David Henningsson <david.henningsson <at>>
 src/pulsecore/fdsem.c     | 3 +--
 src/pulsecore/fdsem.h     | 2 +-
 src/pulsecore/shmasyncq.c | 3 ++-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/pulsecore/fdsem.c b/src/pulsecore/fdsem.c
index ec32461..b153ddd 100644
--- a/src/pulsecore/fdsem.c
+++ b/src/pulsecore/fdsem.c
 <at>  <at>  -100,11 +100,10  <at>  <at>  pa_fdsem *pa_fdsem_open_shm(pa_fdsem_data *data, int event_fd) {
     return f;

-pa_fdsem *pa_fdsem_new_shm(pa_fdsem_data *data, int* event_fd) {
+pa_fdsem *pa_fdsem_new_shm(pa_fdsem_data *data) {
     pa_fdsem *f = NULL;

-    pa_assert(event_fd);


diff --git a/src/pulsecore/fdsem.h b/src/pulsecore/fdsem.h
(Continue reading)

Wim Taymans | 15 Apr 15:21 2014

[PATCH] combine-sinks: add suport for DYNAMIC_LATENCY

Mark the sink as DYNAMIC_LATENCY and implement update_sink_latency_range
on its sink-input to collect the combined latency range of all sinks.

Implement update_requested_latency on the sink to configure the final
latency by combining the sink-input requested latencies. This makes us
honour the client latency request.

We don't need to call update_max_request() and update_fixed_latency()
when adding and removing outputs, this is already done when we attach
the sink-inputs.

Also add more debug log.

 src/modules/module-combine-sink.c | 135 +++++++++++++++++++++++++++-----------
 1 file changed, 98 insertions(+), 37 deletions(-)

diff --git a/src/modules/module-combine-sink.c b/src/modules/module-combine-sink.c
index deabceb..d705542 100644
--- a/src/modules/module-combine-sink.c
+++ b/src/modules/module-combine-sink.c
 <at>  <at>  -104,7 +104,8  <at>  <at>  struct output {

     /* For communication of the stream parameters to the sink thread */
     pa_atomic_t max_request;
-    pa_atomic_t requested_latency;
+    pa_atomic_t max_latency;
+    pa_atomic_t min_latency;

(Continue reading)

Juho Hämäläinen | 15 Apr 15:11 2014

[PATCH] dbus: Use correct initialization for source ports hashmap.

Source ports hashmap is created without value freeing function, which
results in (hashmap values) device ports not being freed when source
ports are removed or module is unloaded. This results in memory leak
during normal operation and during daemon shutdown dbus_protocol shared
object isn't unreferenced correctly, leaving dbus_protocol object in
core->shared, which causes assert when shared hashmap is checked for
isempty() before freeing.
 src/modules/dbus/iface-device.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/modules/dbus/iface-device.c b/src/modules/dbus/iface-device.c
index 34b370b..625f057 100644
--- a/src/modules/dbus/iface-device.c
+++ b/src/modules/dbus/iface-device.c
 <at>  <at>  -1248,7 +1248,7  <at>  <at>  pa_dbusiface_device *pa_dbusiface_device_new_source(pa_dbusiface_core
*core, pa_
     d->volume = *pa_source_get_volume(source, false);
     d->mute = pa_source_get_mute(source, false);
     d->source_state = pa_source_get_state(source);
-    d->ports = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+    d->ports = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func,
NULL, (pa_free_cb_t) pa_dbusiface_device_port_free);
     d->next_port_index = 0;
     d->active_port = source->active_port;
     d->proplist = pa_proplist_copy(source->proplist);