summaryrefslogtreecommitdiffstats
path: root/src/pulse/stream.c
diff options
context:
space:
mode:
authorArun Raghavan <arun.raghavan@collabora.co.uk>2011-01-11 23:58:25 +0530
committerColin Guthrie <cguthrie@mandriva.org>2011-01-15 16:08:45 +0000
commit3e552bdf19ac06be8377ec318ee405ea81400661 (patch)
treebf4916bf2f640cdc672bd9e36532ea4fcdc437a2 /src/pulse/stream.c
parentaefa94f05282bb1164be7d1812fff4c086d9d55b (diff)
client: Don't update smoother while corked
This prevents the smoother attached to the stream clock from being updated while the stream is corked, which in turn ensures that once corking is completed, pa_stream_get_time() always returns the same value until the stream is uncorked - i.e., the clock does not advance when the client believes that it will not. The actual call to pa_smoother_put() happens on things like stream suspend/unsuspend, which trigger timing updates. This changes the smoother coefficients, which means that a call to pa_smoother_get() for the same value of 'x' can return different values before and after a timing update.
Diffstat (limited to 'src/pulse/stream.c')
-rw-r--r--src/pulse/stream.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/pulse/stream.c b/src/pulse/stream.c
index 87c24ba8..addc36ae 100644
--- a/src/pulse/stream.c
+++ b/src/pulse/stream.c
@@ -1733,8 +1733,8 @@ static void stream_get_timing_info_callback(pa_pdispatch *pd, uint32_t command,
i->read_index -= (int64_t) pa_memblockq_get_length(o->stream->record_memblockq);
}
- /* Update smoother */
- if (o->stream->smoother) {
+ /* Update smoother if we're not corked */
+ if (o->stream->smoother && !o->stream->corked) {
pa_usec_t u, x;
u = x = pa_rtclock_now() - i->transport_usec;