summaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-01-18 01:33:04 +0100
committerLennart Poettering <lennart@poettering.net>2010-01-18 01:33:04 +0100
commit84782f24c5f43456430c796bd12f9face24f0573 (patch)
tree984295c0a0b7b4223e9c3dc86eaf20e14cc49977 /src/modules
parent52c66b47664d47154b2c8368e32beef27d4b2d03 (diff)
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.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/module-combine.c4
-rw-r--r--src/modules/module-loopback.c4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/modules/module-combine.c b/src/modules/module-combine.c
index 62e62679..cffb901b 100644
--- a/src/modules/module-combine.c
+++ b/src/modules/module-combine.c
@@ -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);
}
diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c
index bb0182b0..15ef96ef 100644
--- a/src/modules/module-loopback.c
+++ b/src/modules/module-loopback.c
@@ -430,7 +430,7 @@ static int sink_input_process_msg_cb(pa_msgobject *obj, int code, void *data, in
if (PA_SINK_IS_OPENED(u->sink_input->sink->thread_info.state))
pa_memblockq_push_align(u->memblockq, chunk);
else
- pa_memblockq_flush_write(u->memblockq);
+ pa_memblockq_flush_write(u->memblockq, TRUE);
update_min_memblockq_length(u);
@@ -457,7 +457,7 @@ static int sink_input_process_msg_cb(pa_msgobject *obj, int code, void *data, in
if (PA_SINK_IS_OPENED(u->sink_input->sink->thread_info.state))
pa_memblockq_seek(u->memblockq, -offset, PA_SEEK_RELATIVE, TRUE);
else
- pa_memblockq_flush_write(u->memblockq);
+ pa_memblockq_flush_write(u->memblockq, TRUE);
u->recv_counter -= offset;