[Spice-devel] [PATCH spice-server] Initialize earlier GLib type system if necessary

Frediano Ziglio fziglio at redhat.com
Thu Mar 30 12:27:45 UTC 2017


Before GLib 2.36 you should call g_type_init before attempting
any GLib type usage.
As constructor function are called before even main we need
to call g_type_init much before do_spice_init.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/red-channel-capabilities.c | 4 ++++
 server/reds.c                     | 3 ---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/server/red-channel-capabilities.c b/server/red-channel-capabilities.c
index c08cc1a..5a3984a 100644
--- a/server/red-channel-capabilities.c
+++ b/server/red-channel-capabilities.c
@@ -61,6 +61,10 @@ static void red_channel_capabilities_free(RedChannelCapabilities *caps)
 
 SPICE_CONSTRUCTOR_FUNC(red_channel_capabilities_construct)
 {
+#if !GLIB_CHECK_VERSION(2,36,0)
+    g_type_init();
+#endif
+
     red_channel_capabilities_type =
         g_boxed_type_register_static("RedChannelCapabilities",
                                      (GBoxedCopyFunc) red_channel_capabilities_dup,
diff --git a/server/reds.c b/server/reds.c
index c730daa..0b6ca12 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3401,9 +3401,6 @@ static int do_spice_init(RedsState *reds, SpiceCoreInterface *core_interface)
 {
     spice_debug("starting %s", VERSION);
 
-#if !GLIB_CHECK_VERSION(2,36,0)
-    g_type_init();
-#endif
     if (core_interface->base.major_version != SPICE_INTERFACE_CORE_MAJOR) {
         spice_warning("bad core interface version");
         goto err;
-- 
2.9.3



More information about the Spice-devel mailing list