diff options
author | Alon Levy <alevy@redhat.com> | 2011-04-24 09:44:21 +0300 |
---|---|---|
committer | Alon Levy <alevy@redhat.com> | 2011-08-23 18:04:56 +0300 |
commit | 969ab70413de331e9b7c3e12e7e3ce06da77742a (patch) | |
tree | 3418dc2c2a9c6095bbbfcb534a491588b5281850 /server | |
parent | c78e951bff941d9975c3e8b2689a1a52cd2c7d33 (diff) | |
download | spice-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')
-rw-r--r-- | server/red_worker.c | 11 |
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; |