summaryrefslogtreecommitdiffstats
path: root/server/red_worker.c
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-04-24 09:44:21 +0300
committerAlon Levy <alevy@redhat.com>2011-08-23 18:04:56 +0300
commit969ab70413de331e9b7c3e12e7e3ce06da77742a (patch)
tree3418dc2c2a9c6095bbbfcb534a491588b5281850 /server/red_worker.c
parentc78e951bff941d9975c3e8b2689a1a52cd2c7d33 (diff)
downloadspice-969ab70413de331e9b7c3e12e7e3ce06da77742a.tar.gz
spice-969ab70413de331e9b7c3e12e7e3ce06da77742a.tar.xz
spice-969ab70413de331e9b7c3e12e7e3ce06da77742a.zip
server/red_worker: add cursor_channel_client_disconnect
makes RED_WORKER_MESSAGE_CURSOR_DISCONNECT_CLIENT disconnect only a single client.
Diffstat (limited to 'server/red_worker.c')
-rw-r--r--server/red_worker.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 8892b889..9fb8dad0 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -9797,6 +9797,15 @@ error:
red_channel_client_destroy(&dcc->common.base);
}
+static void cursor_channel_client_disconnect(RedChannelClient *rcc)
+{
+ if (!red_channel_is_connected(rcc->channel)) {
+ return;
+ }
+ red_reset_cursor_cache(rcc);
+ red_channel_client_disconnect(rcc);
+}
+
static void red_disconnect_cursor(RedChannel *channel)
{
CommonChannel *common;
@@ -10482,7 +10491,7 @@ static void handle_dev_input(EventListener *listener, uint32_t events)
red_printf("disconnect cursor client");
receive_data(worker->channel, &rcc, sizeof(RedChannelClient *));
- red_disconnect_cursor(rcc->channel); /* TODO - assumes a single client */
+ cursor_channel_client_disconnect(rcc);
message = RED_WORKER_MESSAGE_READY;
write_message(worker->channel, &message);
break;