[pulseaudio-discuss] [PATCH] filter-apply: Eliminate nested and redundant hook events.

Georg Chini georg at chini.tk
Sat Dec 9 20:30:35 UTC 2017


On 18.05.2017 03:45, KimJeongYeon wrote:
> Hook events of proplist triggered by pa_{sink_input|source_output}_set_property()
> in do_move() function. Then, do_move() will be called again by its nested hook events.
>
> For example playback stream,
> filter-apply calls do_move() by hook event of 'PA_CORE_HOOK_SINK_INPUT_PROPLIST_CHANGED'
> when sink-input appends "filter.apply" property and trigger hook.
> Then, same hook event triggeres again by pa_sink_input_set_property() in do_move().
> Therefore, duplaicated move operation happens.
>
> This patch eliminate nested and redundant hook events while stream moving by filter-apply.
>
> Signed-off-by: KimJeongYeon <jeongyeon.kim at samsung.com>
> ---
>   src/modules/module-filter-apply.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
>
> diff --git a/src/modules/module-filter-apply.c b/src/modules/module-filter-apply.c
> index 6ca062b..cc508e0 100644
> --- a/src/modules/module-filter-apply.c
> +++ b/src/modules/module-filter-apply.c
> @@ -646,6 +646,11 @@ static pa_hook_result_t sink_input_proplist_cb(pa_core *core, pa_sink_input *i,
>       pa_core_assert_ref(core);
>       pa_sink_input_assert_ref(i);
>   
> +    /* Eliminate nested and redundant hook event that triggered by
> +       pa_sink_input_set_property() in do_move(). */
> +    if (pa_proplist_gets(i->proplist, PA_PROP_FILTER_APPLY_MOVING))
> +        return PA_HOOK_OK;
> +
>       return process(u, PA_OBJECT(i), true, true);
>   }
>   
> @@ -723,6 +728,11 @@ static pa_hook_result_t source_output_proplist_cb(pa_core *core, pa_source_outpu
>       pa_core_assert_ref(core);
>       pa_source_output_assert_ref(o);
>   
> +    /* Eliminate nested and redundant hook event that triggered by
> +       pa_source_output_set_property() in do_move(). */
> +    if (pa_proplist_gets(o->proplist, PA_PROP_FILTER_APPLY_MOVING))
> +        return PA_HOOK_OK;
> +
>       return process(u, PA_OBJECT(o), false, true);
>   }
>   

Thanks, I amended the commit message and pushed the patch. Sorry for the
long delay.



More information about the pulseaudio-discuss mailing list