diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/cursor-channel.c | 4 | ||||
-rw-r--r-- | server/cursor-channel.h | 2 | ||||
-rw-r--r-- | server/red_worker.c | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/server/cursor-channel.c b/server/cursor-channel.c index 7ab92857..b9842259 100644 --- a/server/cursor-channel.c +++ b/server/cursor-channel.c @@ -135,8 +135,10 @@ static void red_reset_cursor_cache(RedChannelClient *rcc) red_cursor_cache_reset(RCC_TO_CCC(rcc), CLIENT_CURSOR_CACHE_SIZE); } -void cursor_channel_disconnect(RedChannel *channel) +void cursor_channel_disconnect(CursorChannel *cursor_channel) { + RedChannel *channel = (RedChannel *)cursor_channel; + if (!channel || !red_channel_is_connected(channel)) { return; } diff --git a/server/cursor-channel.h b/server/cursor-channel.h index 19142269..293cfc18 100644 --- a/server/cursor-channel.h +++ b/server/cursor-channel.h @@ -78,7 +78,7 @@ typedef struct CursorChannel { G_STATIC_ASSERT(sizeof(CursorItem) <= QXL_CURSUR_DEVICE_DATA_SIZE); CursorChannel* cursor_channel_new (RedWorker *worker); -void cursor_channel_disconnect (RedChannel *channel); +void cursor_channel_disconnect (CursorChannel *cursor_channel); void cursor_channel_reset (CursorChannel *cursor); void cursor_channel_process_cmd (CursorChannel *cursor, RedCursorCmd *cursor_cmd, uint32_t group_id); diff --git a/server/red_worker.c b/server/red_worker.c index 2edfef50..574414c1 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -8828,7 +8828,7 @@ static inline void flush_cursor_commands(RedWorker *worker) red_channel_send(channel); if (red_get_monotonic_time() >= end_time) { spice_warning("flush cursor timeout"); - cursor_channel_disconnect(channel); + cursor_channel_disconnect(worker->cursor_channel); worker->cursor_channel = NULL; } else { sleep_count++; |