From c8cefd4a8f28bde14b70a72272c0ccb80c77af04 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Mon, 14 May 2012 14:32:23 +0300 Subject: [PATCH] server/red_worker: red_process_drawable: have single point of exit --- server/red_worker.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/server/red_worker.c b/server/red_worker.c index 60f30d33..4304f29d 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -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); }