summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-02-22 04:54:24 +0100
committerLennart Poettering <lennart@poettering.net>2010-02-22 04:54:24 +0100
commit250aeceb4d06ce326015d29b688d94e8f71a0cab (patch)
tree3f6fe2253d46ae7cd4a015f4be99a4cee651b8e1
parent0b3d7c637cc9a65bf28f6fe8dac1629d1fa0ee6c (diff)
alsa: reset max_rewind/max_request while suspending
-rw-r--r--src/modules/alsa/alsa-sink.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index 690480f79..60c10c49f 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;
}