mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-16 08:56:40 -05:00
alsa: throw timing data away after device resume
This commit is contained in:
parent
f6763917ee
commit
5efb07281d
5 changed files with 30 additions and 25 deletions
|
|
@ -899,9 +899,13 @@ static int unsuspend(struct userdata *u) {
|
||||||
if (build_pollfd(u) < 0)
|
if (build_pollfd(u) < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
u->write_count = 0;
|
||||||
|
pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
|
||||||
|
|
||||||
u->first = TRUE;
|
u->first = TRUE;
|
||||||
u->since_start = 0;
|
u->since_start = 0;
|
||||||
|
|
||||||
|
|
||||||
pa_log_info("Resumed successfully...");
|
pa_log_info("Resumed successfully...");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -1204,7 +1208,7 @@ static int process_rewind(struct userdata *u) {
|
||||||
if (rewind_nbytes <= 0)
|
if (rewind_nbytes <= 0)
|
||||||
pa_log_info("Tried rewind, but was apparently not possible.");
|
pa_log_info("Tried rewind, but was apparently not possible.");
|
||||||
else {
|
else {
|
||||||
u->write_count -= out_frames * u->frame_size;
|
u->write_count -= rewind_nbytes;
|
||||||
pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes);
|
pa_log_debug("Rewound %lu bytes.", (unsigned long) rewind_nbytes);
|
||||||
pa_sink_process_rewind(u->sink, rewind_nbytes);
|
pa_sink_process_rewind(u->sink, rewind_nbytes);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -854,7 +854,9 @@ static int unsuspend(struct userdata *u) {
|
||||||
/* FIXME: We need to reload the volume somehow */
|
/* FIXME: We need to reload the volume somehow */
|
||||||
|
|
||||||
snd_pcm_start(u->pcm_handle);
|
snd_pcm_start(u->pcm_handle);
|
||||||
pa_smoother_resume(u->smoother, pa_rtclock_now(), TRUE);
|
|
||||||
|
u->read_count = 0;
|
||||||
|
pa_smoother_reset(u->smoother, pa_rtclock_now(), TRUE);
|
||||||
|
|
||||||
pa_log_info("Resumed successfully...");
|
pa_log_info("Resumed successfully...");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,29 +108,11 @@ pa_smoother* pa_smoother_new(
|
||||||
s = pa_xnew(pa_smoother, 1);
|
s = pa_xnew(pa_smoother, 1);
|
||||||
s->adjust_time = adjust_time;
|
s->adjust_time = adjust_time;
|
||||||
s->history_time = history_time;
|
s->history_time = history_time;
|
||||||
s->time_offset = 0;
|
s->min_history = min_history;
|
||||||
s->monotonic = monotonic;
|
s->monotonic = monotonic;
|
||||||
|
|
||||||
s->px = s->py = 0;
|
|
||||||
s->dp = 1;
|
|
||||||
|
|
||||||
s->ex = s->ey = s->ry = 0;
|
|
||||||
s->de = 1;
|
|
||||||
|
|
||||||
s->history_idx = 0;
|
|
||||||
s->n_history = 0;
|
|
||||||
|
|
||||||
s->last_y = s->last_x = 0;
|
|
||||||
|
|
||||||
s->abc_valid = FALSE;
|
|
||||||
|
|
||||||
s->paused = FALSE;
|
|
||||||
s->smoothing = smoothing;
|
s->smoothing = smoothing;
|
||||||
|
|
||||||
s->min_history = min_history;
|
pa_smoother_reset(s, time_offset, paused);
|
||||||
|
|
||||||
s->paused = paused;
|
|
||||||
s->time_offset = s->pause_time = time_offset;
|
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
@ -514,9 +496,26 @@ pa_usec_t pa_smoother_translate(pa_smoother *s, pa_usec_t x, pa_usec_t y_delay)
|
||||||
return (pa_usec_t) llrint((double) y_delay / nde);
|
return (pa_usec_t) llrint((double) y_delay / nde);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pa_smoother_reset(pa_smoother *s) {
|
void pa_smoother_reset(pa_smoother *s, pa_usec_t time_offset, pa_bool_t paused) {
|
||||||
pa_assert(s);
|
pa_assert(s);
|
||||||
|
|
||||||
|
s->px = s->py = 0;
|
||||||
|
s->dp = 1;
|
||||||
|
|
||||||
|
s->ex = s->ey = s->ry = 0;
|
||||||
|
s->de = 1;
|
||||||
|
|
||||||
|
s->history_idx = 0;
|
||||||
s->n_history = 0;
|
s->n_history = 0;
|
||||||
|
|
||||||
|
s->last_y = s->last_x = 0;
|
||||||
|
|
||||||
s->abc_valid = FALSE;
|
s->abc_valid = FALSE;
|
||||||
|
|
||||||
|
s->paused = paused;
|
||||||
|
s->time_offset = s->pause_time = time_offset;
|
||||||
|
|
||||||
|
/* #ifdef DEBUG_DATA */
|
||||||
|
pa_log_debug("reset()");
|
||||||
|
/* #endif */
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ void pa_smoother_set_time_offset(pa_smoother *s, pa_usec_t x_offset);
|
||||||
void pa_smoother_pause(pa_smoother *s, pa_usec_t x);
|
void pa_smoother_pause(pa_smoother *s, pa_usec_t x);
|
||||||
void pa_smoother_resume(pa_smoother *s, pa_usec_t x, pa_bool_t abrupt);
|
void pa_smoother_resume(pa_smoother *s, pa_usec_t x, pa_bool_t abrupt);
|
||||||
|
|
||||||
void pa_smoother_reset(pa_smoother *s);
|
void pa_smoother_reset(pa_smoother *s, pa_usec_t time_offset, pa_bool_t paused);
|
||||||
|
|
||||||
void pa_smoother_fix_now(pa_smoother *s);
|
void pa_smoother_fix_now(pa_smoother *s);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue