[Spice-devel] [spice-server v2 3/6] Make RedCharDeviceWriteBuffer::client private
Christophe Fergeau
cfergeau at redhat.com
Fri Apr 28 09:10:59 UTC 2017
Signed-off-by: Christophe Fergeau <cfergeau at redhat.com>
---
server/char-device.c | 22 ++++++++++++----------
server/char-device.h | 3 ---
2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/server/char-device.c b/server/char-device.c
index e3c3ef7aa..7c7a98696 100644
--- a/server/char-device.c
+++ b/server/char-device.c
@@ -33,6 +33,8 @@
struct RedCharDeviceWriteBufferPrivate {
int origin;
+ RedClient *client; /* The client that sent the message to the device.
+ NULL if the server created the message */
};
typedef struct RedCharDeviceClient RedCharDeviceClient;
@@ -166,7 +168,7 @@ static void red_char_device_write_buffer_pool_add(RedCharDevice *dev,
dev->priv->cur_pool_size < MAX_POOL_SIZE) {
buf->buf_used = 0;
buf->priv->origin = WRITE_BUFFER_ORIGIN_NONE;
- buf->client = NULL;
+ buf->priv->client = NULL;
dev->priv->cur_pool_size += buf->buf_size;
g_queue_push_head(&dev->priv->write_bufs_pool, buf);
return;
@@ -194,7 +196,7 @@ static void red_char_device_client_free(RedCharDevice *dev,
next = l->next;
if (write_buf->priv->origin == WRITE_BUFFER_ORIGIN_CLIENT &&
- write_buf->client == dev_client->client) {
+ write_buf->priv->client == dev_client->client) {
g_queue_delete_link(&dev->priv->write_queue, l);
red_char_device_write_buffer_pool_add(dev, write_buf);
}
@@ -202,9 +204,9 @@ static void red_char_device_client_free(RedCharDevice *dev,
}
if (dev->priv->cur_write_buf && dev->priv->cur_write_buf->priv->origin == WRITE_BUFFER_ORIGIN_CLIENT &&
- dev->priv->cur_write_buf->client == dev_client->client) {
+ dev->priv->cur_write_buf->priv->client == dev_client->client) {
dev->priv->cur_write_buf->priv->origin = WRITE_BUFFER_ORIGIN_NONE;
- dev->priv->cur_write_buf->client = NULL;
+ dev->priv->cur_write_buf->priv->client = NULL;
}
dev->priv->clients = g_list_remove(dev->priv->clients, dev_client);
@@ -566,7 +568,7 @@ static RedCharDeviceWriteBuffer *__red_char_device_write_buffer_get(
red_char_device_handle_client_overflow(dev_client);
goto error;
}
- ret->client = client;
+ ret->priv->client = client;
if (!migrated_data_tokens && dev_client->do_flow_control) {
dev_client->num_client_tokens--;
}
@@ -628,8 +630,8 @@ void red_char_device_write_buffer_add(RedCharDevice *dev,
spice_assert(dev);
/* caller shouldn't add buffers for client that was removed */
if (write_buf->priv->origin == WRITE_BUFFER_ORIGIN_CLIENT &&
- !red_char_device_client_find(dev, write_buf->client)) {
- spice_printerr("client not found: dev %p client %p", dev, write_buf->client);
+ !red_char_device_client_find(dev, write_buf->priv->client)) {
+ spice_printerr("client not found: dev %p client %p", dev, write_buf->priv->client);
red_char_device_write_buffer_pool_add(dev, write_buf);
return;
}
@@ -649,7 +651,7 @@ void red_char_device_write_buffer_release(RedCharDevice *dev,
int buf_origin = write_buf->priv->origin;
uint32_t buf_token_price = write_buf->token_price;
- RedClient *client = write_buf->client;
+ RedClient *client = write_buf->priv->client;
if (!dev) {
spice_printerr("no device. write buffer is freed");
@@ -905,7 +907,7 @@ void red_char_device_migrate_data_marshall(RedCharDevice *dev,
);
*write_to_dev_size_ptr += buf_remaining;
if (dev->priv->cur_write_buf->priv->origin == WRITE_BUFFER_ORIGIN_CLIENT) {
- spice_assert(dev->priv->cur_write_buf->client == dev_client->client);
+ spice_assert(dev->priv->cur_write_buf->priv->client == dev_client->client);
(*write_to_dev_tokens_ptr) += dev->priv->cur_write_buf->token_price;
}
}
@@ -919,7 +921,7 @@ void red_char_device_migrate_data_marshall(RedCharDevice *dev,
);
*write_to_dev_size_ptr += write_buf->buf_used;
if (write_buf->priv->origin == WRITE_BUFFER_ORIGIN_CLIENT) {
- spice_assert(write_buf->client == dev_client->client);
+ spice_assert(write_buf->priv->client == dev_client->client);
(*write_to_dev_tokens_ptr) += write_buf->token_price;
}
}
diff --git a/server/char-device.h b/server/char-device.h
index df15cfdff..0dd493c4d 100644
--- a/server/char-device.h
+++ b/server/char-device.h
@@ -148,9 +148,6 @@ GType red_char_device_get_type(void) G_GNUC_CONST;
/* buffer that is used for writing to the device */
typedef struct RedCharDeviceWriteBufferPrivate RedCharDeviceWriteBufferPrivate;
typedef struct RedCharDeviceWriteBuffer {
- RedClient *client; /* The client that sent the message to the device.
- NULL if the server created the message */
-
uint8_t *buf;
uint32_t buf_size;
uint32_t buf_used;
--
2.12.2
More information about the Spice-devel
mailing list