server/red_worker: red_process_drawable: have single point of exit

(cherry picked from commit c8cefd4a8f)
This commit is contained in:
Alon Levy 2012-05-14 14:32:23 +03:00
parent 6a9f2c9453
commit 445364fe7d

View File

@ -3787,23 +3787,19 @@ static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable
red_inc_surfaces_drawable_dependencies(worker, item);
if (region_is_empty(&item->tree_item.base.rgn)) {
release_drawable(worker, item);
return;
goto cleanup;
}
if (!red_handle_self_bitmap(worker, item)) {
release_drawable(worker, item);
return;
goto cleanup;
}
if (!red_handle_depends_on_target_surface(worker, surface_id)) {
release_drawable(worker, item);
return;
goto cleanup;
}
if (!red_handle_surfaces_dependencies(worker, item)) {
release_drawable(worker, item);
return;
goto cleanup;
}
if (red_current_add_qxl(worker, &worker->surfaces[surface_id].current, item,
@ -3816,6 +3812,7 @@ static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable
red_draw_qxl_drawable(worker, item);
#endif
}
cleanup:
release_drawable(worker, item);
}