[PATCH spice-server 3/6] red-channel: Add red_channel_pipes_add function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Considering that now RedPipeItem have reference counting
and that lot of items are just used to store constant
data to send, using reference counting instead of creating
different items for each client is easier to do.
So this new red_channel_pipes_add allows to add a single item
to all clients.

Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx>
---
 server/red-channel.c | 12 ++++++++++++
 server/red-channel.h |  2 ++
 2 files changed, 14 insertions(+)

diff --git a/server/red-channel.c b/server/red-channel.c
index 9ff3474a..6e8e9c6b 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -430,6 +430,18 @@ void red_channel_init_outgoing_messages_window(RedChannel *channel)
                    (GFunc)red_channel_client_init_outgoing_messages_window, NULL);
 }
 
+void red_channel_pipes_add(RedChannel *channel, RedPipeItem *item)
+{
+    RedChannelClient *rcc;
+
+    FOREACH_CLIENT(channel, rcc) {
+        red_pipe_item_ref(item);
+        red_channel_client_pipe_add(rcc, item);
+    }
+
+    red_pipe_item_unref(item);
+}
+
 static void red_channel_client_pipe_add_type_proxy(gpointer data, gpointer user_data)
 {
     int type = GPOINTER_TO_INT(user_data);
diff --git a/server/red-channel.h b/server/red-channel.h
index e65eea1e..c965baee 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -174,6 +174,8 @@ void red_channel_pipes_add_type(RedChannel *channel, int pipe_item_type);
 
 void red_channel_pipes_add_empty_msg(RedChannel *channel, int msg_type);
 
+void red_channel_pipes_add(RedChannel *channel, RedPipeItem *item);
+
 /* return TRUE if all of the connected clients to this channel are blocked */
 bool red_channel_all_blocked(RedChannel *channel);
 
-- 
2.13.5

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]