[Spice-devel] [PATCH v2 1/6] sound: Remove on_new_playback_channel_client()

Jonathon Jongsma jjongsma at redhat.com
Mon Apr 24 17:09:36 UTC 2017


This function is only called from the constructor, so move all of that
code into the constructor.

Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
---
 server/sound.c | 48 ++++++++++++++++++++----------------------------
 1 file changed, 20 insertions(+), 28 deletions(-)

diff --git a/server/sound.c b/server/sound.c
index 72dfefb..0e48255 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -1007,29 +1007,6 @@ static int snd_desired_audio_mode(bool playback_compression, int frequency,
     return SPICE_AUDIO_DATA_MODE_RAW;
 }
 
-static void on_new_playback_channel_client(SndChannel *channel, SndChannelClient *client)
-{
-    RedsState *reds = red_channel_get_server(RED_CHANNEL(channel));
-    RedClient *red_client = red_channel_client_get_client(RED_CHANNEL_CLIENT(client));
-
-    spice_assert(client);
-
-    channel->connection = client;
-    if (red_client_during_migrate_at_target(red_client)) {
-        return;
-    }
-    snd_set_command(client, SND_PLAYBACK_MODE_MASK);
-    if (client->active) {
-        snd_set_command(client, SND_CTRL_MASK);
-    }
-    if (channel->volume.volume_nchannels) {
-        snd_set_command(client, SND_VOLUME_MUTE_MASK);
-    }
-    if (client->active) {
-        reds_disable_mm_time(reds);
-    }
-}
-
 static void
 playback_channel_client_finalize(GObject *object)
 {
@@ -1058,14 +1035,17 @@ static void
 playback_channel_client_constructed(GObject *object)
 {
     PlaybackChannelClient *playback_client = PLAYBACK_CHANNEL_CLIENT(object);
-    RedChannel *red_channel = red_channel_client_get_channel(RED_CHANNEL_CLIENT(playback_client));
+    RedChannelClient *rcc = RED_CHANNEL_CLIENT(playback_client);
+    RedChannel *red_channel = red_channel_client_get_channel(rcc);
     SndChannel *channel = SND_CHANNEL(red_channel);
+    RedClient *red_client = red_channel_client_get_client(rcc);
+    RedsState *reds = red_channel_get_server(red_channel);
+    SndChannelClient *scc = SND_CHANNEL_CLIENT(playback_client);
 
     G_OBJECT_CLASS(playback_channel_client_parent_class)->constructed(object);
 
-    SND_CHANNEL_CLIENT(playback_client)->on_message_done = snd_playback_on_message_done;
+    scc->on_message_done = snd_playback_on_message_done;
 
-    RedChannelClient *rcc = RED_CHANNEL_CLIENT(playback_client);
     bool client_can_celt = red_channel_client_test_remote_cap(rcc,
                                           SPICE_PLAYBACK_CAP_CELT_0_5_1);
     bool client_can_opus = red_channel_client_test_remote_cap(rcc,
@@ -1086,12 +1066,24 @@ playback_channel_client_constructed(GObject *object)
     spice_debug("playback client %p using mode %s", playback_client,
                 spice_audio_data_mode_to_string(playback_client->mode));
 
-    on_new_playback_channel_client(channel, SND_CHANNEL_CLIENT(playback_client));
+    channel->connection = scc;
+    if (!red_client_during_migrate_at_target(red_client)) {
+        snd_set_command(scc, SND_PLAYBACK_MODE_MASK);
+        if (scc->active) {
+            snd_set_command(scc, SND_CTRL_MASK);
+        }
+        if (channel->volume.volume_nchannels) {
+            snd_set_command(scc, SND_VOLUME_MUTE_MASK);
+        }
+        if (scc->active) {
+            reds_disable_mm_time(reds);
+        }
+    }
 
     if (channel->active) {
         snd_playback_start(channel);
     }
-    snd_send(SND_CHANNEL_CLIENT(playback_client));
+    snd_send(scc);
 }
 
 static void snd_set_peer(RedChannel *red_channel, RedClient *client, RedsStream *stream,
-- 
2.9.3



More information about the Spice-devel mailing list