On 13.03.2018 18:40, Tanu Kaskinen wrote:
There are no behaviour changes, the code from almost all the SET_STATE
handlers is moved with minimal changes to the newly introduced
set_state_in_io_thread() callback. The only exception is module-tunnel,
which has to call pa_sink_render() after pa_sink.thread_info.state has
been updated. The set_state_in_io_thread() callback is called before
updating that variable, so moving the SET_STATE handler code to the
callback isn't possible.
The purpose of this change is to make it easier to get state change
handling right in modules. Hooking to the SET_STATE messages in modules
required care in calling pa_sink/source_process_msg() at the right time
(or not calling it at all, as was the case on resume failures), and
there were a few bugs (fixed before this patch). Now the core takes care
of ordering things correctly.
Another motivation for this change is that there was some talk about
adding a suspend_cause variable to pa_sink/source.thread_info. The
variable would be updated in the core SET_STATE handler, but that would
not work with the old design, because in case of resume failures modules
didn't call the core message handler.
---
src/modules/alsa/alsa-sink.c | 89 ++++++++------
src/modules/alsa/alsa-source.c | 89 ++++++++------
src/modules/bluetooth/module-bluez4-device.c | 172 ++++++++++++++------------
src/modules/bluetooth/module-bluez5-device.c | 174 ++++++++++++++-------------
src/modules/echo-cancel/module-echo-cancel.c | 31 +++--
src/modules/module-combine-sink.c | 33 +++--
src/modules/module-equalizer-sink.c | 30 +++--
src/modules/module-esound-sink.c | 59 +++++----
src/modules/module-ladspa-sink.c | 30 +++--
src/modules/module-null-sink.c | 25 ++--
src/modules/module-null-source.c | 21 ++--
src/modules/module-pipe-sink.c | 45 ++++---
src/modules/module-remap-sink.c | 30 +++--
src/modules/module-sine-source.c | 21 ++--
src/modules/module-solaris.c | 126 ++++++++++---------
src/modules/module-tunnel-sink-new.c | 48 +++++---
src/modules/module-tunnel-source-new.c | 48 +++++---
src/modules/module-virtual-sink.c | 30 +++--
src/modules/module-virtual-surround-sink.c | 30 +++--
src/modules/oss/module-oss.c | 152 ++++++++++++-----------
src/modules/raop/raop-sink.c | 121 ++++++++++---------
src/pulsecore/sink.c | 8 ++
src/pulsecore/sink.h | 30 +++--
src/pulsecore/source.c | 8 ++
src/pulsecore/source.h | 32 +++--
25 files changed, 849 insertions(+), 633 deletions(-)
LGTM
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss