GDBusConnection: Make interface lookups O(1)
authorDavid Zeuthen <davidz@redhat.com>
Mon, 28 Mar 2011 15:33:36 +0000 (11:33 -0400)
committerDavid Zeuthen <davidz@redhat.com>
Mon, 28 Mar 2011 15:39:22 +0000 (11:39 -0400)
Signed-off-by: David Zeuthen <davidz@redhat.com>
gio/gdbusconnection.c

index 44d5446..4227bda 100644 (file)
@@ -3662,6 +3662,7 @@ typedef struct
 static void
 exported_interface_free (ExportedInterface *ei)
 {
+  g_dbus_interface_info_cache_release (ei->interface_info);
   g_dbus_interface_info_unref ((GDBusInterfaceInfo *) ei->interface_info);
 
   call_destroy_notify (ei->context,
@@ -4731,6 +4732,7 @@ g_dbus_connection_register_object (GDBusConnection            *connection,
   ei->user_data_free_func = user_data_free_func;
   ei->vtable = _g_dbus_interface_vtable_copy (vtable);
   ei->interface_info = g_dbus_interface_info_ref (interface_info);
+  g_dbus_interface_info_cache_build (ei->interface_info);
   ei->interface_name = g_strdup (interface_info->name);
   ei->context = g_main_context_get_thread_default ();
   if (ei->context != NULL)