Glib interface: dbus_g_object_type_install_info()

Claessens Xavier x_claessens at skynet.be
Mon Nov 7 11:00:12 PST 2005


On lun, 2005-11-07 at 19:46 +0100, Claessens Xavier wrote:
> On lun, 2005-11-07 at 18:12 +0100, Claessens Xavier wrote:
> > Hi,
> > I'm writing a plugin which uses DBUS. At initialisation I call 
> > 
> > dbus_g_object_type_install_info(...,&dbus_glib_remote_object_object_info) 
> > 
> > But when unloading the plugin (via dlclose)
> > dbus_glib_remote_object_object_info become unvalide and cause GLib to
> > crash.
> > 
> > So i'm looking for something like dbus_g_object_type_uninstall_info()
> > which I call before dlclose(). How can I do that ?
> > 
> > Thanks,
> > Xavier Claessens.
> 
> I see in D-BUS code:
> 
>   g_type_set_qdata (object_type,
> 		    dbus_g_object_type_dbus_metadata_quark (),
> 		    (gpointer) info);
> 
> The problem is that info can become invalide when do the dlclode(). How
> can I unset the 'info' data before invalidate it ? That's more a GLib
> question than a dbus one, I know...

I begin to understand the problem. I think dbus-glib miss a function
like:

void
dbus_g_object_type_uninstall_info (GType object_type,
				 const DBusGObjectInfo *info)
{
  g_return_if_fail (G_TYPE_IS_CLASSED (object_type));

  _dbus_g_value_types_init ();

  g_type_set_qdata (object_type,
		    dbus_g_object_type_dbus_metadata_quark (),
		    NULL);
}

To add in dbus-gobject.c at line 1534 (dbus version 0.50)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.freedesktop.org/archives/dbus/attachments/20051107/76e80daa/attachment.pgp


More information about the dbus mailing list