[Spice-devel] [PATCH v9 08/11] sound: Reuse code to set volume and mute

Frediano Ziglio fziglio at redhat.com
Tue Dec 20 17:44:37 UTC 2016


Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/sound.c | 51 +++++++++++++++++++++------------------------------
 1 file changed, 21 insertions(+), 30 deletions(-)

diff --git a/server/sound.c b/server/sound.c
index 32c712f..fc3a92c 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -827,12 +827,11 @@ static void snd_set_command(SndChannelClient *client, uint32_t command)
     client->command |= command;
 }
 
-SPICE_GNUC_VISIBLE void spice_server_playback_set_volume(SpicePlaybackInstance *sin,
-                                                  uint8_t nchannels,
-                                                  uint16_t *volume)
+static void snd_channel_set_volume(SndChannel *channel,
+                                   uint8_t nchannels, uint16_t *volume)
 {
-    SpiceVolumeState *st = &sin->st->channel.volume;
-    SndChannelClient *client = sin->st->channel.connection;
+    SpiceVolumeState *st = &channel->volume;
+    SndChannelClient *client = channel->connection;
 
     st->volume_nchannels = nchannels;
     free(st->volume);
@@ -845,10 +844,17 @@ SPICE_GNUC_VISIBLE void spice_server_playback_set_volume(SpicePlaybackInstance *
     snd_send(client);
 }
 
-SPICE_GNUC_VISIBLE void spice_server_playback_set_mute(SpicePlaybackInstance *sin, uint8_t mute)
+SPICE_GNUC_VISIBLE void spice_server_playback_set_volume(SpicePlaybackInstance *sin,
+                                                  uint8_t nchannels,
+                                                  uint16_t *volume)
 {
-    SpiceVolumeState *st = &sin->st->channel.volume;
-    SndChannelClient *client = sin->st->channel.connection;
+    snd_channel_set_volume(&sin->st->channel, nchannels, volume);
+}
+
+static void snd_channel_set_mute(SndChannel *channel, uint8_t mute)
+{
+    SpiceVolumeState *st = &channel->volume;
+    SndChannelClient *client = channel->connection;
 
     st->mute = mute;
 
@@ -859,6 +865,11 @@ SPICE_GNUC_VISIBLE void spice_server_playback_set_mute(SpicePlaybackInstance *si
     snd_send(client);
 }
 
+SPICE_GNUC_VISIBLE void spice_server_playback_set_mute(SpicePlaybackInstance *sin, uint8_t mute)
+{
+    snd_channel_set_mute(&sin->st->channel, mute);
+}
+
 static void snd_playback_start(SndChannel *channel)
 {
     SndChannelClient *client = channel->connection;
@@ -1144,32 +1155,12 @@ SPICE_GNUC_VISIBLE void spice_server_record_set_volume(SpiceRecordInstance *sin,
                                                 uint8_t nchannels,
                                                 uint16_t *volume)
 {
-    SpiceVolumeState *st = &sin->st->channel.volume;
-    SndChannelClient *client = sin->st->channel.connection;
-
-    st->volume_nchannels = nchannels;
-    free(st->volume);
-    st->volume = spice_memdup(volume, sizeof(uint16_t) * nchannels);
-
-    if (!client || nchannels == 0)
-        return;
-
-    snd_set_command(client, SND_VOLUME_MUTE_MASK);
-    snd_send(client);
+    snd_channel_set_volume(&sin->st->channel, nchannels, volume);
 }
 
 SPICE_GNUC_VISIBLE void spice_server_record_set_mute(SpiceRecordInstance *sin, uint8_t mute)
 {
-    SpiceVolumeState *st = &sin->st->channel.volume;
-    SndChannelClient *client = sin->st->channel.connection;
-
-    st->mute = mute;
-
-    if (!client)
-        return;
-
-    snd_set_command(client, SND_VOLUME_MUTE_MASK);
-    snd_send(client);
+    snd_channel_set_mute(&sin->st->channel, mute);
 }
 
 static void snd_record_start(SndChannel *channel)
-- 
git-series 0.9.1


More information about the Spice-devel mailing list