[Spice-devel] [PATCH spice-server] red-channel-client: Do not push items adding them to tail
Frediano Ziglio
fziglio at redhat.com
Wed Sep 13 09:15:14 UTC 2017
Now the push is done automatically when a PipeItem is added
(cfr commit 5c460de1a3972b7cf2b9b2944d0b500c3affc363
"worker: push data when clients can receive them"),
forcing a push cause only network fragmentation and is required only if
you are handling data in a polling loop (and thus, you are preventing
the default event loop from running).
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/cache-item.tmpl.c | 2 +-
server/dcc.c | 2 +-
server/red-channel-client.c | 9 ---------
server/red-channel-client.h | 1 -
4 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/server/cache-item.tmpl.c b/server/cache-item.tmpl.c
index 47de423bf..19e6b95f1 100644
--- a/server/cache-item.tmpl.c
+++ b/server/cache-item.tmpl.c
@@ -78,7 +78,7 @@ static void FUNC_NAME(remove)(CHANNELCLIENT *channel_client, RedCacheItem *item)
channel_client->priv->VAR_NAME(available) += item->u.cache_data.size;
red_pipe_item_init(&item->u.pipe_data, RED_PIPE_ITEM_TYPE_INVAL_ONE);
- red_channel_client_pipe_add_tail_and_push(RED_CHANNEL_CLIENT(channel_client), &item->u.pipe_data); // for now
+ red_channel_client_pipe_add_tail(RED_CHANNEL_CLIENT(channel_client), &item->u.pipe_data); // for now
}
static int FUNC_NAME(add)(CHANNELCLIENT *channel_client, uint64_t id, size_t size)
diff --git a/server/dcc.c b/server/dcc.c
index 1e0ba790f..3bf75a707 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -470,7 +470,7 @@ void dcc_append_drawable(DisplayChannelClient *dcc, Drawable *drawable)
RedDrawablePipeItem *dpi = red_drawable_pipe_item_new(dcc, drawable);
add_drawable_surface_images(dcc, drawable);
- red_channel_client_pipe_add_tail_and_push(RED_CHANNEL_CLIENT(dcc), &dpi->dpi_pipe_item);
+ red_channel_client_pipe_add_tail(RED_CHANNEL_CLIENT(dcc), &dpi->dpi_pipe_item);
}
void dcc_add_drawable_after(DisplayChannelClient *dcc, Drawable *drawable, RedPipeItem *pos)
diff --git a/server/red-channel-client.c b/server/red-channel-client.c
index 8f7308628..0443d6184 100644
--- a/server/red-channel-client.c
+++ b/server/red-channel-client.c
@@ -1596,15 +1596,6 @@ void red_channel_client_pipe_add_tail(RedChannelClient *rcc,
g_queue_push_tail(&rcc->priv->pipe, item);
}
-void red_channel_client_pipe_add_tail_and_push(RedChannelClient *rcc, RedPipeItem *item)
-{
- if (!prepare_pipe_add(rcc, item)) {
- return;
- }
- g_queue_push_tail(&rcc->priv->pipe, item);
- red_channel_client_push(rcc);
-}
-
void red_channel_client_pipe_add_type(RedChannelClient *rcc, int pipe_item_type)
{
RedPipeItem *item = spice_new(RedPipeItem, 1);
diff --git a/server/red-channel-client.h b/server/red-channel-client.h
index 732fbdd59..56503c44b 100644
--- a/server/red-channel-client.h
+++ b/server/red-channel-client.h
@@ -96,7 +96,6 @@ int red_channel_client_pipe_item_is_linked(RedChannelClient *rcc, RedPipeItem *i
void red_channel_client_pipe_remove_and_release(RedChannelClient *rcc, RedPipeItem *item);
void red_channel_client_pipe_remove_and_release_pos(RedChannelClient *rcc, GList *item_pos);
void red_channel_client_pipe_add_tail(RedChannelClient *rcc, RedPipeItem *item);
-void red_channel_client_pipe_add_tail_and_push(RedChannelClient *rcc, RedPipeItem *item);
/* for types that use this routine -> the pipe item should be freed */
void red_channel_client_pipe_add_type(RedChannelClient *rcc, int pipe_item_type);
RedPipeItem *red_channel_client_new_empty_msg(int msg_type);
--
2.13.5
More information about the Spice-devel
mailing list