summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-07-22 11:35:05 +0300
committerAlon Levy <alevy@redhat.com>2012-07-22 13:37:44 +0300
commit7863b18cd79ac3d82e263f4331f3551e7a75ebaa (patch)
tree374b71e0f7f533bd584690dcc4d47723461287e9
parent827f40e05c0340293711f1cd7f164abcc1da8789 (diff)
server/red_worker: release bad drawables
-rw-r--r--server/red_worker.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 5634db58..e2397401 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -4843,11 +4843,10 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *
case QXL_CMD_DRAW: {
RedDrawable *red_drawable = red_drawable_new(); // returns with 1 ref
- if (red_get_drawable(&worker->mem_slots, ext_cmd.group_id,
+ if (!red_get_drawable(&worker->mem_slots, ext_cmd.group_id,
red_drawable, ext_cmd.cmd.data, ext_cmd.flags)) {
- break;
+ red_process_drawable(worker, red_drawable, ext_cmd.group_id);
}
- red_process_drawable(worker, red_drawable, ext_cmd.group_id);
// release the red_drawable
put_red_drawable(worker, red_drawable, ext_cmd.group_id);
break;