From 381c39c66f135bf51872f3f2d46024ad151d2fa1 Mon Sep 17 00:00:00 2001 From: Jonathon Jongsma Date: Fri, 13 Nov 2015 10:29:11 -0600 Subject: Move dcc_push_stream_agent_clip() to display channel rename to dcc_add_stream_agent_clip() --- server/display-channel.c | 15 +++++++++++++++ server/display-channel.h | 2 ++ server/red_worker.c | 22 +++------------------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/server/display-channel.c b/server/display-channel.c index 51302bdc..63d56b46 100644 --- a/server/display-channel.c +++ b/server/display-channel.c @@ -141,6 +141,21 @@ DisplayChannelClient *dcc_new(DisplayChannel *display, return dcc; } +void dcc_add_stream_agent_clip(DisplayChannelClient* dcc, StreamAgent *agent) +{ + StreamClipItem *item = stream_clip_item_new(dcc, agent); + int n_rects; + + item->clip_type = SPICE_CLIP_TYPE_RECTS; + + n_rects = pixman_region32_n_rects(&agent->clip); + item->rects = spice_malloc_n_m(n_rects, sizeof(SpiceRect), sizeof(SpiceClipRects)); + item->rects->num_rects = n_rects; + region_ret_rects(&agent->clip, item->rects->rects, n_rects); + + red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), (PipeItem *)item); +} + MonitorsConfig* monitors_config_ref(MonitorsConfig *monitors_config) { monitors_config->refs++; diff --git a/server/display-channel.h b/server/display-channel.h index c3dcc29d..c080932a 100644 --- a/server/display-channel.h +++ b/server/display-channel.h @@ -246,6 +246,8 @@ DisplayChannelClient* dcc_new (DisplayCha void dcc_push_monitors_config (DisplayChannelClient *dcc); void dcc_push_destroy_surface (DisplayChannelClient *dcc, uint32_t surface_id); +void dcc_add_stream_agent_clip (DisplayChannelClient* dcc, + StreamAgent *agent); typedef struct DrawablePipeItem { RingItem base; /* link for a list of pipe items held by Drawable */ diff --git a/server/red_worker.c b/server/red_worker.c index 9673288e..14de36bb 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -393,22 +393,6 @@ static void display_stream_clip_unref(DisplayChannel *display, StreamClipItem *i free(item); } -static void dcc_push_stream_agent_clip(DisplayChannelClient* dcc, StreamAgent *agent) -{ - StreamClipItem *item = stream_clip_item_new(dcc, agent); - int n_rects; - - item->clip_type = SPICE_CLIP_TYPE_RECTS; - - n_rects = pixman_region32_n_rects(&agent->clip); - item->rects = spice_malloc_n_m(n_rects, sizeof(SpiceRect), sizeof(SpiceClipRects)); - item->rects->num_rects = n_rects; - region_ret_rects(&agent->clip, item->rects->rects, n_rects); - - red_channel_client_pipe_add(RED_CHANNEL_CLIENT(dcc), (PipeItem *)item); -} - - void attach_stream(DisplayChannel *display, Drawable *drawable, Stream *stream) { DisplayChannelClient *dcc; @@ -445,7 +429,7 @@ void attach_stream(DisplayChannel *display, Drawable *drawable, Stream *stream) if (!region_is_equal(&clip_in_draw_dest, &drawable->tree_item.base.rgn)) { region_remove(&agent->clip, &drawable->red_drawable->bbox); region_or(&agent->clip, &drawable->tree_item.base.rgn); - dcc_push_stream_agent_clip(dcc, agent); + dcc_add_stream_agent_clip(dcc, agent); } #ifdef STREAM_STATS agent->stats.num_input_frames++; @@ -1388,7 +1372,7 @@ static void dcc_detach_stream_gracefully(DisplayChannelClient *dcc, /* stopping the client from playing older frames at once*/ region_clear(&agent->clip); - dcc_push_stream_agent_clip(dcc, agent); + dcc_add_stream_agent_clip(dcc, agent); if (region_is_empty(&agent->vis_region)) { spice_debug("stream %d: vis region empty", stream_id); @@ -1537,7 +1521,7 @@ static void streams_update_visible_region(DisplayChannel *display, Drawable *dra if (region_intersects(&agent->vis_region, &drawable->tree_item.base.rgn)) { region_exclude(&agent->vis_region, &drawable->tree_item.base.rgn); region_exclude(&agent->clip, &drawable->tree_item.base.rgn); - dcc_push_stream_agent_clip(dcc, agent); + dcc_add_stream_agent_clip(dcc, agent); } } } -- cgit