summaryrefslogtreecommitdiffstats
path: root/ext
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
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')
-rw-r--r--ext/pulse/pulsesink.c5
-rw-r--r--ext/pulse/pulsesink.h1
2 files changed, 5 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)
diff --git a/ext/pulse/pulsesink.h b/ext/pulse/pulsesink.h
index 70fd8a65..9ec626cd 100644
--- a/ext/pulse/pulsesink.h
+++ b/ext/pulse/pulsesink.h
@@ -68,6 +68,7 @@ struct _GstPulseSink
gboolean operation_success;
gboolean did_reset, in_write;
+ gboolean corked;
gint notify;
};