[Spice-devel] [PATCH 12/18] Add reference to server in RedClient

Frediano Ziglio fziglio at redhat.com
Thu Feb 4 15:57:44 UTC 2016


From: Jonathon Jongsma <jjongsma at redhat.com>

Allows client methods to not use global 'reds' variable
---
 server/red-channel.c | 5 +++--
 server/red-channel.h | 3 ++-
 server/reds.c        | 2 +-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/server/red-channel.c b/server/red-channel.c
index 1ca85b1..1db68ef 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -2046,11 +2046,12 @@ void red_channel_client_pipe_remove_and_release(RedChannelClient *rcc,
  * pretty tied together.
  */
 
-RedClient *red_client_new(int migrated)
+RedClient *red_client_new(RedsState *reds, int migrated)
 {
     RedClient *client;
 
     client = spice_malloc0(sizeof(RedClient));
+    client->reds = reds;
     ring_init(&client->channels);
     pthread_mutex_init(&client->lock, NULL);
     client->thread_id = pthread_self();
@@ -2212,7 +2213,7 @@ void red_client_semi_seamless_migrate_complete(RedClient *client)
         }
     }
     pthread_mutex_unlock(&client->lock);
-    reds_on_client_semi_seamless_migrate_complete(reds, client);
+    reds_on_client_semi_seamless_migrate_complete(client->reds, client);
 }
 
 /* should be called only from the main thread */
diff --git a/server/red-channel.h b/server/red-channel.h
index 791bc5b..4bd4136 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -564,6 +564,7 @@ typedef void (*channel_client_callback_data)(RedChannelClient *rcc, void *data);
 void red_channel_apply_clients(RedChannel *channel, channel_client_callback v);
 
 struct RedClient {
+    RedsState *reds;
     RingItem link;
     Ring channels;
     int channels_num;
@@ -585,7 +586,7 @@ struct RedClient {
     int refs;
 };
 
-RedClient *red_client_new(int migrated);
+RedClient *red_client_new(RedsState *reds, int migrated);
 
 /*
  * disconnects all the client's channels (should be called from the client's thread)
diff --git a/server/reds.c b/server/reds.c
index b30c4c6..fe35d84 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -1647,7 +1647,7 @@ static void reds_handle_main_link(RedsState *reds, RedLinkInfo *link)
     link->link_mess = NULL;
     reds_link_free(link);
     caps = (uint32_t *)((uint8_t *)link_mess + link_mess->caps_offset);
-    client = red_client_new(mig_target);
+    client = red_client_new(reds, mig_target);
     ring_add(&reds->clients, &client->link);
     reds->num_clients++;
     mcc = main_channel_link(reds->main_channel, client,
-- 
2.5.0



More information about the Spice-devel mailing list