[Spice-devel] [PATCH spice-server] sound: Store only playback channels in global list

Frediano Ziglio fziglio at redhat.com
Wed May 3 09:47:48 UTC 2017


The list is used only to iterate playback channels

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

diff --git a/server/sound.c b/server/sound.c
index be7e607..64cd6d4 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -234,7 +234,7 @@ G_DEFINE_TYPE(RecordChannelClient, record_channel_client, TYPE_SND_CHANNEL_CLIEN
 
 
 /* A list of all Spice{Playback,Record}State objects */
-static GList *snd_channels;
+static GList *snd_playback_channels;
 
 static void snd_send(SndChannelClient * client);
 
@@ -980,12 +980,10 @@ void snd_set_playback_latency(RedClient *client, uint32_t latency)
 {
     GList *l;
 
-    for (l = snd_channels; l != NULL; l = l->next) {
+    for (l = snd_playback_channels; l != NULL; l = l->next) {
         SndChannel *now = l->data;
         SndChannelClient *scc = snd_channel_get_client(now);
-        uint32_t type;
-        g_object_get(RED_CHANNEL(now), "channel-type", &type, NULL);
-        if (type == SPICE_CHANNEL_PLAYBACK && scc &&
+        if (scc &&
             red_channel_client_get_client(RED_CHANNEL_CLIENT(scc)) == client) {
 
             if (red_channel_client_test_remote_cap(RED_CHANNEL_CLIENT(scc),
@@ -1285,12 +1283,12 @@ static void snd_set_record_peer(RedChannel *red_channel, RedClient *client, Reds
 
 static void add_channel(SndChannel *channel)
 {
-    snd_channels = g_list_prepend(snd_channels, channel);
+    snd_playback_channels = g_list_prepend(snd_playback_channels, channel);
 }
 
 static void remove_channel(SndChannel *channel)
 {
-    snd_channels = g_list_remove(snd_channels, channel);
+    snd_playback_channels = g_list_remove(snd_playback_channels, channel);
 }
 
 static void
@@ -1396,7 +1394,6 @@ record_channel_constructed(GObject *object)
     }
     red_channel_set_cap(RED_CHANNEL(self), SPICE_RECORD_CAP_VOLUME);
 
-    add_channel(self);
     reds_register_channel(reds, RED_CHANNEL(self));
 }
 
@@ -1448,12 +1445,10 @@ void snd_set_playback_compression(bool on)
 {
     GList *l;
 
-    for (l = snd_channels; l != NULL; l = l->next) {
+    for (l = snd_playback_channels; l != NULL; l = l->next) {
         SndChannel *now = l->data;
         SndChannelClient *client = snd_channel_get_client(now);
-        uint32_t type;
-        g_object_get(RED_CHANNEL(now), "channel-type", &type, NULL);
-        if (type == SPICE_CHANNEL_PLAYBACK && client) {
+        if (client) {
             PlaybackChannelClient* playback = PLAYBACK_CHANNEL_CLIENT(client);
             RedChannelClient *rcc = RED_CHANNEL_CLIENT(playback);
             bool client_can_celt = red_channel_client_test_remote_cap(rcc,
-- 
2.9.3



More information about the Spice-devel mailing list