[Spice-commits] server/red_worker.c

Alon Levy alon at kemper.freedesktop.org
Wed Dec 15 09:43:25 PST 2010

 server/red_worker.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 5d2aa8084e4432e6ae496e3e18f14c722041b9ea
Author: Alon Levy <alevy at redhat.com>
Date:   Wed Dec 15 14:43:45 2010 +0200

    server/red_worker: fix worker->drawable_count
    drawable_count was becoming negative. It tracks the number of
    items in the worker->current_list ring. It was decremented correctly,
    but incremented only in several cases. The cases it wasn't incremented
     red_current_add_equal found an equivalent drawable
    by moving the increment to where the item is added to current_list, in
    __current_add_drawable, the accounting remains correct.
    This has no affect other then correct accounting, as drawable_count isn't
    used for anything.

diff --git a/server/red_worker.c b/server/red_worker.c
index d59726f..937e0aa 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -2136,6 +2136,7 @@ static inline void __current_add_drawable(RedWorker *worker, Drawable *drawable,
     surface = &worker->surfaces[surface_id];
     ring_add_after(&drawable->tree_item.base.siblings_link, pos);
     ring_add(&worker->current_list, &drawable->list_link);
+    worker->drawable_count++;
     ring_add(&surface->current_list, &drawable->surface_list_link);
@@ -3501,7 +3502,6 @@ static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable
     if (red_current_add_qxl(worker, &worker->surfaces[surface_id].current, item,
                             drawable)) {
-        worker->drawable_count++;
         if (item->tree_item.effect != QXL_EFFECT_OPAQUE) {

More information about the Spice-commits mailing list