summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-05-15 18:01:04 +0300
committerAlon Levy <alevy@redhat.com>2012-05-15 18:01:04 +0300
commit8f65b3fb36e96ab0a9acc0f5b9813cdc5de73096 (patch)
tree740d6cf2baa8f35b24e71c7206d6ffd8ccf860e5
parent35dbf3ccc4b852f9dbb29eb8a53c94f26d2e3a6e (diff)
Revert "server/red_worker: fix possible leak of self_bitmap"
This reverts commit 35dbf3ccc4b852f9dbb29eb8a53c94f26d2e3a6e. accidentally pushed v1 of patches, reverting in preperation of pushing v2.
-rw-r--r--server/red_worker.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 1adf4c9..e1c86fa 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -3867,8 +3867,8 @@ static inline void red_inc_surfaces_drawable_dependencies(RedWorker *worker, Dra
}
}
-static inline Drawable *red_process_drawable(RedWorker *worker, RedDrawable *drawable,
- uint32_t group_id)
+static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable,
+ uint32_t group_id)
{
int surface_id;
Drawable *item = get_drawable(worker, drawable->effect, drawable, group_id);
@@ -3931,7 +3931,7 @@ static inline Drawable *red_process_drawable(RedWorker *worker, RedDrawable *dra
#endif
}
cleanup:
- return item;
+ release_drawable(worker, item);
}
static inline void red_create_surface(RedWorker *worker, uint32_t surface_id,uint32_t width,
@@ -4844,16 +4844,14 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *
switch (ext_cmd.cmd.type) {
case QXL_CMD_DRAW: {
RedDrawable *red_drawable = red_drawable_new(); // returns with 1 ref
- Drawable *drawable;
if (red_get_drawable(&worker->mem_slots, ext_cmd.group_id,
red_drawable, ext_cmd.cmd.data, ext_cmd.flags)) {
break;
}
- drawable = red_process_drawable(worker, red_drawable, ext_cmd.group_id);
- // release red_drawable first, it will not die because drawable holds a reference on it.
+ red_process_drawable(worker, red_drawable, ext_cmd.group_id);
+ // release the red_drawable
put_red_drawable(worker, red_drawable, ext_cmd.group_id, NULL);
- release_drawable(worker, drawable);
break;
}
case QXL_CMD_UPDATE: {