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:
Lennart Poettering 2010-01-18 01:33:04 +01:00 committed by Colin Guthrie
parent d090995262
commit 66cfa72eb4
7 changed files with 20 additions and 9 deletions

View file

@ -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);
}