output/pulse: add function _delete_stream()

Merge common code.
This commit is contained in:
Max Kellermann 2011-08-31 21:00:55 +02:00
parent 042c1abc6e
commit e76c752987

View File

@ -224,6 +224,20 @@ pulse_output_connect(struct pulse_output *po, GError **error_r)
return true; return true;
} }
/**
* Frees and clears the stream.
*/
static void
pulse_output_delete_stream(struct pulse_output *po)
{
assert(po != NULL);
assert(po->stream != NULL);
pa_stream_disconnect(po->stream);
pa_stream_unref(po->stream);
po->stream = NULL;
}
/** /**
* Frees and clears the context. * Frees and clears the context.
*/ */
@ -539,8 +553,7 @@ pulse_output_open(void *data, struct audio_format *audio_format,
error = pa_stream_connect_playback(po->stream, po->sink, error = pa_stream_connect_playback(po->stream, po->sink,
NULL, 0, NULL, NULL); NULL, 0, NULL, NULL);
if (error < 0) { if (error < 0) {
pa_stream_unref(po->stream); pulse_output_delete_stream(po);
po->stream = NULL;
g_set_error(error_r, pulse_output_quark(), 0, g_set_error(error_r, pulse_output_quark(), 0,
"pa_stream_connect_playback() has failed: %s", "pa_stream_connect_playback() has failed: %s",
@ -578,9 +591,7 @@ pulse_output_close(void *data)
pulse_wait_for_operation(po->mainloop, o); pulse_wait_for_operation(po->mainloop, o);
} }
pa_stream_disconnect(po->stream); pulse_output_delete_stream(po);
pa_stream_unref(po->stream);
po->stream = NULL;
if (po->context != NULL && if (po->context != NULL &&
pa_context_get_state(po->context) != PA_CONTEXT_READY) pa_context_get_state(po->context) != PA_CONTEXT_READY)