pulseaudio/src/modules
Tanu Kaskinen dd7cf7ad5e Call change_cb() only when there's an actual change.
Calling change_cb() whenever anything happens in the ownership of the
bus name caused trouble in PulseAudio in this scenario:

1. PulseAudio is using a device and owns the corresponding service
   name.
2. Another application requests device release.
3. PulseAudio releases the device.
4. Change in the bus name ownership: PulseAudio gives up the
   ownership, and nobody owns the name.
5. reserve-monitor notices that, and notifies PulseAudio.
6. Since reserve-monitor reports the device as "not busy", PulseAudio
   decides to reserve the bus name immediately back to itself and
   opens the device again.

The other application will forcibly take the bus name to itself, as
it should according to the protocol, but the other application may
have trouble opening the device if it tries to do that before
PulseAudio has had time to react to the NameLost signal.

This can be solved by not calling change_cb() if there are no changes
in the device busy status. In this scenario the device is considered
"not busy" while PulseAudio is owning the bus name, so PulseAudio gets
no notification when the ownership changes from PulseAudio to nobody.
2013-01-17 11:12:44 +01:00
..
alsa Log the reason for every suspend/resume. 2012-12-19 12:31:47 +02:00
bluetooth bluetooth: Convert booleans to stdbool. 2013-01-11 22:11:04 +02:00
dbus Log the reason for every suspend/resume. 2012-12-19 12:31:47 +02:00
echo-cancel echo-cancel: Fix error cleanup of pa_speex_ec_init() 2013-01-11 21:24:24 +02:00
gconf modules: Use pa_streq instead of strcmp. 2012-06-09 16:21:41 +03:00
jack jackdbus-detect: Add channel count override. 2012-12-30 11:54:34 +02:00
macosx modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
oss oss: Check pa_read() return value. 2012-12-19 12:31:50 +02:00
raop modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
rtp rtp: Fix warning using pa_assert_not_reached() 2012-10-24 12:24:57 +03:00
x11 modules: Use pa_streq instead of strcmp. 2012-06-09 16:21:41 +03:00
xen modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
ladspa.h merge 'lennart' branch back into trunk. 2007-10-28 19:13:50 +00: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 modules: Use PA_IDXSET_FOREACH wherever applicable. 2012-05-31 14:12:33 +02:00
module-augment-properties.c conf-parser: Add support for parsing property lists. 2012-06-29 13:23:07 +03:00
module-card-restore.c card-restore: Log the restored profile name. 2012-12-19 12:31:47 +02:00
module-cli.c win32: Make some unused-variable warnings go away 2011-06-24 00:34:05 +01:00
module-combine-sink.c modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
module-combine.c Remove unnecessary #includes 2011-06-22 23:12:20 +01:00
module-console-kit.c systemd: complement module-console-kit with module-systemd-login 2012-03-17 01:52:41 +01:00
module-default-device-restore.c More spelling fixes 2011-08-25 11:27:47 +01:00
module-defs.h.m4 modules: introduce PA_MODULE_DEPRECATED() macro for marking modules deprecated 2009-05-28 02:47:36 +02:00
module-detect.c modules: Use pa_streq instead of strcmp. 2012-06-09 16:21:41 +03:00
module-device-manager.c modules: Use pa_streq instead of strcmp. 2012-06-09 16:21:41 +03:00
module-device-restore.c device-restore: Fix empty argument list declaration. 2012-12-19 12:31:50 +02:00
module-equalizer-sink.c equalizer: Don't cleanup u->sink in sink_input_kill_cb yet 2012-09-25 20:39:15 +03:00
module-esound-compat-spawnfd.c Initialise variables 2011-08-15 09:41:56 +01:00
module-esound-compat-spawnpid.c Remove unnecessary #includes 2011-06-22 23:12:20 +01:00
module-esound-sink.c modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
module-filter-apply.c filters: Handle echo-cancel streams better 2011-11-24 13:03:26 +05:30
module-filter-heuristics.c core: Add a string list membership check function 2011-10-28 15:21:09 +02:00
module-hal-detect-compat.c hal: add stub module that loads module-udev-detect instead of module-hal-detect 2009-08-11 23:04:35 +02:00
module-intended-roles.c core: Add a string list membership check function 2011-10-28 15:21:09 +02:00
module-ladspa-sink.c memblock: Add pa_memblock_acquire_chunk(). 2012-08-22 09:47:03 +03:00
module-lirc.c volume: Clamp volume to PA_VOLUME_MAX 2010-10-15 01:10:00 +05:30
module-loopback.c loopback: Don't fix the source output format/rate/channels. 2012-10-30 16:27:17 +02:00
module-match.c match: Use the SINK_INPUT_FIXATE hook instead of NEW. 2012-10-30 16:32:34 +02:00
module-mmkbd-evdev.c volume: Clamp volume to PA_VOLUME_MAX 2010-10-15 01:10:00 +05:30
module-native-protocol-fd.c Initialise variables 2011-08-15 09:41:56 +01:00
module-null-sink.c modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
module-null-source.c Initialise variables 2011-08-15 09:41:56 +01:00
module-pipe-sink.c modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
module-pipe-source.c pipe: check return value of mkfifo() 2012-05-29 09:03:15 +05:30
module-position-event-sounds.c sink-input: New volume_factor system 2012-12-19 12:31:47 +02:00
module-protocol-stub.c core-util: Fix permissions handling while creating directories 2012-07-03 08:49:26 +05:30
module-remap-sink.c Add comments referring to bug #53709. 2012-08-19 14:49:27 +03:00
module-rescue-streams.c Fix typos 2010-12-20 11:07:30 +00:00
module-role-cork.c role-cork: Fix another minor leak 2012-07-03 18:16:38 +05:30
module-role-ducking.c role-ducking: Apply a ducking effect based on streams roles 2012-12-19 12:31:48 +02:00
module-rygel-media-server.c Make gcc --std=c99 happy 2011-09-03 12:17:28 +02:00
module-sine-source.c Remove unnecessary #includes 2011-06-22 23:12:20 +01:00
module-sine.c Remove unnecessary #includes 2011-06-22 23:12:20 +01:00
module-solaris.c solaris: When suspending, flush the device instead of draining it. 2013-01-04 17:13:32 +02:00
module-stream-restore.c stream-restore: Add missing method handler argument. 2012-11-20 11:57:21 +02:00
module-suspend-on-idle.c Log the reason for every suspend/resume. 2012-12-19 12:31:47 +02:00
module-switch-on-connect.c module-switch-on-connect: Don't switch unlinked sink input and source outputs 2011-08-31 18:49:44 +05:30
module-switch-on-port-available.c Assume that the ports hashmap of cards is always non-NULL. 2012-06-29 14:47:35 +03:00
module-systemd-login.c systemd: complement module-console-kit with module-systemd-login 2012-03-17 01:52:41 +01:00
module-tunnel.c sink: Process rewind requests also when suspended. 2012-11-16 23:16:05 +05:30
module-udev-detect.c Log the reason for every suspend/resume. 2012-12-19 12:31:47 +02:00
module-virtual-sink.c virtual-sink: Removed the option to specify sample format. 2012-12-19 12:31:50 +02:00
module-virtual-source.c Log the reason for every suspend/resume. 2012-12-19 12:31:47 +02:00
module-virtual-surround-sink.c virtual-surround: check if resampled memblock is not equal to input 2012-11-29 05:28:39 +02:00
module-volume-restore.c Fix up some double spaces 2011-03-18 09:20:07 +00:00
module-waveout.c modules: Micro-optimisation for rewind_requested paths 2012-11-16 23:16:05 +05:30
module-zeroconf-discover.c modules: Use pa_streq instead of strcmp. 2012-06-09 16:21:41 +03:00
module-zeroconf-publish.c Remove unnecessary #includes 2011-06-22 23:12:20 +01:00
reserve-monitor.c Call change_cb() only when there's an actual change. 2013-01-17 11:12:44 +01:00
reserve-monitor.h More spelling fixes 2011-08-25 11:27:47 +01:00
reserve-wrap.c Move i18n.[ch] to src/pulsecore 2011-08-11 13:23:42 +02:00
reserve-wrap.h reserve: wrap device reservation monitor reference implementation 2009-06-05 19:03:16 +02:00
reserve.c voltest: extend test to verify correctness of _multiply() and _divide() 2009-08-19 01:02:32 +02:00
reserve.h More spelling fixes 2011-08-25 11:27:47 +01:00
udev-util.c udev: Don't use deprecated udev_get_*_path() functions 2012-05-29 09:17:18 +05:30
udev-util.h Remove unnecessary #includes 2011-06-22 23:12:20 +01:00