[Spice-devel] [PATCH] channel: Remove clients_num and use g_list_length

Frediano Ziglio fziglio at redhat.com
Wed Jun 1 14:58:37 UTC 2016


clients_num was no more updated correctly.
This fixes a regression introduced by
4028fb1c794ef2a212f22b024b1c39f460439e7b.
The number of client is quite small so there is no much reason
to cache the number of elements.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/display-channel.c     | 2 +-
 server/main-channel-client.c | 2 +-
 server/main-channel.c        | 2 +-
 server/red-channel.h         | 1 -
 server/red-worker.c          | 2 +-
 5 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/server/display-channel.c b/server/display-channel.c
index f3bdb73..2888cad 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -319,7 +319,7 @@ static void pipes_add_drawable_after(DisplayChannel *display,
         pipes_add_drawable(display, drawable);
         return;
     }
-    if (num_other_linked != display->common.base.clients_num) {
+    if (num_other_linked != g_list_length(display->common.base.clients)) {
         GList *link, *next;
         spice_debug("TODO: not O(n^2)");
         FOREACH_CLIENT(display, link, next, dcc) {
diff --git a/server/main-channel-client.c b/server/main-channel-client.c
index 2188ebb..acf1bd4 100644
--- a/server/main-channel-client.c
+++ b/server/main-channel-client.c
@@ -457,7 +457,7 @@ void main_channel_client_migrate_dst_complete(MainChannelClient *mcc)
 {
     if (mcc->mig_wait_prev_complete) {
         if (mcc->mig_wait_prev_try_seamless) {
-            spice_assert(mcc->base.channel->clients_num == 1);
+            spice_assert(g_list_length(mcc->base.channel->clients) == 1);
             red_channel_client_pipe_add_type(&mcc->base,
                                              RED_PIPE_ITEM_TYPE_MAIN_MIGRATE_BEGIN_SEAMLESS);
         } else {
diff --git a/server/main-channel.c b/server/main-channel.c
index 1a18200..42195e6 100644
--- a/server/main-channel.c
+++ b/server/main-channel.c
@@ -102,7 +102,7 @@ static int main_channel_handle_migrate_data(RedChannelClient *rcc,
     SpiceMigrateDataHeader *header = (SpiceMigrateDataHeader *)message;
 
     /* not supported with multi-clients */
-    spice_assert(rcc->channel->clients_num == 1);
+    spice_assert(g_list_length(rcc->channel->clients) == 1);
 
     if (size < sizeof(SpiceMigrateDataHeader) + sizeof(SpiceMigrateDataMain)) {
         spice_printerr("bad message size %u", size);
diff --git a/server/red-channel.h b/server/red-channel.h
index 1907ae6..5b38f57 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -306,7 +306,6 @@ struct RedChannel {
     // Maybe replace these logic with ref count?
     // TODO: rename to 'connected_clients'?
     GList *clients;
-    uint32_t clients_num;
 
     OutgoingHandlerInterface outgoing_cb;
     IncomingHandlerInterface incoming_cb;
diff --git a/server/red-worker.c b/server/red-worker.c
index e99c9a1..a14f55d 100644
--- a/server/red-worker.c
+++ b/server/red-worker.c
@@ -525,7 +525,7 @@ static void guest_set_client_capabilities(RedWorker *worker)
         return;
     }
     if ((worker->display_channel == NULL) ||
-        (RED_CHANNEL(worker->display_channel)->clients_num == 0)) {
+        (RED_CHANNEL(worker->display_channel)->clients == NULL)) {
         red_qxl_set_client_capabilities(worker->qxl, FALSE, caps);
     } else {
         // Take least common denominator
-- 
2.7.4



More information about the Spice-devel mailing list