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

Maarten Bosmans mkbosmans at gmail.com
Thu Oct 13 09:34:32 PDT 2011


2011/10/13 David Henningsson <david.henningsson at canonical.com>:
> 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;
> +            }

Why not simply:
  if (volume_sleep > 0) {
    if (rtpoll_sleep <= 0 || rtpoll_sleep > volume_sleep)
      rtpoll_sleep = volume_sleep;
  }

Or even:
  if (0 < volume_sleep && (rtpoll_sleep < 0 || volume_sleep < rtpoll_sleep))
    rtpoll_sleep = volume_sleep;

Maarten

>         }
>
>         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
>
> _______________________________________________
> pulseaudio-discuss mailing list
> pulseaudio-discuss at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss
>


More information about the pulseaudio-discuss mailing list