[Spice-devel] [PATCH spice-server 02/13] char-device: Pull more code into red_char_device_send_to_client_tokens_absorb
Frediano Ziglio
fziglio at redhat.com
Thu May 30 14:22:43 UTC 2019
The 2 callers red_char_device_send_to_client_tokens_set and
red_char_device_send_to_client_tokens_add are doing mostly
the same thing so put common code to
red_char_device_send_to_client_tokens_absorb.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/char-device.c | 42 +++++++++++++++++++-----------------------
1 file changed, 19 insertions(+), 23 deletions(-)
diff --git a/server/char-device.c b/server/char-device.c
index 0f6a29d6f..89581ea42 100644
--- a/server/char-device.c
+++ b/server/char-device.c
@@ -377,10 +377,24 @@ static void red_char_device_client_send_queue_push(RedCharDeviceClient *dev_clie
}
}
-static void red_char_device_send_to_client_tokens_absorb(RedCharDeviceClient *dev_client,
- uint32_t tokens)
+static void
+red_char_device_send_to_client_tokens_absorb(RedCharDevice *dev,
+ RedClient *client,
+ uint32_t tokens,
+ bool reset)
{
- RedCharDevice *dev = dev_client->dev;
+ RedCharDeviceClient *dev_client;
+
+ dev_client = red_char_device_client_find(dev, client);
+
+ if (!dev_client) {
+ spice_error("client wasn't found dev %p client %p", dev, client);
+ return;
+ }
+
+ if (reset) {
+ dev_client->num_send_tokens = 0;
+ }
dev_client->num_send_tokens += tokens;
if (g_queue_get_length(dev_client->send_queue)) {
@@ -403,32 +417,14 @@ void red_char_device_send_to_client_tokens_add(RedCharDevice *dev,
RedClient *client,
uint32_t tokens)
{
- RedCharDeviceClient *dev_client;
-
- dev_client = red_char_device_client_find(dev, client);
-
- if (!dev_client) {
- spice_error("client wasn't found dev %p client %p", dev, client);
- return;
- }
- red_char_device_send_to_client_tokens_absorb(dev_client, tokens);
+ red_char_device_send_to_client_tokens_absorb(dev, client, tokens, false);
}
void red_char_device_send_to_client_tokens_set(RedCharDevice *dev,
RedClient *client,
uint32_t tokens)
{
- RedCharDeviceClient *dev_client;
-
- dev_client = red_char_device_client_find(dev, client);
-
- if (!dev_client) {
- spice_error("client wasn't found dev %p client %p", dev, client);
- return;
- }
-
- dev_client->num_send_tokens = 0;
- red_char_device_send_to_client_tokens_absorb(dev_client, tokens);
+ red_char_device_send_to_client_tokens_absorb(dev, client, tokens, true);
}
/**************************
--
2.20.1
More information about the Spice-devel
mailing list