diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-02-22 04:54:24 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-02-22 05:06:33 +0100 |
commit | dd682d6f96fe7133b866c97b72edcb6136a9737c (patch) | |
tree | 3599cd2c8f00b5a0e8bf3df56e93e4d7e3969dfd /src/modules/alsa | |
parent | 522c446ddc2bf2f4467f9de16f8618fc544a94fe (diff) |
alsa: reset max_rewind/max_request while suspending
Diffstat (limited to 'src/modules/alsa')
-rw-r--r-- | src/modules/alsa/alsa-sink.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c index 690480f7..60c10c49 100644 --- a/src/modules/alsa/alsa-sink.c +++ b/src/modules/alsa/alsa-sink.c @@ -79,7 +79,7 @@ #define TSCHED_MIN_WAKEUP_USEC (4*PA_USEC_PER_MSEC) /* 4ms -- Wakeup at least this long before the buffer runs empty*/ #define SMOOTHER_MIN_INTERVAL (2*PA_USEC_PER_MSEC) /* 2ms -- min smoother update interval */ -#define SMOOTHER_MAX_INTERVAL (200*PA_USEC_PER_MSEC) /* 200ms -- max smoother update inteval */ +#define SMOOTHER_MAX_INTERVAL (200*PA_USEC_PER_MSEC) /* 200ms -- max smoother update interval */ #define VOLUME_ACCURACY (PA_VOLUME_NORM/100) /* don't require volume adjustments to be perfectly correct. don't necessarily extend granularity in software unless the differences get greater than this level */ @@ -876,6 +876,14 @@ static int suspend(struct userdata *u) { u->alsa_rtpoll_item = NULL; } + /* We reset max_rewind/max_request here to make sure that while we + * are suspended the old max_request/max_rewind values set before + * the suspend can influence the per-stream buffer of newly + * created streams, without their requirements having any + * influence on them. */ + pa_sink_set_max_rewind_within_thread(u->sink, 0); + pa_sink_set_max_request_within_thread(u->sink, 0); + pa_log_info("Device suspended..."); return 0; @@ -933,6 +941,7 @@ static int update_sw_params(struct userdata *u) { } pa_sink_set_max_request_within_thread(u->sink, u->hwbuf_size - u->hwbuf_unused); + pa_sink_set_max_rewind_within_thread(u->sink, u->hwbuf_size); return 0; } |