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

Frediano Ziglio fziglio at redhat.com
Thu Mar 30 17:06:08 UTC 2017


> 
> On Thu, Mar 30, 2017 at 01:27:45PM +0100, Frediano Ziglio wrote:
> > 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,
> 
> How does this interact with SPICE_CONSTRUCTOR_FUNC(spice_log_init) in
> spice-common/log.c? Which one is going to get called first? Ideally, the
> logging one, but in this case, should the g_type_init() got there
> instead?

The linker decides, usually it's the order of object/libraries files.
So better to call in both. But I think spice_log_init just need the
thread (and so calls g_thread_init).

> 
> Acked-by: Christophe Fergeau <cfergeau at redhat.com>
> 
> if you think this is fine.
> 
> Christophe
> 

Was doing some tests with RHEL6.

Frediano


More information about the Spice-devel mailing list