[Spice-devel] [PATCH 05/18] worker: tidy up cursor_connect a bit

Fabiano Fidêncio fabiano at fidencio.org
Fri Nov 20 06:37:13 PST 2015


On Fri, Nov 20, 2015 at 12:17 PM, Frediano Ziglio <fziglio at redhat.com> wrote:
> From: Marc-André Lureau <marcandre.lureau at gmail.com>
>
> ---
>  server/cursor-channel.c |  4 ++++
>  server/red_worker.c     | 60 +++++++++++++++++++++----------------------------
>  2 files changed, 30 insertions(+), 34 deletions(-)
>
> diff --git a/server/cursor-channel.c b/server/cursor-channel.c
> index aafc807..5eb2647 100644
> --- a/server/cursor-channel.c
> +++ b/server/cursor-channel.c
> @@ -484,6 +484,10 @@ CursorChannelClient* cursor_channel_client_new(CursorChannel *cursor, RedClient
>      ring_init(&ccc->cursor_cache_lru);
>      ccc->cursor_cache_available = CLIENT_CURSOR_CACHE_SIZE;
>
> +    RedChannelClient *rcc = RED_CHANNEL_CLIENT(ccc);
> +    red_channel_client_ack_zero_messages_window(rcc);
> +    red_channel_client_push_set_ack(rcc);
> +
>      return ccc;
>  }
>
> diff --git a/server/red_worker.c b/server/red_worker.c
> index b8dfbb9..377eb36 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -5420,34 +5420,6 @@ static void handle_new_display_channel(RedWorker *worker, RedClient *client, Red
>      dcc_start(dcc);
>  }
>
> -static void red_connect_cursor(RedWorker *worker, RedClient *client, RedsStream *stream,
> -                               int migrate,
> -                               uint32_t *common_caps, int num_common_caps,
> -                               uint32_t *caps, int num_caps)
> -{
> -    CursorChannel *channel;
> -    CursorChannelClient *ccc;
> -
> -    spice_return_if_fail(worker->cursor_channel != NULL);
> -
> -    channel = worker->cursor_channel;
> -    spice_info("add cursor channel client");
> -    ccc = cursor_channel_client_new(channel, client, stream,
> -                                    migrate,
> -                                    common_caps, num_common_caps,
> -                                    caps, num_caps);
> -    spice_return_if_fail(ccc != NULL);
> -
> -    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 (display_channel_surface_has_canvas(worker->display_channel, 0))
> -        cursor_channel_init(channel, ccc);
> -}
> -
>  static void surface_dirty_region_to_rects(RedSurface *surface,
>                                            QXLRect *qxl_dirty_rects,
>                                            uint32_t num_dirty_rects)
> @@ -5955,19 +5927,39 @@ static void handle_dev_monitors_config_async(void *opaque, void *payload)
>      red_worker_push_monitors_config(worker);
>  }
>
> +static void cursor_connect(RedWorker *worker, RedClient *client, RedsStream *stream,
> +                           int migrate,
> +                           uint32_t *common_caps, int num_common_caps,
> +                           uint32_t *caps, int num_caps)
> +{
> +    CursorChannel *channel = worker->cursor_channel;
> +    CursorChannelClient *ccc;
> +
> +    spice_return_if_fail(worker->cursor_channel != NULL);
> +
> +    spice_info("add cursor channel client");
> +    ccc = cursor_channel_client_new(channel, client, stream,
> +                                    migrate,
> +                                    common_caps, num_common_caps,
> +                                    caps, num_caps);
> +
> +    // 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 (display_channel_surface_has_canvas(worker->display_channel, 0))
> +        cursor_channel_init(channel, ccc);

It's not exactly related to this patch, but do we already have an
answer for this TODO? :-)

> +}
> +
>  /* TODO: special, perhaps use another dispatcher? */
>  static void handle_dev_cursor_connect(void *opaque, void *payload)
>  {
>      RedWorkerMessageCursorConnect *msg = payload;
>      RedWorker *worker = opaque;
> -    RedsStream *stream = msg->stream;
> -    RedClient *client = msg->client;
> -    int migration = msg->migration;
>
>      spice_info("cursor connect");
> -    red_connect_cursor(worker, client, stream, migration,
> -                       msg->common_caps, msg->num_common_caps,
> -                       msg->caps, msg->num_caps);
> +    cursor_connect(worker,
> +                   msg->client, msg->stream, msg->migration,
> +                   msg->common_caps, msg->num_common_caps,
> +                   msg->caps, msg->num_caps);
>      free(msg->caps);
>      free(msg->common_caps);
>  }
> --
> 2.4.3
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


ACK!
-- 
Fabiano Fidêncio


More information about the Spice-devel mailing list