[Spice-devel] [PATCH spice-server v2 2/2] smartcard: Use RedChannelClient as the type for RedCharDevice client

Frediano Ziglio fziglio at redhat.com
Sun Jun 2 19:32:26 UTC 2019


As now is an opaque type for RedCharDevice use the type that
better suits us.
This avoid useless conversions or look ups.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/smartcard-channel-client.c |  5 +++--
 server/smartcard.c                | 16 ++++++++--------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/server/smartcard-channel-client.c b/server/smartcard-channel-client.c
index e22b39adf..3d1b446e3 100644
--- a/server/smartcard-channel-client.c
+++ b/server/smartcard-channel-client.c
@@ -16,6 +16,8 @@
 */
 #include <config.h>
 
+#define RedCharDeviceClientOpaque RedChannelClient
+
 #include "smartcard-channel-client.h"
 
 struct SmartCardChannelClientPrivate
@@ -121,7 +123,6 @@ smartcard_channel_client_alloc_msg_rcv_buf(RedChannelClient *rcc,
                                            uint16_t type, uint32_t size)
 {
     SmartCardChannelClient *scc = SMARTCARD_CHANNEL_CLIENT(rcc);
-    RedClient *client = red_channel_client_get_client(rcc);
 
     /* todo: only one reader is actually supported. When we fix the code to support
      * multiple readers, we will porbably associate different devices to
@@ -137,7 +138,7 @@ smartcard_channel_client_alloc_msg_rcv_buf(RedChannelClient *rcc,
         spice_assert(smartcard_char_device_get_client(smartcard) || scc->priv->smartcard);
         spice_assert(!scc->priv->write_buf);
         scc->priv->write_buf =
-            red_char_device_write_buffer_get_client(RED_CHAR_DEVICE(smartcard), client, size);
+            red_char_device_write_buffer_get_client(RED_CHAR_DEVICE(smartcard), rcc, size);
 
         if (!scc->priv->write_buf) {
             spice_error("failed to allocate write buffer");
diff --git a/server/smartcard.c b/server/smartcard.c
index e6d3b6ace..17794b06f 100644
--- a/server/smartcard.c
+++ b/server/smartcard.c
@@ -22,6 +22,8 @@
 #include <libcacard.h>
 #endif
 
+#define RedCharDeviceClientOpaque RedChannelClient
+
 #include "reds.h"
 #include "char-device.h"
 #include "smartcard.h"
@@ -164,24 +166,22 @@ static RedPipeItem *smartcard_read_msg_from_device(RedCharDevice *self,
  * so no mutex is required. */
 static void smartcard_send_msg_to_client(RedCharDevice *self,
                                          RedPipeItem *msg,
-                                         RedClient *client)
+                                         RedChannelClient *client)
 {
     RedCharDeviceSmartcard *dev = RED_CHAR_DEVICE_SMARTCARD(self);
     RedChannelClient *rcc = RED_CHANNEL_CLIENT(dev->priv->scc);
 
-    spice_assert(dev->priv->scc &&
-                 red_channel_client_get_client(rcc) == client);
+    spice_assert(dev->priv->scc && rcc == client);
     red_pipe_item_ref(msg);
     red_channel_client_pipe_add_push(rcc, msg);
 }
 
-static void smartcard_remove_client(RedCharDevice *self, RedClient *client)
+static void smartcard_remove_client(RedCharDevice *self, RedChannelClient *client)
 {
     RedCharDeviceSmartcard *dev = RED_CHAR_DEVICE_SMARTCARD(self);
     RedChannelClient *rcc = RED_CHANNEL_CLIENT(dev->priv->scc);
 
-    spice_assert(dev->priv->scc &&
-                 red_channel_client_get_client(rcc) == client);
+    spice_assert(dev->priv->scc && rcc == client);
     red_channel_client_shutdown(rcc);
 }
 
@@ -305,7 +305,7 @@ void smartcard_char_device_attach_client(SpiceCharDeviceInstance *char_device,
     dev->priv->scc = scc;
     smartcard_channel_client_set_char_device(scc, dev);
     client_added = red_char_device_client_add(RED_CHAR_DEVICE(dev),
-                                              red_channel_client_get_client(RED_CHANNEL_CLIENT(scc)),
+                                              RED_CHANNEL_CLIENT(scc),
                                               FALSE, /* no flow control yet */
                                               0, /* send queue size */
                                               ~0,
@@ -362,7 +362,7 @@ void smartcard_char_device_detach_client(RedCharDeviceSmartcard *smartcard,
 
     spice_assert(smartcard->priv->scc == scc);
     red_char_device_client_remove(RED_CHAR_DEVICE(smartcard),
-                                  red_channel_client_get_client(RED_CHANNEL_CLIENT(scc)));
+                                  RED_CHANNEL_CLIENT(scc));
     smartcard_channel_client_set_char_device(scc, NULL);
     smartcard->priv->scc = NULL;
 
-- 
2.20.1



More information about the Spice-devel mailing list