From 969ab70413de331e9b7c3e12e7e3ce06da77742a Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Sun, 24 Apr 2011 09:44:21 +0300 Subject: server/red_worker: add cursor_channel_client_disconnect makes RED_WORKER_MESSAGE_CURSOR_DISCONNECT_CLIENT disconnect only a single client. --- server/red_worker.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'server/red_worker.c') 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; -- cgit