mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 14:36:24 +00:00
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:
parent
120e6bfc5c
commit
b39d090a49
2 changed files with 5 additions and 1 deletions
|
@ -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)
|
||||
|
|
|
@ -68,6 +68,7 @@ struct _GstPulseSink
|
|||
|
||||
gboolean operation_success;
|
||||
gboolean did_reset, in_write;
|
||||
gboolean corked;
|
||||
gint notify;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue