diff options
author | Jan Schmidt <thaytan@noraisin.net> | 2009-03-20 13:27:59 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-03-20 13:27:59 +0000 |
commit | b39d090a499c114d039aa27ca4329a2cda6b181b (patch) | |
tree | a94c7fa826bfed73bddd883b495eaccbdeceadcb | |
parent | 120e6bfc5c187eb6482fe13f4f55cf869feee896 (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.c | 5 | ||||
-rw-r--r-- | ext/pulse/pulsesink.h | 1 |
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; }; |