diff options
author | Alon Levy <alevy@redhat.com> | 2012-05-15 18:01:04 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2012-05-15 18:01:04 +0300 |
commit | 8f65b3fb36e96ab0a9acc0f5b9813cdc5de73096 (patch) | |
tree | 740d6cf2baa8f35b24e71c7206d6ffd8ccf860e5 | |
parent | 35dbf3ccc4b852f9dbb29eb8a53c94f26d2e3a6e (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.c | 12 |
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: { |