server/red_worker: red_process_drawable: have single point of exit

This commit is contained in:
Alon Levy 2012-05-14 14:32:23 +03:00
parent 6935bd3d60
commit c8cefd4a8f

View File

@ -3905,23 +3905,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,
@ -3934,6 +3930,7 @@ static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable
red_draw_qxl_drawable(worker, item);
#endif
}
cleanup:
release_drawable(worker, item);
}