mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
native: rework handling of seeks that depend on variables the client does not know anything about
All seeks/flushes that depend on the playback buffer read pointer cannot be accounted for properly in the client since it does not know the actual read pointer. Due to that the clients do not account for it at all. We need do the same on the server side. And we did, but a little bit too extreme. While we properly have not applied the changes to the "request" counter we still do have to apply it to the "missing" counter. This patch fixes that.
This commit is contained in:
parent
d090995262
commit
66cfa72eb4
7 changed files with 20 additions and 9 deletions
|
|
@ -562,7 +562,7 @@ static int sink_input_process_msg(pa_msgobject *obj, int code, void *data, int64
|
|||
if (PA_SINK_IS_OPENED(o->sink_input->sink->thread_info.state))
|
||||
pa_memblockq_push_align(o->memblockq, chunk);
|
||||
else
|
||||
pa_memblockq_flush_write(o->memblockq);
|
||||
pa_memblockq_flush_write(o->memblockq, TRUE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -982,7 +982,7 @@ static void output_disable(struct output *o) {
|
|||
o->sink_input = NULL;
|
||||
|
||||
/* Finally, drop all queued data */
|
||||
pa_memblockq_flush_write(o->memblockq);
|
||||
pa_memblockq_flush_write(o->memblockq, TRUE);
|
||||
pa_asyncmsgq_flush(o->inq, FALSE);
|
||||
pa_asyncmsgq_flush(o->outq, FALSE);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue