[pulseaudio-discuss] [PATCH] Fix deferred volume not being applied if sink is closed

David Henningsson david.henningsson at canonical.com
Thu Oct 13 08:30:39 PDT 2011


Signed-off-by: David Henningsson <david.henningsson at canonical.com>
---
 src/modules/alsa/alsa-sink.c   |    8 ++++++--
 src/modules/alsa/alsa-source.c |    8 ++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c
index c868453..3a95251 100644
--- a/src/modules/alsa/alsa-sink.c
+++ b/src/modules/alsa/alsa-sink.c
@@ -1751,8 +1751,12 @@ static void thread_func(void *userdata) {
         if (u->sink->flags & PA_SINK_DEFERRED_VOLUME) {
             pa_usec_t volume_sleep;
             pa_sink_volume_change_apply(u->sink, &volume_sleep);
-            if (volume_sleep > 0)
-                rtpoll_sleep = PA_MIN(volume_sleep, rtpoll_sleep);
+            if (volume_sleep > 0) {
+                if (rtpoll_sleep > 0)
+                    rtpoll_sleep = PA_MIN(volume_sleep, rtpoll_sleep);
+                else
+                    rtpoll_sleep = volume_sleep;
+            }
         }
 
         if (rtpoll_sleep > 0)
diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c
index d544828..46b89a7 100644
--- a/src/modules/alsa/alsa-source.c
+++ b/src/modules/alsa/alsa-source.c
@@ -1452,8 +1452,12 @@ static void thread_func(void *userdata) {
         if (u->source->flags & PA_SOURCE_DEFERRED_VOLUME) {
             pa_usec_t volume_sleep;
             pa_source_volume_change_apply(u->source, &volume_sleep);
-            if (volume_sleep > 0)
-                rtpoll_sleep = PA_MIN(volume_sleep, rtpoll_sleep);
+            if (volume_sleep > 0) {
+                if (rtpoll_sleep > 0)
+                    rtpoll_sleep = PA_MIN(volume_sleep, rtpoll_sleep);
+                else
+                    rtpoll_sleep = volume_sleep;
+            }
         }
 
         if (rtpoll_sleep > 0)
-- 
1.7.5.4



More information about the pulseaudio-discuss mailing list