[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