[Spice-devel,v7,09/12] sound: Reuse code to set volume and mute

Submitted by Frediano Ziglio on Dec. 5, 2016, 12:07 p.m.

Details

Message ID d6ad170078b41e4a5ee7d1bcbf6bb428595872a4.1480939634.git-series.fziglio@redhat.com
State Accepted
Headers show
Series "Remove DummyChannel* objects" ( rev: 1 ) in Spice

Not browsing as part of any series.

Commit Message

Frediano Ziglio Dec. 5, 2016, 12:07 p.m.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
---
 server/sound.c | 51 +++++++++++++++++++++------------------------------
 1 file changed, 21 insertions(+), 30 deletions(-)

Patch hide | download patch | download mbox

diff --git a/server/sound.c b/server/sound.c
index 191e4fe..ed20125 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -824,12 +824,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);
@@ -842,10 +841,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;
 
@@ -856,6 +862,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;
@@ -1141,32 +1152,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)