Fine with me. Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Fri, 2015-11-20 at 11:17 +0000, Frediano Ziglio wrote: > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > --- > server/display-channel.c | 13 +++++++------ > server/display-channel.h | 10 +++++++--- > server/red_worker.c | 24 ++++++++++++------------ > 3 files changed, 26 insertions(+), 21 deletions(-) > > diff --git a/server/display-channel.c b/server/display-channel.c > index 7aa3ea9..0ec27e3 100644 > --- a/server/display-channel.c > +++ b/server/display-channel.c > @@ -752,9 +752,10 @@ static int current_add(DisplayChannel *display, Ring > *ring, Drawable *drawable) > current_add_drawable(display, drawable, ring); > } else { > /* > - * red_detach_streams_behind can affect the current tree since it may > - * trigger calls to update_area. Thus, the drawable should be added > to the tree > - * before calling red_detach_streams_behind > + * red_detach_streams_behind can affect the current tree since > + * it may trigger calls to display_channel_draw. Thus, the > + * drawable should be added to the tree before calling > + * red_detach_streams_behind > */ > current_add_drawable(display, drawable, ring); > if (is_primary_surface(display, drawable->surface_id)) { > @@ -1109,7 +1110,7 @@ void display_channel_drawable_unref(DisplayChannel > *display, Drawable *drawable) > display->drawable_count--; > } > > -static void drawable_deps_update(DisplayChannel *display, Drawable *drawable) > +static void drawable_deps_draw(DisplayChannel *display, Drawable *drawable) > { > int x; > int surface_id; > @@ -1118,7 +1119,7 @@ static void drawable_deps_update(DisplayChannel > *display, Drawable *drawable) > surface_id = drawable->surface_deps[x]; > if (surface_id != -1 && drawable->depend_items[x].drawable) { > depended_item_remove(&drawable->depend_items[x]); > - red_update_area(display, &drawable->red_drawable > ->surfaces_rects[x], surface_id); > + display_channel_draw(display, &drawable->red_drawable > ->surfaces_rects[x], surface_id); > } > } > } > @@ -1129,7 +1130,7 @@ void drawable_draw(DisplayChannel *display, Drawable > *drawable) > SpiceCanvas *canvas; > SpiceClip clip = drawable->red_drawable->clip; > > - drawable_deps_update(display, drawable); > + drawable_deps_draw(display, drawable); > > surface = &display->surfaces[drawable->surface_id]; > canvas = surface->context.canvas; > diff --git a/server/display-channel.h b/server/display-channel.h > index 266df2c..a454218 100644 > --- a/server/display-channel.h > +++ b/server/display-channel.h > @@ -250,6 +250,13 @@ typedef struct UpgradeItem { > } UpgradeItem; > > > +void display_channel_draw > (DisplayChannel *display, > + const > SpiceRect *area, > + int > surface_id); > +void display_channel_draw_till > (DisplayChannel *display, > + const > SpiceRect *area, > + int > surface_id, > + > Drawable *last); > void display_channel_free_some > (DisplayChannel *display); > void display_channel_set_stream_video > (DisplayChannel *display, > int > stream_video); > @@ -395,8 +402,5 @@ void detach_streams_behind(DisplayChannel *display, > QRegion *region, Drawable *d > void drawable_draw(DisplayChannel *display, Drawable *item); > void current_remove_all(DisplayChannel *display, int surface_id); > void drawables_init(DisplayChannel *display); > -void red_update_area(DisplayChannel *display, const SpiceRect *area, int > surface_id); > -void red_update_area_till(DisplayChannel *display, const SpiceRect *area, int > surface_id, > - Drawable *last); > > #endif /* DISPLAY_CHANNEL_H_ */ > diff --git a/server/red_worker.c b/server/red_worker.c > index ec488db..150b166 100644 > --- a/server/red_worker.c > +++ b/server/red_worker.c > @@ -494,9 +494,9 @@ static void > dcc_detach_stream_gracefully(DisplayChannelClient *dcc, > stream_id, stream->current != NULL); > rect_debug(&upgrade_area); > if (update_area_limit) { > - red_update_area_till(DCC_TO_DC(dcc), &upgrade_area, 0, > update_area_limit); > + display_channel_draw_till(DCC_TO_DC(dcc), &upgrade_area, 0, > update_area_limit); > } else { > - red_update_area(DCC_TO_DC(dcc), &upgrade_area, 0); > + display_channel_draw(DCC_TO_DC(dcc), &upgrade_area, 0); > } > dcc_add_surface_area_image(dcc, 0, &upgrade_area, NULL, FALSE); > } > @@ -601,7 +601,7 @@ static void red_get_area(DisplayChannel *display, int > surface_id, const SpiceRec > > surface = &display->surfaces[surface_id]; > if (update) { > - red_update_area(display, area, surface_id); > + display_channel_draw(display, area, surface_id); > } > > canvas = surface->context.canvas; > @@ -712,7 +712,7 @@ static inline int > red_handle_depends_on_target_surface(DisplayChannel *display, > Drawable *drawable; > DependItem *depended_item = SPICE_CONTAINEROF(ring_item, DependItem, > ring_item); > drawable = depended_item->drawable; > - red_update_area(display, &drawable->red_drawable->bbox, drawable > ->surface_id); > + display_channel_draw(display, &drawable->red_drawable->bbox, drawable > ->surface_id); > } > > return TRUE; > @@ -925,7 +925,7 @@ static void validate_area(DisplayChannel *display, const > SpiceRect *area, uint32 > Renders drawables for updating the requested area, but only drawables > that are older > than 'last' (exclusive). > */ > -void red_update_area_till(DisplayChannel *display, const SpiceRect *area, int > surface_id, > +void display_channel_draw_till(DisplayChannel *display, const SpiceRect > *area, int surface_id, > Drawable *last) > { > RedSurface *surface; > @@ -992,10 +992,10 @@ void red_update_area_till(DisplayChannel *display, const > SpiceRect *area, int su > container = now->tree_item.base.container; > current_remove_drawable(display, now); > container_cleanup(container); > - /* drawable_draw may call red_update_area for the surfaces 'now' > depends on. Notice, > - that it is valid to call red_update_area in this case and not > red_update_area_till: > + /* drawable_draw may call display_channel_draw for the surfaces 'now' > depends on. Notice, > + that it is valid to call display_channel_draw in this case and not > display_channel_draw_till: > It is impossible that there was newer item then 'last' in one of > the surfaces > - that red_update_area is called for, Otherwise, 'now' would have > already been rendered. > + that display_channel_draw is called for, Otherwise, 'now' would > have already been rendered. > See the call for red_handle_depends_on_target_surface in > red_process_draw */ > drawable_draw(display, now); > display_channel_drawable_unref(display, now); > @@ -1003,7 +1003,7 @@ void red_update_area_till(DisplayChannel *display, const > SpiceRect *area, int su > validate_area(display, area, surface_id); > } > > -void red_update_area(DisplayChannel *display, const SpiceRect *area, int > surface_id) > +void display_channel_draw(DisplayChannel *display, const SpiceRect *area, int > surface_id) > { > RedSurface *surface; > Ring *ring; > @@ -1176,7 +1176,7 @@ static int red_process_commands(RedWorker *worker, > uint32_t max_pipe_size, int * > spice_warning("Invalid surface in QXL_CMD_UPDATE"); > break; > } > - red_update_area(worker->display_channel, &update.area, > update.surface_id); > + display_channel_draw(worker->display_channel, &update.area, > update.surface_id); > worker->qxl->st->qif->notify_update(worker->qxl, > update.update_id); > release_info_ext.group_id = ext_cmd.group_id; > release_info_ext.info = update.release_info; > @@ -1826,7 +1826,7 @@ static void > red_add_lossless_drawable_dependencies(RedChannelClient *rcc, > } else { > sync_rendered = FALSE; > for (i = 0; i < num_deps; i++) { > - red_update_area_till(display, deps_areas[i], > + display_channel_draw_till(display, deps_areas[i], > deps_surfaces_ids[i], item); > } > } > @@ -4356,7 +4356,7 @@ void display_channel_update(DisplayChannel *display, > spice_return_if_fail(validate_surface(display, surface_id)); > > red_get_rect_ptr(&rect, area); > - red_update_area(display, &rect, surface_id); > + display_channel_draw(display, &rect, surface_id); > > surface = &display->surfaces[surface_id]; > if (!*qxl_dirty_rects) { _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel