diff options
| author | Lennart Poettering <lennart@poettering.net> | 2010-02-22 04:54:24 +0100 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2010-02-22 04:54:24 +0100 | 
| commit | 250aeceb4d06ce326015d29b688d94e8f71a0cab (patch) | |
| tree | 3f6fe2253d46ae7cd4a015f4be99a4cee651b8e1 /src | |
| parent | 0b3d7c637cc9a65bf28f6fe8dac1629d1fa0ee6c (diff) | |
alsa: reset max_rewind/max_request while suspending
Diffstat (limited to 'src')
| -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;  }  | 
