pulse: delay smoother update only when unpausing, not when pausing, since we don't want the timer to advance when we are supposedly already paused

This commit is contained in:
Lennart Poettering 2009-11-20 19:48:08 +01:00
parent a3b5a94488
commit f05ae357b6

View file

@ -376,22 +376,6 @@ static void check_smoother_status(pa_stream *s, pa_bool_t aposteriori, pa_bool_t
if (!s->smoother) if (!s->smoother)
return; return;
if (!s->timing_info_valid &&
!aposteriori &&
!force_start &&
!force_stop &&
s->context->version >= 13) {
/* If the server supports STARTED and UNDERFLOW events we take
* them as indications when audio really starts/stops playing,
* if we don't have any timing info yet -- instead of trying
* to be smart and guessing the server time. Otherwise the
* unknown transport delay we don't know might add too much
* noise to our time calculations. */
return;
}
x = pa_rtclock_now(); x = pa_rtclock_now();
if (s->timing_info_valid) { if (s->timing_info_valid) {
@ -403,8 +387,26 @@ static void check_smoother_status(pa_stream *s, pa_bool_t aposteriori, pa_bool_t
if (s->suspended || s->corked || force_stop) if (s->suspended || s->corked || force_stop)
pa_smoother_pause(s->smoother, x); pa_smoother_pause(s->smoother, x);
else if (force_start || s->buffer_attr.prebuf == 0) else if (force_start || s->buffer_attr.prebuf == 0) {
if (!s->timing_info_valid &&
!aposteriori &&
!force_start &&
!force_stop &&
s->context->version >= 13) {
/* If the server supports STARTED events we take them as
* indications when audio really starts/stops playing, if
* we don't have any timing info yet -- instead of trying
* to be smart and guessing the server time. Otherwise the
* unknown transport delay add too much noise to our time
* calculations. */
return;
}
pa_smoother_resume(s->smoother, x, TRUE); pa_smoother_resume(s->smoother, x, TRUE);
}
/* Please note that we have no idea if playback actually started /* Please note that we have no idea if playback actually started
* if prebuf is non-zero! */ * if prebuf is non-zero! */