[Spice-devel] [PATCH 12/18] Remove use of global 'reds' within RedWorker

Fabiano Fidêncio ffidenci at redhat.com
Mon Feb 15 23:06:59 UTC 2016


On Mon, 2016-02-15 at 16:01 +0000, Frediano Ziglio wrote:
> From: Jonathon Jongsma <jjongsma at redhat.com>
> 
> Get the server variable from the RedDispatcher instead of using the
> global variable
> ---
>  server/display-channel.c |  1 +
>  server/red-worker.c      | 15 +++++++++++----
>  server/red-worker.h      |  1 +
>  3 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/server/display-channel.c b/server/display-channel.c
> index 82dbe03..aa84356 100644
> --- a/server/display-channel.c
> +++ b/server/display-channel.c
> @@ -2030,6 +2030,7 @@ DisplayChannel* display_channel_new(RedWorker
> *worker, int migrate, int stream_v
>      static SpiceImageSurfacesOps image_surfaces_ops = {
>          image_surfaces_get,
>      };
> +    RedsState *reds = red_worker_get_server(worker);
>  
>      spice_info("create display channel");
>      display = (DisplayChannel *)red_worker_new_channel(
> diff --git a/server/red-worker.c b/server/red-worker.c
> index 76e8625..7f07b74 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -487,15 +487,16 @@ CommonWorkerChannel
> *red_worker_new_channel(RedWorker *worker, int size,
>      channel_cbs->alloc_recv_buf = common_alloc_recv_buf;
>      channel_cbs->release_recv_buf = common_release_recv_buf;
>  
> -    channel = red_channel_create_parser(size, reds, &worker->core,
> -                                        channel_type, worker->qxl-
> >id,
> -                                        TRUE /* handle_acks */,
> +    channel = red_channel_create_parser(size,
> red_worker_get_server(worker),
> +                                        &worker->core, channel_type,
> +                                        worker->qxl->id, TRUE /*
> handle_acks */,
>                                          spice_get_client_channel_par
> ser(channel_type, NULL),
>                                          handle_parsed,
>                                          channel_cbs,
>                                          migration_flags);
>      spice_return_val_if_fail(channel, NULL);
> -    red_channel_set_stat_node(channel, stat_add_node(reds, worker-
> >stat, name, TRUE));
> +    red_channel_set_stat_node(channel,
> stat_add_node(red_worker_get_server(worker),
> +                                                     worker->stat,
> name, TRUE));
>  
>      common = (CommonWorkerChannel *)channel;
>      common->qxl = worker->qxl;
> @@ -1476,6 +1477,7 @@ RedWorker* red_worker_new(QXLInstance *qxl,
> RedDispatcher *red_dispatcher)
>      RedWorker *worker;
>      Dispatcher *dispatcher;
>      const char *record_filename;
> +    RedsState *reds = red_dispatcher_get_server(red_dispatcher);
>  
>      qxl->st->qif->get_init_info(qxl, &init_info);
>  
> @@ -1600,3 +1602,8 @@ RedChannel*
> red_worker_get_display_channel(RedWorker *worker)
>  
>      return RED_CHANNEL(worker->display_channel);
>  }
> +
> +RedsState* red_worker_get_server(RedWorker *worker)
> +{
> +    return red_dispatcher_get_server(worker->red_dispatcher);
> +}
> diff --git a/server/red-worker.h b/server/red-worker.h
> index 8ef8287..f5f51bd 100644
> --- a/server/red-worker.h
> +++ b/server/red-worker.h
> @@ -96,6 +96,7 @@ bool       red_worker_run(RedWorker *worker);
>  QXLInstance* red_worker_get_qxl(RedWorker *worker);
>  RedChannel* red_worker_get_cursor_channel(RedWorker *worker);
>  RedChannel* red_worker_get_display_channel(RedWorker *worker);
> +SpiceServer* red_worker_get_server(RedWorker *worker);
>  
>  void red_drawable_unref(RedDrawable *red_drawable);
>  

Acked-by: Fabiano Fidêncio <fidencio at redhat.com>


More information about the Spice-devel mailing list