Currently MUTE and VOLUME commands use the same VOLUME mask. This commit introduces a separate SND_MUTE_MASK for MUTE commands to make things a bit more clear. Based on a patch from Frediano Ziglio <fziglio@xxxxxxxxxx> Signed-off-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> --- server/sound.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/server/sound.c b/server/sound.c index e1d6805..7941ea2 100644 --- a/server/sound.c +++ b/server/sound.c @@ -55,6 +55,7 @@ enum SndCommand { SND_MIGRATE, SND_CTRL, SND_VOLUME, + SND_MUTE, SND_END_COMMAND, }; @@ -67,6 +68,8 @@ enum PlaybackCommand { #define SND_MIGRATE_MASK (1 << SND_MIGRATE) #define SND_CTRL_MASK (1 << SND_CTRL) #define SND_VOLUME_MASK (1 << SND_VOLUME) +#define SND_MUTE_MASK (1 << SND_MUTE) +#define SND_VOLUME_MUTE_MASK (SND_VOLUME_MASK|SND_MUTE_MASK) #define SND_PLAYBACK_MODE_MASK (1 << SND_PLAYBACK_MODE) #define SND_PLAYBACK_PCM_MASK (1 << SND_PLAYBACK_PCM) @@ -872,12 +875,17 @@ static void snd_playback_send(void* data) client->command &= ~SND_CTRL_MASK; } if (client->command & SND_VOLUME_MASK) { - if (!snd_playback_send_volume(playback_client) || - !snd_playback_send_mute(playback_client)) { + if (!snd_playback_send_volume(playback_client)) { return; } client->command &= ~SND_VOLUME_MASK; } + if (client->command & SND_MUTE_MASK) { + if (!snd_playback_send_mute(playback_client)) { + return; + } + client->command &= ~SND_MUTE_MASK; + } if (client->command & SND_MIGRATE_MASK) { if (!snd_playback_send_migrate(playback_client)) { return; @@ -910,12 +918,17 @@ static void snd_record_send(void* data) client->command &= ~SND_CTRL_MASK; } if (client->command & SND_VOLUME_MASK) { - if (!snd_record_send_volume(record_client) || - !snd_record_send_mute(record_client)) { + if (!snd_record_send_volume(record_client)) { return; } client->command &= ~SND_VOLUME_MASK; } + if (client->command & SND_MUTE_MASK) { + if (!snd_record_send_mute(record_client)) { + return; + } + client->command &= ~SND_MUTE_MASK; + } if (client->command & SND_MIGRATE_MASK) { if (!snd_record_send_migrate(record_client)) { return; @@ -1259,7 +1272,7 @@ static void on_new_playback_channel_client(SndChannel *channel, SndChannelClient snd_set_command(client, SND_CTRL_MASK); } if (channel->volume.volume_nchannels) { - snd_set_command(client, SND_VOLUME_MASK); + snd_set_command(client, SND_VOLUME_MUTE_MASK); } if (client->active) { reds_disable_mm_time(reds); @@ -1515,7 +1528,7 @@ static void on_new_record_channel_client(SndChannel *channel, SndChannelClient * channel->connection = client; if (channel->volume.volume_nchannels) { - snd_set_command(client, SND_VOLUME_MASK); + snd_set_command(client, SND_VOLUME_MUTE_MASK); } if (client->active) { snd_set_command(client, SND_CTRL_MASK); -- 2.9.3 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel