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
where:
 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.
This commit is contained in:
Alon Levy 2010-12-15 14:43:45 +02:00
parent 5f501a97f7
commit 5d2aa8084e

View File

@ -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);
drawable->refs++;
}
@ -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) {
worker->transparent_count++;
}