From 314dfefca38e42bd6177385adf3043cfbf4ba07e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 2 Sep 2013 22:01:26 +0200 Subject: [PATCH] worker: use GOnce to surround some global init in dispatcher Acked-by: Frediano Ziglio Acked-by: Jonathon Jongsma --- 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 b11cd423..7ad860c3 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); + } 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 b3ddc27e..c8135dbd 100644 --- a/server/spice_server_utils.h +++ b/server/spice_server_utils.h @@ -2,6 +2,7 @@ #define H_SPICE_SERVER_UTIL #include +#include static inline void set_bit(int index, uint32_t *addr) {