Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/dcc.c | 13 ++++++------- server/dcc.h | 3 +-- server/display-channel.c | 11 ++++++----- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/server/dcc.c b/server/dcc.c index c4510b0..8a63caf 100644 --- a/server/dcc.c +++ b/server/dcc.c @@ -127,10 +127,10 @@ int dcc_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, RedSurface return red_channel_client_wait_outgoing_item(rcc, DISPLAY_CLIENT_SHORT_TIMEOUT); } -void dcc_create_surface(DisplayChannelClient *dcc, int surface_id) +void dcc_create_surface(DisplayChannelClient *dcc, RedSurface *surface) { DisplayChannel *display; - RedSurface *surface; + uint32_t surface_id = surface->id; RedSurfaceCreateItem *create; uint32_t flags; @@ -139,14 +139,13 @@ void dcc_create_surface(DisplayChannelClient *dcc, int surface_id) } display = DCC_TO_DC(dcc); - flags = is_primary_surface_id(DCC_TO_DC(dcc), surface_id) ? SPICE_SURFACE_FLAGS_PRIMARY : 0; + flags = is_primary_surface(DCC_TO_DC(dcc), surface) ? SPICE_SURFACE_FLAGS_PRIMARY : 0; /* don't send redundant create surface commands to client */ if (!dcc || display->common.during_target_migrate || dcc->priv->surface_client_created[surface_id]) { return; } - surface = &display->priv->surfaces[surface_id]; create = red_surface_create_item_new(RED_CHANNEL(display), surface_id, surface->context.width, surface->context.height, @@ -256,7 +255,7 @@ static void add_drawable_surface_images(DisplayChannelClient *dcc, Drawable *dra if (dcc->priv->surface_client_created[surface_id] == TRUE) { continue; } - dcc_create_surface(dcc, surface_id); + dcc_create_surface(dcc, drawable->surface_deps[x]); display_channel_current_flush(display, drawable->surface_deps[x]); dcc_push_surface_image(dcc, surface_id); } @@ -266,7 +265,7 @@ static void add_drawable_surface_images(DisplayChannelClient *dcc, Drawable *dra return; } - dcc_create_surface(dcc, drawable->surface->id); + dcc_create_surface(dcc, drawable->surface); display_channel_current_flush(display, drawable->surface); dcc_push_surface_image(dcc, drawable->surface->id); } @@ -439,7 +438,7 @@ void dcc_start(DisplayChannelClient *dcc) if (display->priv->surfaces[0].context.canvas) { display_channel_current_flush(display, &display->priv->surfaces[0]); red_channel_client_pipe_add_type(rcc, RED_PIPE_ITEM_TYPE_INVAL_PALETTE_CACHE); - dcc_create_surface(dcc, 0); + dcc_create_surface(dcc, &display->priv->surfaces[0]); dcc_push_surface_image(dcc, 0); dcc_push_monitors_config(dcc); red_pipe_add_verb(rcc, SPICE_MSG_DISPLAY_MARK); diff --git a/server/dcc.h b/server/dcc.h index 47386ff..2068d78 100644 --- a/server/dcc.h +++ b/server/dcc.h @@ -122,8 +122,7 @@ void dcc_stream_agent_clip (DisplayCha StreamAgent *agent); void dcc_create_stream (DisplayChannelClient *dcc, Stream *stream); -void dcc_create_surface (DisplayChannelClient *dcc, - int surface_id); +void dcc_create_surface(DisplayChannelClient *dcc, struct RedSurface *surface); void dcc_push_surface_image (DisplayChannelClient *dcc, int surface_id); RedImageItem * dcc_add_surface_area_image (DisplayChannelClient *dcc, diff --git a/server/display-channel.c b/server/display-channel.c index e0a91a3..64a59de 100644 --- a/server/display-channel.c +++ b/server/display-channel.c @@ -1773,15 +1773,15 @@ void display_channel_destroy_surfaces(DisplayChannel *display) display_channel_free_glz_drawables(display); } -static void send_create_surface(DisplayChannel *display, int surface_id, int image_ready) +static void send_create_surface(DisplayChannel *display, RedSurface *surface, int image_ready) { DisplayChannelClient *dcc; GListIter iter; FOREACH_DCC(display, iter, dcc) { - dcc_create_surface(dcc, surface_id); + dcc_create_surface(dcc, surface); if (image_ready) - dcc_push_surface_image(dcc, surface_id); + dcc_push_surface_image(dcc, surface->id); } } @@ -1854,8 +1854,9 @@ void display_channel_create_surface(DisplayChannel *display, uint32_t surface_id } spice_return_if_fail(surface->context.canvas); - if (send_client) - send_create_surface(display, surface_id, data_is_valid); + if (send_client) { + send_create_surface(display, surface, data_is_valid); + } } static void on_disconnect(RedChannelClient *rcc) -- 2.7.4 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel