summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2013-09-10 19:50:06 +0200
committerFrediano Ziglio <fziglio@redhat.com>2015-10-15 18:30:38 +0100
commit3dffeb25edc9d7a893d9697fc7b19739aff36cc9 (patch)
treed2437fe43a659420d842b101b54caf4cc4675141 /server
parentc1d518139699081f87d15cdb8c027e5e2c14ff5c (diff)
downloadspice-3dffeb25edc9d7a893d9697fc7b19739aff36cc9.tar.gz
spice-3dffeb25edc9d7a893d9697fc7b19739aff36cc9.tar.xz
spice-3dffeb25edc9d7a893d9697fc7b19739aff36cc9.zip
Remove unfinished UPDATE_AREA_BY_TREE
Acked-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
Diffstat (limited to 'server')
-rw-r--r--server/red_worker.c110
1 files changed, 0 insertions, 110 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index f5cfa7c2..ce96449d 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -103,8 +103,6 @@
//#define ACYCLIC_SURFACE_DEBUG
//#define DEBUG_CURSORS
-//#define UPDATE_AREA_BY_TREE
-
#define CMD_RING_POLL_TIMEOUT 10 //milli
#define CMD_RING_POLL_RETRIES 200
@@ -838,9 +836,6 @@ struct Drawable {
Ring pipes;
PipeItem *pipe_item_rest;
uint32_t size_pipe_item_rest;
-#ifdef UPDATE_AREA_BY_TREE
- RingItem collect_link;
-#endif
RedDrawable *red_drawable;
Ring glz_ring;
@@ -4086,9 +4081,6 @@ static Drawable *get_drawable(RedWorker *worker, uint8_t effect, RedDrawable *re
#endif
ring_item_init(&drawable->list_link);
ring_item_init(&drawable->surface_list_link);
-#ifdef UPDATE_AREA_BY_TREE
- ring_item_init(&drawable->collect_link);
-#endif
ring_item_init(&drawable->tree_item.base.siblings_link);
drawable->tree_item.base.type = TREE_ITEM_TYPE_DRAWABLE;
region_init(&drawable->tree_item.base.rgn);
@@ -4529,19 +4521,8 @@ static void red_draw_qxl_drawable(RedWorker *worker, Drawable *drawable)
static void red_draw_drawable(RedWorker *worker, Drawable *drawable)
{
-#ifdef UPDATE_AREA_BY_TREE
- SpiceCanvas *canvas;
-
- canvas = surface->context.canvas;
- //todo: add need top mask flag
- canvas->ops->group_start(canvas,
- &drawable->tree_item.base.rgn);
-#endif
red_flush_source_surfaces(worker, drawable);
red_draw_qxl_drawable(worker, drawable);
-#ifdef UPDATE_AREA_BY_TREE
- canvas->ops->group_end(canvas);
-#endif
}
static void validate_area(RedWorker *worker, const SpiceRect *area, uint32_t surface_id)
@@ -4566,93 +4547,6 @@ static void validate_area(RedWorker *worker, const SpiceRect *area, uint32_t sur
}
}
-#ifdef UPDATE_AREA_BY_TREE
-
-static inline void __red_collect_for_update(RedWorker *worker, Ring *ring, RingItem *ring_item,
- QRegion *rgn, Ring *items)
-{
- Ring *top_ring = ring;
-
- for (;;) {
- TreeItem *now = SPICE_CONTAINEROF(ring_item, TreeItem, siblings_link);
- Container *container = now->container;
- if (region_intersects(rgn, &now->rgn)) {
- if (IS_DRAW_ITEM(now)) {
- Drawable *drawable = SPICE_CONTAINEROF(now, Drawable, tree_item);
-
- ring_add(items, &drawable->collect_link);
- region_or(rgn, &now->rgn);
- if (drawable->tree_item.shadow) {
- region_or(rgn, &drawable->tree_item.shadow->base.rgn);
- }
- } else if (now->type == TREE_ITEM_TYPE_SHADOW) {
- Drawable *owner = SPICE_CONTAINEROF(((Shadow *)now)->owner, Drawable, tree_item);
- if (!ring_item_is_linked(&owner->collect_link)) {
- region_or(rgn, &now->rgn);
- region_or(rgn, &owner->tree_item.base.rgn);
- ring_add(items, &owner->collect_link);
- }
- } else if (now->type == TREE_ITEM_TYPE_CONTAINER) {
- Container *container = (Container *)now;
-
- if ((ring_item = ring_get_head(&container->items))) {
- ring = &container->items;
- spice_assert(((TreeItem *)ring_item)->container);
- continue;
- }
- ring_item = &now->siblings_link;
- }
- }
-
- while (!(ring_item = ring_next(ring, ring_item))) {
- if (ring == top_ring) {
- return;
- }
- ring_item = &container->base.siblings_link;
- container = container->base.container;
- ring = (container) ? &container->items : top_ring;
- }
- }
-}
-
-static void red_update_area(RedWorker *worker, const SpiceRect *area, int surface_id)
-{
- RedSurface *surface;
- Ring *ring;
- RingItem *ring_item;
- Ring items;
- QRegion rgn;
-
- surface = &worker->surfaces[surface_id];
- ring = &surface->current;
-
- if (!(ring_item = ring_get_head(ring))) {
- worker->draw_context.validate_area(surface->context.canvas,
- &worker->dev_info.surface0_area, area);
- return;
- }
-
- region_init(&rgn);
- region_add(&rgn, area);
- ring_init(&items);
- __red_collect_for_update(worker, ring, ring_item, &rgn, &items);
- region_destroy(&rgn);
-
- while ((ring_item = ring_get_head(&items))) {
- Drawable *drawable = SPICE_CONTAINEROF(ring_item, Drawable, collect_link);
- Container *container;
-
- ring_remove(ring_item);
- red_draw_drawable(worker, drawable);
- container = drawable->tree_item.base.container;
- current_remove_drawable(worker, drawable);
- container_cleanup(worker, container);
- }
- validate_area(worker, area, surface_id);
-}
-
-#else
-
/*
Renders drawables for updating the requested area, but only drawables that are older
than 'last' (exclusive).
@@ -4660,9 +4554,6 @@ static void red_update_area(RedWorker *worker, const SpiceRect *area, int surfac
static void red_update_area_till(RedWorker *worker, const SpiceRect *area, int surface_id,
Drawable *last)
{
- // TODO: if we use UPDATE_AREA_BY_TREE, a corresponding red_update_area_till
- // should be implemented
-
RedSurface *surface;
Drawable *surface_last = NULL;
Ring *ring;
@@ -4803,7 +4694,6 @@ static void red_update_area(RedWorker *worker, const SpiceRect *area, int surfac
}
#endif
-#endif
static inline void free_cursor_item(RedWorker *worker, CursorItem *item);