[PATCH v2] sink/source: Fix restore of volume on devices without hw volume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2014-08-29 at 08:36 +0200, David Henningsson wrote:
> Module-device-restore sets reference_volume, but soft_volume remains at
> zero dB, so if a device only has soft_volume (i e no hw volume controls),
> its volume was not restored correctly.
> 
> Reported-by: Richardo Salveti de Araujo <ricardo.salveti at canonical.com>
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>  src/pulsecore/sink.c   | 4 +++-
>  src/pulsecore/source.c | 4 +++-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> v2: Changed real_volume to reference_volume
> 
> diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
> index 274fe83..a8a865b 100644
> --- a/src/pulsecore/sink.c
> +++ b/src/pulsecore/sink.c
> @@ -613,8 +613,10 @@ void pa_sink_put(pa_sink* s) {
>       * the sink implementor to set this flag as needed.
>       *
>       * Note: This flag can also change over the life time of the sink. */
> -    if (!(s->flags & PA_SINK_HW_VOLUME_CTRL) && !(s->flags & PA_SINK_SHARE_VOLUME_WITH_MASTER))
> +    if (!(s->flags & PA_SINK_HW_VOLUME_CTRL) && !(s->flags & PA_SINK_SHARE_VOLUME_WITH_MASTER)) {
>          pa_sink_enable_decibel_volume(s, true);
> +        s->soft_volume = s->reference_volume;
> +    }
>  
>      /* If the sink implementor support DB volumes by itself, we should always
>       * try and enable flat volumes too */
> diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
> index aabe7ad..6d32666 100644
> --- a/src/pulsecore/source.c
> +++ b/src/pulsecore/source.c
> @@ -564,8 +564,10 @@ void pa_source_put(pa_source *s) {
>       * the source implementor to set this flag as needed.
>       *
>       * Note: This flag can also change over the life time of the source. */
> -    if (!(s->flags & PA_SOURCE_HW_VOLUME_CTRL) && !(s->flags & PA_SOURCE_SHARE_VOLUME_WITH_MASTER))
> +    if (!(s->flags & PA_SOURCE_HW_VOLUME_CTRL) && !(s->flags & PA_SOURCE_SHARE_VOLUME_WITH_MASTER)) {
>          pa_source_enable_decibel_volume(s, true);
> +        s->soft_volume = s->reference_volume;
> +    }
>  
>      /* If the source implementor support DB volumes by itself, we should always
>       * try and enable flat volumes too */

Looks good to me.

-- 
Tanu



[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux