From: Arun Raghavan Date: Thu, 9 Feb 2012 11:20:31 +0000 (+0530) Subject: sink-input,source-output: Handle devices going away in unlink hooks X-Git-Url: https://code.delx.au/pulseaudio/commitdiff_plain/0521db6cf75cf61162c35505ee7baf9e5f21789d sink-input,source-output: Handle devices going away in unlink hooks If a *_UNLINK_POST hook causes a sink-input/source-output's sink/source to go away, the subsequent attempt to update the sink/source status will cause an assert. We deal with this by checking the sink/source status before trying to update it. --- diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index 93caa8fa..7f824fa5 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -657,7 +657,9 @@ void pa_sink_input_unlink(pa_sink_input *i) { } if (i->sink) { - pa_sink_update_status(i->sink); + if (PA_SINK_IS_LINKED(pa_sink_get_state(i->sink))) + pa_sink_update_status(i->sink); + i->sink = NULL; } diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index 8a35ab0f..2f38af57 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -587,7 +587,9 @@ void pa_source_output_unlink(pa_source_output*o) { } if (o->source) { - pa_source_update_status(o->source); + if (PA_SOURCE_IS_LINKED(pa_source_get_state(o->source))) + pa_source_update_status(o->source); + o->source = NULL; }