]> code.delx.au - pulseaudio/blobdiff - polyp/module-oss.c
correct latency calculation
[pulseaudio] / polyp / module-oss.c
index 51cc42ef7880c4f4a66c5b20fd230e12a00112dc..b4e011d84fb486c387e0f36b59894edf9b222b35 100644 (file)
@@ -162,6 +162,7 @@ static void io_callback(struct pa_iochannel *io, void*userdata) {
 }
 
 static pa_usec_t sink_get_latency_cb(struct pa_sink *s) {
+    pa_usec_t r = 0;
     int arg;
     struct userdata *u = s->userdata;
     assert(s && u && u->sink);
@@ -172,7 +173,12 @@ static pa_usec_t sink_get_latency_cb(struct pa_sink *s) {
         return 0;
     }
 
-    return pa_bytes_to_usec(arg, &s->sample_spec);
+    r += pa_bytes_to_usec(arg, &s->sample_spec);
+
+    if (u->memchunk.memblock)
+        r += pa_bytes_to_usec(u->memchunk.length, &s->sample_spec);
+
+    return r;
 }
 
 int pa__init(struct pa_core *c, struct pa_module*m) {