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

Submitted by Frediano Ziglio on Dec. 8, 2016, 2:34 p.m.

Details

Message ID 1d3d7ce427fb466c73a54c792ffb7ec459e820d3.1481207675.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. 8, 2016, 2:34 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 d6896d5..df5094c 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -825,12 +825,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);
@@ -843,10 +842,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;
 
@@ -857,6 +863,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;
@@ -1142,32 +1153,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)