mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-18 07:00:06 -05:00
stream: use the stream drain method to drain
This commit is contained in:
parent
23a875e2bf
commit
f9fce3cb30
1 changed files with 16 additions and 9 deletions
25
src/stream.c
25
src/stream.c
|
|
@ -493,15 +493,6 @@ static void stream_process(void *data)
|
|||
|
||||
update_timing_info(s);
|
||||
|
||||
if (s->drain && s->queued == 0) {
|
||||
pa_operation *o = s->drain;
|
||||
pa_operation_ref(o);
|
||||
if (o->callback)
|
||||
o->callback(o, o->userdata);
|
||||
pa_operation_unref(o);
|
||||
s->drain = NULL;
|
||||
}
|
||||
|
||||
while (dequeue_buffer(s) == 0);
|
||||
|
||||
if (s->dequeued_size <= 0)
|
||||
|
|
@ -517,6 +508,20 @@ static void stream_process(void *data)
|
|||
}
|
||||
}
|
||||
|
||||
static void stream_drained(void *data)
|
||||
{
|
||||
pa_stream *s = data;
|
||||
|
||||
if (s->drain) {
|
||||
pa_operation *o = s->drain;
|
||||
pa_operation_ref(o);
|
||||
if (o->callback)
|
||||
o->callback(o, o->userdata);
|
||||
pa_operation_unref(o);
|
||||
s->drain = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static const struct pw_stream_events stream_events =
|
||||
{
|
||||
PW_VERSION_STREAM_EVENTS,
|
||||
|
|
@ -526,6 +531,7 @@ static const struct pw_stream_events stream_events =
|
|||
.add_buffer = stream_add_buffer,
|
||||
.remove_buffer = stream_remove_buffer,
|
||||
.process = stream_process,
|
||||
.drained = stream_drained,
|
||||
};
|
||||
|
||||
static pa_stream* stream_new(pa_context *c, const char *name,
|
||||
|
|
@ -1320,6 +1326,7 @@ pa_operation* pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *use
|
|||
PA_CHECK_VALIDITY_RETURN_NULL(s->context, s->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE);
|
||||
|
||||
pw_log_debug("stream %p", s);
|
||||
pw_stream_flush(s->stream, true);
|
||||
o = pa_operation_new(s->context, s, on_success, sizeof(struct success_ack));
|
||||
d = o->userdata;
|
||||
d->cb = cb;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue