[Spice-devel] [PATCH 2/2] server: add missing calls to red_handle_drawable_surfaces_client_synced
Yonit Halperin
yhalperi at redhat.com
Wed Jun 15 07:34:39 PDT 2011
red_handle_drawable_surfaces_client_synced was called only from red_pipe_add_drawable, while it
should also be called from red_pipe_add_drawable_after. Otherwise, the client
might receive a command with a reference to a surface it doesn't hold and crash.
---
server/red_worker.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/server/red_worker.c b/server/red_worker.c
index c7869ad..85bb74c 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -1198,6 +1198,7 @@ static inline void red_pipe_add_drawable_to_tail(RedWorker *worker, Drawable *dr
if (!worker->display_channel) {
return;
}
+ red_handle_drawable_surfaces_client_synced(worker, drawable);
drawable->refs++;
red_pipe_add_tail(&worker->display_channel->common.base, &drawable->pipe_item);
}
@@ -1213,6 +1214,7 @@ static inline void red_pipe_add_drawable_after(RedWorker *worker, Drawable *draw
red_pipe_add_drawable(worker, drawable);
return;
}
+ red_handle_drawable_surfaces_client_synced(worker, drawable);
drawable->refs++;
red_channel_pipe_add_after(&worker->display_channel->common.base, &drawable->pipe_item, &pos_after->pipe_item);
}
--
1.7.4.4
More information about the Spice-devel
mailing list