summaryrefslogtreecommitdiffstats
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
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
-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;
};