[Spice-devel] [spice-server] sound: do not change volume or mute state on migration

Frediano Ziglio fziglio at redhat.com
Thu Nov 16 15:58:03 UTC 2017


> 
> From: Victor Toso <me at victortoso.com>
> 
> On migration, we are resending the current volume and mute state in
> the Guest.

Maybe is just me but this sentence is confusing. By "we" I think you
mean spice-server but the confusion came from the fact that is Qemu
that on the new machine try to send the volume to spice-server causing
a potential volume/mute message to be sent to the client.
Another part that is not clear is the "state in the Guest" I think you
are meaning we are sending the "current Guest state value".
I'll try to rephrase:
"On migration, Qemu notify spice-server with the current Guest volume
and mute state values which currently is handled forwarding these values
to the client."

>             If the client user has change its master volume in the
> guest it might change the client application volume too and the volume
> jump (increase or decrease) might happen on migration.
> 
> This patch is a complement of f10de4bc084fcc - Here, volume was
> jumping regardless of guest's volume value.
> 
> Resolves: rhbz#1425443
> Signed-off-by: Victor Toso <victortoso at redhat.com>
> ---
>  server/sound.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/server/sound.c b/server/sound.c
> index b1bfaaaa..c6c8bdc8 100644
> --- a/server/sound.c
> +++ b/server/sound.c
> @@ -414,6 +414,12 @@ static bool snd_send_volume(SndChannelClient *client,
> uint32_t cap, int msg)
>          return false;
>      }
>  
> +    /* Never changes volume or mute state on migration */
> +    if
> (red_client_during_migrate_at_target(red_channel_client_get_client(rcc))) {
> +        spice_debug("Do not change volume during migration");
> +        return FALSE;
> +    }
> +
>      vol = alloca(sizeof (SpiceMsgAudioVolume) +
>                   st->volume_nchannels * sizeof (uint16_t));
>      red_channel_client_init_send_data(rcc, msg);
> @@ -445,6 +451,12 @@ static bool snd_send_mute(SndChannelClient *client,
> uint32_t cap, int msg)
>          return false;
>      }
>  
> +   /* Never changes volume or mute state on migration */
> +   if
> (red_client_during_migrate_at_target(red_channel_client_get_client(rcc))) {
> +       spice_debug("Do not change mute during migration");
> +       return FALSE;
> +   }
> +
>      red_channel_client_init_send_data(rcc, msg);
>      mute.mute = st->mute;
>      spice_marshall_SpiceMsgAudioMute(m, &mute);

Frediano


More information about the Spice-devel mailing list