[pulseaudio-discuss] [PATCH] role-cork: Fix improper uncork behavior in case of operating globally
Tanu Kaskinen
tanuk at iki.fi
Tue Mar 22 11:41:17 UTC 2016
On Thu, 2016-02-18 at 20:52 +0900, Sangchul Lee wrote:
> Fix improper uncork behavior when using this module with "global=1" argument.
>
> Signed-off-by: Sangchul Lee <sc11.lee at samsung.com>
> ---
> src/modules/module-role-cork.c | 18 +++++++++++++++++-
> 1 file changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/src/modules/module-role-cork.c b/src/modules/module-role-cork.c
> index 7c0f59f..7a4a0c0 100644
> --- a/src/modules/module-role-cork.c
> +++ b/src/modules/module-role-cork.c
> @@ -90,6 +90,22 @@ static bool shall_cork(struct userdata *u, pa_sink *s, pa_sink_input *ignore) {
> return false;
> }
>
> +static bool shall_corks(struct userdata *u, pa_sink *s, pa_sink_input *ignore) {
> + bool ret = false;
> +
> + pa_assert(u);
> +
> + if (u->global) {
> + uint32_t idx;
> + PA_IDXSET_FOREACH(s, u->core->sinks, idx)
> + if ((ret = shall_cork(u, s, ignore)))
> + break;
> + } else
> + ret = shall_cork(u, s, ignore);
> +
> + return ret;
> +}
> +
> static inline void apply_cork_to_sink(struct userdata *u, pa_sink *s, pa_sink_input *ignore, bool cork) {
> pa_sink_input *j;
> uint32_t idx, role_idx;
> @@ -166,7 +182,7 @@ static pa_hook_result_t process(struct userdata *u, pa_sink_input *i, bool creat
> if (!i->sink)
> return PA_HOOK_OK;
>
> - cork = shall_cork(u, i->sink, create ? NULL : i);
> + cork = shall_corks(u, i->sink, create ? NULL : i);
> apply_cork(u, i->sink, create ? NULL : i, cork);
>
> return PA_HOOK_OK;
This issue should now be fixed in the merged cork/ducking code in
src/modules/stream-interaction.c. You may want to check the behaviour
of the new code.
--
Tanu
More information about the pulseaudio-discuss
mailing list