pulsesink: Track the corked/uncorked state ourselves

Use an instance variable to track whether the stream is corked or not,
instead of using PA API that was only introduced in 0.9.11
This commit is contained in:
Jan Schmidt 2009-03-20 13:27:59 +00:00
parent 120e6bfc5c
commit b39d090a49
2 changed files with 5 additions and 1 deletions

View file

@ -822,6 +822,7 @@ gst_pulsesink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
pa_strerror (pa_context_errno (pulsesink->context))), (NULL));
goto unlock_and_fail;
}
pulsesink->corked = TRUE;
for (;;) {
pa_stream_state_t state;
@ -884,7 +885,7 @@ gst_pulsesink_write (GstAudioSink * asink, gpointer data, guint length)
pulsesink->in_write = TRUE;
/* Make sure the stream is uncorked - it might not be on a caps change */
if (pa_stream_is_corked (pulsesink->stream)) {
if (pulsesink->corked) {
if (!(o = pa_stream_cork (pulsesink->stream, FALSE, NULL, NULL))) {
GST_ELEMENT_ERROR (pulsesink, RESOURCE, FAILED,
("pa_stream_cork() failed: %s",
@ -897,6 +898,7 @@ gst_pulsesink_write (GstAudioSink * asink, gpointer data, guint length)
goto unlock_and_fail;
pa_threaded_mainloop_wait (pulsesink->mainloop);
}
pulsesink->corked = FALSE;
pa_operation_unref (o);
o = NULL;
@ -1228,6 +1230,7 @@ gst_pulsesink_pause (GstPulseSink * pulsesink, gboolean b)
goto unlock;
pa_threaded_mainloop_wait (pulsesink->mainloop);
}
pulsesink->corked = b;
unlock:
if (o)

View file

@ -68,6 +68,7 @@ struct _GstPulseSink
gboolean operation_success;
gboolean did_reset, in_write;
gboolean corked;
gint notify;
};