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@xxxxxxxxxx> --- 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 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel