[Spice-devel] [PATCH 3/5] worker: use GOnce to surround some global init in dispatcher

Frediano Ziglio fziglio at redhat.com
Fri Oct 16 04:13:50 PDT 2015


> 
> From: Marc-André Lureau <marcandre.lureau at gmail.com>
> 
> ---
>  server/red_dispatcher.c     | 10 +++++++---
>  server/spice_server_utils.h |  1 +
>  2 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c
> index b11cd42..7ad860c 100644
> --- a/server/red_dispatcher.c
> +++ b/server/red_dispatcher.c
> @@ -1076,11 +1076,15 @@ void red_dispatcher_init(QXLInstance *qxl)
>  
>      spice_return_if_fail(qxl->st->dispatcher == NULL);
>  
> -    quic_init();
> -    sw_canvas_init();
> +    static gsize initialized = FALSE;
> +    if (g_once_init_enter(&initialized)) {
> +        quic_init();
> +        sw_canvas_init();
>  #ifdef USE_OPENGL
> -    gl_canvas_init();
> +        gl_canvas_init();
>  #endif // USE_OPENGL
> +        g_once_init_leave(&initialized, TRUE);
> +    }
>  

In each of these functions there is a similar test.
I'll ditch the patch entirely.

>      red_dispatcher = spice_new0(RedDispatcher, 1);
>      ring_init(&red_dispatcher->async_commands);
> diff --git a/server/spice_server_utils.h b/server/spice_server_utils.h
> index b3ddc27..c8135db 100644
> --- a/server/spice_server_utils.h
> +++ b/server/spice_server_utils.h
> @@ -2,6 +2,7 @@
>  #define H_SPICE_SERVER_UTIL
>  
>  #include <unistd.h>
> +#include <glib.h>
>  
>  static inline void set_bit(int index, uint32_t *addr)
>  {

Frediano


More information about the Spice-devel mailing list