summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-05-14 14:32:23 +0300
committerAlon Levy <alevy@redhat.com>2012-05-15 19:24:29 +0300
commit445364fe7dfd830b7c144770de60343e13081aad (patch)
tree3f73d0e75c8ff89aaf17d7a548c2b4df80f05eeb
parent6a9f2c94539803d8263bead599139cadcbfc40c5 (diff)
downloadspice-445364fe7dfd830b7c144770de60343e13081aad.tar.gz
spice-445364fe7dfd830b7c144770de60343e13081aad.tar.xz
spice-445364fe7dfd830b7c144770de60343e13081aad.zip
server/red_worker: red_process_drawable: have single point of exit
(cherry picked from commit c8cefd4a8f28bde14b70a72272c0ccb80c77af04)
-rw-r--r--server/red_worker.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index dbe961d2..343dac4a 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -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);
}