pulseaudio/src/modules
Arun Raghavan bf7bc1a55f echo-cancel: Handle underlying sink going away better when autoloaded
When we the underlying sink/source goes away, there is an intermediate
state where the asyncmsgqs that we were using for the sink-input and
source-output go away. This is usually okay if the sink-input and
source-output are moved to another device, but can be problematic if we
don't support moving (which is the case when the filter is autoloaded).

This becomes a problem because of the following chain of events:

  * The underlying sink goes away

  * Moving the filter sink-input fails (because it is autloaded)
    * At this point the sink-input has no underlying sink, and thus
      no underlying asyncmsgq
    * This also applies to all sink-inputs connected to the echo-cancel
      module

  * The sink-input is killed, triggering a module unload

  * On unlink, module-rescue-streams tries to move sink-inputs to
    another sink, starting with a START_MOVE message

  * There is no asyncmsgq for the message, so we crash
    * We can't just perform a NULL check for the asyncmsgq, since there
      are state changes we need to effect during the move

To fix this, we pretend to allow the move to the new sink, and then
unlink ourselves *after* the move is complete. This ensures that we
never find ourselves in a position where we need the underlying
sink/asyncmsgq to be present when it is not.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=90416
2015-06-12 12:43:18 +05:30
..
alsa alsa-mixer: Make line out path unavailable when "Front Headphone" is plugged in 2015-05-05 16:48:11 +02:00
bluetooth Fix: Prevent calling pa_rtpoll_free() for a NULL rtpoll 2015-03-27 14:34:15 +01:00
dbus Revert "Warn on loading module-dbus-protocol" 2015-05-21 10:25:29 +02:00
echo-cancel echo-cancel: Handle underlying sink going away better when autoloaded 2015-06-12 12:43:18 +05:30
gconf update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
jack update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
macosx coreaudio: Change error type to OSStatus 2015-04-01 09:43:05 +02:00
oss oss: Use the correct fd when interacting with the mixer 2015-04-30 13:21:02 +03:00
raop update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
rtp update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
x11 update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
xen update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
ladspa.h update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
Makefile build-sys: readd stub makefiles to subdirectories to make building with emacs easier 2012-05-15 14:17:58 +02:00
module-always-sink.c always-sink: Ignore filter sinks 2015-06-12 12:43:18 +05:30
module-augment-properties.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-card-restore.c module-*-restore: use pa_module_hook_connect 2015-04-10 09:26:40 +02:00
module-cli.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-combine-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-combine.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-console-kit.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-default-device-restore.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-defs.h.m4 Remove pa_bool_t and replace it with bool. 2013-07-04 12:25:30 +03:00
module-detect.c detect: Fix OSS device detection with long names 2015-04-13 08:32:16 +05:30
module-device-manager.c tagstruct: Distinguish pa_tagstruct_new() use cases 2015-02-26 23:23:17 +01:00
module-device-restore.c module-*-restore: use pa_module_hook_connect 2015-04-10 09:26:40 +02:00
module-equalizer-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-esound-compat-spawnfd.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-esound-compat-spawnpid.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-esound-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-filter-apply.c sink,source: Add a helper function to check whether this is a filter 2015-06-12 12:43:18 +05:30
module-filter-heuristics.c module-filter-*: use pa_module_hook_connect 2015-04-10 09:26:47 +02:00
module-hal-detect-compat.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-intended-roles.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-ladspa-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-lirc.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-loopback.c module-loopback: don't use 0 for custom source output message id 2015-02-16 15:02:12 +01:00
module-match.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-mmkbd-evdev.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-native-protocol-fd.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-null-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-null-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-pipe-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-pipe-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-position-event-sounds.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-protocol-stub.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-remap-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-remap-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-rescue-streams.c rescue-streams: Fix a couple of typos 2015-06-10 16:53:07 +05:30
module-role-cork.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-role-ducking.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-rygel-media-server.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-sine-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-sine.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-solaris.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-stream-restore.c module-*-restore: use pa_module_hook_connect 2015-04-10 09:26:40 +02:00
module-suspend-on-idle.c module-suspend-on-idle: use pa_module_hook_connect 2015-04-10 09:26:43 +02:00
module-switch-on-connect.c module-switch-*: use pa_module_hook_connect 2015-04-10 09:26:49 +02:00
module-switch-on-port-available.c module-switch-*: use pa_module_hook_connect 2015-04-10 09:26:49 +02:00
module-systemd-login.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-tunnel-sink-new.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-tunnel-source-new.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-tunnel.c tagstruct: Distinguish pa_tagstruct_new() use cases 2015-02-26 23:23:17 +01:00
module-udev-detect.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-virtual-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-virtual-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-virtual-surround-sink.c lfe-filter: change the crossover frequency as a parameter 2015-03-30 10:52:30 +02:00
module-volume-restore.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-waveout.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-zeroconf-discover.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-zeroconf-publish.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
reserve-monitor.c reserve: Move get_name_owner() to the public rd_device API 2013-01-31 13:56:25 +02:00
reserve-monitor.h More spelling fixes 2011-08-25 11:27:47 +01:00
reserve-wrap.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
reserve-wrap.h update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
reserve.c reserve: Fix leaking NameLost signals after release+acquire 2013-01-31 14:04:45 +02:00
reserve.h reserve: Move get_name_owner() to the public rd_device API 2013-01-31 13:56:25 +02:00
udev-util.c udev: Deal with unavailable bus property 2015-04-13 08:35:53 +05:30
udev-util.h update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00