summaryrefslogtreecommitdiff
path: root/gio/gio.c
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2012-09-03 08:33:13 -0400
committerDan Winship <danw@gnome.org>2012-09-03 08:33:13 -0400
commit3389e6b686d4aad739780927b4db333e7d8af0c0 (patch)
treea5f6717b41d14aa9872149bc128092703d6c4fcb /gio/gio.c
parent27f34bc1a3cf658929735108d927b710a24592f1 (diff)
downloadglib-wip/free.tar.gz
gio stuffwip/free
Diffstat (limited to 'gio/gio.c')
-rw-r--r--gio/gio.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/gio/gio.c b/gio/gio.c
index c4eff03d9..f8d8cf7b0 100644
--- a/gio/gio.c
+++ b/gio/gio.c
@@ -20,18 +20,25 @@
#include "gio.h"
-#include "gdbusprivate.h"
+#include "glib/gconstructor.h"
#include "gioprivate.h"
-void
-g_io_deinit (void)
+#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS (gio_dtor)
+#endif
+G_DEFINE_DESTRUCTOR (gio_dtor)
+
+static void
+gio_dtor (void)
{
- _g_dbus_deinitialize ();
- _g_local_file_deinit ();
- _g_socket_connection_factory_deinit ();
- _g_io_module_deinit ();
- _g_cancellable_deinit ();
- _g_io_scheduler_deinit ();
- _g_proxy_resolver_deinit ();
- _g_resolver_deinit ();
+ if (G_LIKELY (!g_mem_do_cleanup))
+ return;
+
+ g_cancellable_cleanup ();
+ g_dbus_cleanup ();
+ g_io_module_cleanup ();
+ g_io_scheduler_cleanup ();
+ g_local_file_cleanup ();
+ g_resolver_cleanup ();
+ g_socket_connection_factory_cleanup ();
}