From e601e920bd5a8385f7388cf31e0b0d543f68193e Mon Sep 17 00:00:00 2001 From: Marc-AndrĂ© Lureau Date: Tue, 3 Sep 2013 22:24:44 +0200 Subject: server: make more of cursor private MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Acked-by: Fabiano FidĂȘncio --- server/red_worker.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) (limited to 'server/red_worker.c') diff --git a/server/red_worker.c b/server/red_worker.c index ecfdea17..a15d5b68 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -9065,7 +9065,7 @@ static int common_channel_config_socket(RedChannelClient *rcc) RedClient *client = red_channel_client_get_client(rcc); MainChannelClient *mcc = red_client_get_main(client); RedsStream *stream = red_channel_client_get_stream(rcc); - CommonChannelClient *ccc = SPICE_CONTAINEROF(rcc, CommonChannelClient, base); + CommonChannelClient *ccc = COMMON_CHANNEL_CLIENT(rcc); int flags; int delay_val; @@ -9550,14 +9550,14 @@ static void red_connect_cursor(RedWorker *worker, RedClient *client, RedsStream return; } - RedChannelClient *rcc = &ccc->common.base; + RedChannelClient *rcc = RED_CHANNEL_CLIENT(ccc); red_channel_client_ack_zero_messages_window(rcc); red_channel_client_push_set_ack(rcc); + // TODO: why do we check for context.canvas? defer this to after display cc is connected // and test it's canvas? this is just a test to see if there is an active renderer? - if (worker->surfaces[0].context.canvas && !COMMON_CHANNEL(channel)->during_target_migrate) { - red_channel_client_pipe_add_type(rcc, PIPE_ITEM_TYPE_CURSOR_INIT); - } + if (worker->surfaces[0].context.canvas) + cursor_channel_init(channel, ccc); } static void surface_dirty_region_to_rects(RedSurface *surface, @@ -9899,11 +9899,7 @@ static void dev_create_primary_surface(RedWorker *worker, uint32_t surface_id, red_channel_push(&worker->display_channel->common.base); } - if (cursor_is_connected(worker) - && !COMMON_CHANNEL(worker->cursor_channel)->during_target_migrate) { - red_channel_pipes_add_type(RED_CHANNEL(worker->cursor_channel), - PIPE_ITEM_TYPE_CURSOR_INIT); - } + cursor_channel_init(worker->cursor_channel, NULL); } void handle_dev_create_primary_surface(void *opaque, void *payload) @@ -10289,12 +10285,7 @@ void handle_dev_cursor_migrate(void *opaque, void *payload) RedChannelClient *rcc = msg->rcc; spice_info("migrate cursor client"); - spice_assert(rcc); - if (!red_channel_client_is_connected(rcc)) - return; - - red_channel_client_pipe_add_type(rcc, PIPE_ITEM_TYPE_INVAL_CURSOR_CACHE); - red_channel_client_default_migrate(rcc); + cursor_channel_client_migrate(CURSOR_CHANNEL_CLIENT(rcc)); } void handle_dev_set_compression(void *opaque, void *payload) -- cgit