summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2010-08-25 10:02:33 +0300
committerYonit Halperin <yhalperi@redhat.com>2010-08-25 15:14:35 +0300
commitb9b5f8fd56081587559a4611cf57e86ce0f03964 (patch)
tree2591815887ca0782a8ef39a4a15927d52ccc5ced
parentcbb9f700be13c0f849786dcaa49aa5fe35de90bc (diff)
downloadspice-b9b5f8fd56081587559a4611cf57e86ce0f03964.tar.gz
spice-b9b5f8fd56081587559a4611cf57e86ce0f03964.tar.xz
spice-b9b5f8fd56081587559a4611cf57e86ce0f03964.zip
server: clean glz drawables when reseting qxl
When the we reset qxl, we destroy all srufaces. Since surfaces and glz drawables are no longer dependent, we need to call red_display_clear_glz_drawables explicitly in order to clear all our drawables references in the server.
-rw-r--r--server/red_worker.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 043aa361..27d94910 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -9800,6 +9800,7 @@ static inline void handle_dev_destroy_surface_wait(RedWorker *worker)
write_message(worker->channel, &message);
}
+/* called upon device reset */
static inline void handle_dev_destroy_surfaces(RedWorker *worker)
{
int i;
@@ -9834,6 +9835,8 @@ static inline void handle_dev_destroy_surfaces(RedWorker *worker)
red_pipe_add_verb(&worker->display_channel->base, SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL);
}
+ red_display_clear_glz_drawables(worker->display_channel);
+
//to handle better
for (i = 0; i < NUM_SURFACES; ++i) {
ASSERT(!worker->surfaces[i].context.canvas);