[Spice-devel] [PATCH 3/5] Add red_channel_client_(set|is)_destroying()

Jonathon Jongsma jjongsma at redhat.com
Tue Aug 30 15:25:54 UTC 2016


Encapsulate the structure a bit more and avoid poking into it from other
class implementations. Getting ready to split RedChannelClient out to a
separate file.
---
 server/red-channel.c | 12 +++++++++++-
 server/red-channel.h |  2 ++
 server/spicevmc.c    |  2 +-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/server/red-channel.c b/server/red-channel.c
index 615c2a3..870296c 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -2111,7 +2111,7 @@ void red_client_destroy(RedClient *client)
         // is not synchronous.
         rcc = link->data;
         channel = red_channel_client_get_channel(rcc);
-        rcc->destroying = 1;
+        red_channel_client_set_destroying(rcc);
         // some channels may be in other threads. However we currently
         // assume disconnect is synchronous (we changed the dispatcher
         // to wait for disconnection)
@@ -2448,3 +2448,13 @@ RedChannel* red_channel_client_get_channel(RedChannelClient *rcc)
 {
     return rcc->channel;
 }
+
+gboolean red_channel_client_is_destroying(RedChannelClient *rcc)
+{
+    return rcc->destroying;
+}
+
+void red_channel_client_set_destroying(RedChannelClient *rcc)
+{
+    rcc->destroying = TRUE;
+}
diff --git a/server/red-channel.h b/server/red-channel.h
index 039ac09..e528d08 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -629,5 +629,7 @@ int red_channel_wait_all_sent(RedChannel *channel,
                               int64_t timeout);
 void red_channel_client_disconnect_if_pending_send(RedChannelClient *rcc);
 RedChannel* red_channel_client_get_channel(RedChannelClient *rcc);
+gboolean red_channel_client_is_destroying(RedChannelClient *rcc);
+void red_channel_client_set_destroying(RedChannelClient *rcc);
 
 #endif
diff --git a/server/spicevmc.c b/server/spicevmc.c
index 5e310a6..4e9dd0d 100644
--- a/server/spicevmc.c
+++ b/server/spicevmc.c
@@ -306,7 +306,7 @@ static void spicevmc_red_channel_client_on_disconnect(RedChannelClient *rcc)
 
     /* Don't destroy the rcc if it is already being destroyed, as then
        red_client_destroy/red_channel_client_destroy will already do this! */
-    if (!rcc->destroying)
+    if (!red_channel_client_is_destroying(rcc))
         red_channel_client_destroy(rcc);
 
     state->rcc = NULL;
-- 
2.7.4



More information about the Spice-devel mailing list