[Spice-devel] [PATCH spice-server 6/6] red-channel: Do not push data calling red_channel_pipes_new_add_push
Frediano Ziglio
fziglio at redhat.com
Tue Aug 29 10:53:39 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 loop instead of using the
default loop.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/display-channel.c | 4 ++--
server/red-channel.c | 17 ++++-------------
server/red-channel.h | 3 +--
3 files changed, 7 insertions(+), 17 deletions(-)
diff --git a/server/display-channel.c b/server/display-channel.c
index 792fbd25..14700df0 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -2396,7 +2396,7 @@ void display_channel_update_compression(DisplayChannel *display, DisplayChannelC
void display_channel_gl_scanout(DisplayChannel *display)
{
- red_channel_pipes_new_add_push(RED_CHANNEL(display), dcc_gl_scanout_item_new, NULL);
+ red_channel_pipes_new_add(RED_CHANNEL(display), dcc_gl_scanout_item_new, NULL);
}
static void set_gl_draw_async_count(DisplayChannel *display, int num)
@@ -2416,7 +2416,7 @@ void display_channel_gl_draw(DisplayChannel *display, SpiceMsgDisplayGlDraw *dra
spice_return_if_fail(display->priv->gl_draw_async_count == 0);
- num = red_channel_pipes_new_add_push(RED_CHANNEL(display), dcc_gl_draw_item_new, draw);
+ num = red_channel_pipes_new_add(RED_CHANNEL(display), dcc_gl_draw_item_new, draw);
set_gl_draw_async_count(display, num);
}
diff --git a/server/red-channel.c b/server/red-channel.c
index 490447ed..777ad8e2 100644
--- a/server/red-channel.c
+++ b/server/red-channel.c
@@ -597,20 +597,11 @@ static int red_channel_pipes_create_batch(RedChannel *channel,
return n;
}
-int red_channel_pipes_new_add_push(RedChannel *channel,
- new_pipe_item_t creator, void *data)
+int red_channel_pipes_new_add(RedChannel *channel,
+ new_pipe_item_t creator, void *data)
{
- int n = red_channel_pipes_create_batch(channel, creator, data,
- red_channel_client_pipe_add);
- red_channel_push(channel);
-
- return n;
-}
-
-void red_channel_pipes_new_add(RedChannel *channel, new_pipe_item_t creator, void *data)
-{
- red_channel_pipes_create_batch(channel, creator, data,
- red_channel_client_pipe_add);
+ return red_channel_pipes_create_batch(channel, creator, data,
+ red_channel_client_pipe_add);
}
uint32_t red_channel_max_pipe_size(RedChannel *channel)
diff --git a/server/red-channel.h b/server/red-channel.h
index c965baee..f2dd0836 100644
--- a/server/red-channel.h
+++ b/server/red-channel.h
@@ -167,8 +167,7 @@ void red_channel_init_outgoing_messages_window(RedChannel *channel);
// helper to push a new item to all channels
typedef RedPipeItem *(*new_pipe_item_t)(RedChannelClient *rcc, void *data, int num);
-int red_channel_pipes_new_add_push(RedChannel *channel, new_pipe_item_t creator, void *data);
-void red_channel_pipes_new_add(RedChannel *channel, new_pipe_item_t creator, void *data);
+int red_channel_pipes_new_add(RedChannel *channel, new_pipe_item_t creator, void *data);
void red_channel_pipes_add_type(RedChannel *channel, int pipe_item_type);
--
2.13.5
More information about the Spice-devel
mailing list