[pulseaudio-discuss] [PATCH] module-allow-passthrough: Don't crash if we can't find a sink

Tanu Kaskinen tanuk at iki.fi
Sat May 5 14:23:19 UTC 2018


On Fri, 2018-05-04 at 22:14 +0530, Arun Raghavan wrote:
> module-allow-passthrough has a (necessary) hack to replicate the default
> sink selection and format negotiation from sink-input.c. One thing that
> got missed in this replication is the possibility that the sink input is
> not compatible with the default sink. When this happen, we now exit
> gracefully.
> 
> Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=105578
> ---
>  src/modules/module-allow-passthrough.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/modules/module-allow-passthrough.c b/src/modules/module-allow-passthrough.c
> index 16b421d79..f7c61559b 100644
> --- a/src/modules/module-allow-passthrough.c
> +++ b/src/modules/module-allow-passthrough.c
> @@ -184,6 +184,12 @@ static pa_hook_result_t sink_input_new_cb(pa_core *core, pa_sink_input_new_data
>      if (!new_data->format && new_data->nego_formats && !pa_idxset_isempty(new_data->nego_formats))
>          new_data->format = pa_format_info_copy(pa_idxset_first(new_data->nego_formats, NULL));
>  
> +    if (!new_data->format) {
> +        /* Sink doesn't support any requested format */
> +        pa_log_debug("Default sink does not match sink input requested formats");
> +        return PA_HOOK_OK;
> +    }
> +
>      if (pa_sink_input_new_data_is_passthrough(new_data))
>          return new_passthrough_stream(u, core, new_data->sink, NULL);

Looks good to me.

-- 
Tanu

https://liberapay.com/tanuk
https://www.patreon.com/tanuk


More information about the pulseaudio-discuss mailing list