summaryrefslogtreecommitdiffstats
path: root/ext/pulse/pulsesink.c
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@noraisin.net>2009-03-20 13:27:59 +0000
committerJan Schmidt <thaytan@noraisin.net>2009-03-20 13:27:59 +0000
commitb39d090a499c114d039aa27ca4329a2cda6b181b (patch)
treea94c7fa826bfed73bddd883b495eaccbdeceadcb /ext/pulse/pulsesink.c
parent120e6bfc5c187eb6482fe13f4f55cf869feee896 (diff)
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
Diffstat (limited to 'ext/pulse/pulsesink.c')
-rw-r--r--ext/pulse/pulsesink.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c
index 8ff41760..7d2af9d5 100644
--- a/ext/pulse/pulsesink.c
+++ b/ext/pulse/pulsesink.c
@@ -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)