[glib] Add private _g_bus_get_singleton_if_exists() function
- From: David Zeuthen <davidz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Add private _g_bus_get_singleton_if_exists() function
- Date: Wed, 18 Apr 2012 17:33:49 +0000 (UTC)
commit f8a8e9039889c090fb3323e195730b9e460396e4
Author: Xavier Claessens <xavier claessens collabora co uk>
Date: Fri Apr 6 14:51:09 2012 +0200
Add private _g_bus_get_singleton_if_exists() function
This is used by g_test_dbus_down() to ensure the GDBusConnection
gets disposed, but not create one if the singleton already got
disposed.
https://bugzilla.gnome.org/show_bug.cgi?id=672985
gio/gdbusconnection.c | 19 +++++++++++++++++++
gio/gdbusprivate.h | 3 +++
2 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c
index 8bf0dc3..6bd1d1d 100644
--- a/gio/gdbusconnection.c
+++ b/gio/gdbusconnection.c
@@ -6769,6 +6769,25 @@ get_uninitialized_connection (GBusType bus_type,
return ret;
}
+/* Called in any user thread, without holding locks. */
+GDBusConnection *
+_g_bus_get_singleton_if_exists (GBusType bus_type)
+{
+ GWeakRef *singleton;
+ GDBusConnection *ret = NULL;
+
+ G_LOCK (message_bus_lock);
+ singleton = message_bus_get_singleton (bus_type, NULL);
+ if (singleton == NULL)
+ goto out;
+
+ ret = g_weak_ref_get (singleton);
+
+ out:
+ G_UNLOCK (message_bus_lock);
+ return ret;
+}
+
/**
* g_bus_get_sync:
* @bus_type: A #GBusType.
diff --git a/gio/gdbusprivate.h b/gio/gdbusprivate.h
index 7230a8d..1ac7754 100644
--- a/gio/gdbusprivate.h
+++ b/gio/gdbusprivate.h
@@ -143,6 +143,9 @@ void _g_dbus_object_proxy_add_interface (GDBusObjectProxy *proxy,
void _g_dbus_object_proxy_remove_interface (GDBusObjectProxy *proxy,
const gchar *interface_name);
+/* Implemented in gdbusconnection.c */
+GDBusConnection *_g_bus_get_singleton_if_exists (GBusType bus_type);
+
G_END_DECLS
#endif /* __G_DBUS_PRIVATE_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]