[telepathy-glib/master] Renamed tp_debug_sender_{get, dup} to copy tp_dbus_daemon_dup workings
Jonny Lamb
jonny.lamb at collabora.co.uk
Mon Aug 24 06:54:05 PDT 2009
Also switch to GObject singleton design to cleanly return a ref to the
same instance every time tp_debug_sender_dup is called.
Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>
---
docs/reference/telepathy-glib-sections.txt | 2 +-
telepathy-glib/debug-sender.c | 84 +++++++++++++++++++---------
telepathy-glib/debug-sender.h | 2 +-
3 files changed, 60 insertions(+), 28 deletions(-)
diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index bc99401..6247db8 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -3285,7 +3285,7 @@ TP_TYPE_SVC_CLIENT_OBSERVER
<TITLE>debug-sender</TITLE>
TpDebugSender
TpDebugMessage
-tp_debug_sender_get
+tp_debug_sender_dup
tp_debug_sender_add_message
<SUBSECTION Standard>
tp_debug_sender_get_type
diff --git a/telepathy-glib/debug-sender.c b/telepathy-glib/debug-sender.c
index 72de713..fbe2301 100644
--- a/telepathy-glib/debug-sender.c
+++ b/telepathy-glib/debug-sender.c
@@ -190,6 +190,50 @@ tp_debug_sender_finalize (GObject *object)
G_OBJECT_CLASS (tp_debug_sender_parent_class)->finalize (object);
}
+static GObject *
+tp_debug_sender_constructor (GType type,
+ guint n_construct_params,
+ GObjectConstructParam *construct_params)
+{
+ GObject *retval;
+
+ if (!debug_sender)
+ {
+ retval = G_OBJECT_CLASS (tp_debug_sender_parent_class)->constructor (
+ type, n_construct_params, construct_params);
+ debug_sender = TP_DEBUG_SENDER (retval);
+ g_object_add_weak_pointer (retval, (gpointer) &debug_sender);
+ }
+ else
+ {
+ retval = g_object_ref (debug_sender);
+ }
+
+ return retval;
+}
+
+static void
+tp_debug_sender_constructed (GObject *object)
+{
+ TpDBusDaemon *dbus_daemon;
+ GError *error = NULL;
+
+ debug_sender = g_object_new (TP_TYPE_DEBUG_SENDER, NULL);
+ dbus_daemon = tp_dbus_daemon_dup (&error);
+
+ if (error != NULL)
+ {
+ g_error_free (error);
+ return;
+ }
+
+ dbus_g_connection_register_g_object (
+ tp_proxy_get_dbus_connection (dbus_daemon),
+ "/org/freedesktop/Telepathy/debug", (GObject *) debug_sender);
+
+ g_object_unref (dbus_daemon);
+}
+
static void
tp_debug_sender_class_init (TpDebugSenderClass *klass)
{
@@ -210,6 +254,8 @@ tp_debug_sender_class_init (TpDebugSenderClass *klass)
object_class->get_property = tp_debug_sender_get_property;
object_class->set_property = tp_debug_sender_set_property;
object_class->finalize = tp_debug_sender_finalize;
+ object_class->constructor = tp_debug_sender_constructor;
+ object_class->constructed = tp_debug_sender_constructed;
/**
* TpDebugSender:enabled
@@ -288,39 +334,25 @@ tp_debug_sender_init (TpDebugSender *self)
}
/**
- * tp_debug_sender_get:
+ * tp_debug_sender_dup:
+ *
+ * Returns a #TpDebugSender instance on the bus this process was activated by
+ * (if it was launched by D-Bus service activation), or the session bus
+ * (otherwise).
*
- * <!-- -->
+ * The returned #TpDebugSender is cached; the same #TpDebugSender object will
+ * be returned by this function repeatedly, as long as at least one reference
+ * exists.
*
- * Returns: the #TpDebugSender instance for the current starter bus
+ * Returns: a reference to the #TpDebugSender instance for the current starter
+ * bus daemon
*
* Since: 0.7.UNRELEASED
*/
TpDebugSender *
-tp_debug_sender_get (void)
+tp_debug_sender_dup (void)
{
- if (G_UNLIKELY (debug_sender == NULL))
- {
- TpDBusDaemon *dbus_daemon;
- GError *error = NULL;
-
- debug_sender = g_object_new (TP_TYPE_DEBUG_SENDER, NULL);
- dbus_daemon = tp_dbus_daemon_dup (&error);
-
- if (error != NULL)
- {
- g_error_free (error);
- return NULL;
- }
-
- dbus_g_connection_register_g_object (
- tp_proxy_get_dbus_connection (dbus_daemon),
- "/org/freedesktop/Telepathy/debug", (GObject *) debug_sender);
-
- g_object_unref (dbus_daemon);
- }
-
- return debug_sender;
+ return g_object_new (TP_TYPE_DEBUG_SENDER, NULL);
}
diff --git a/telepathy-glib/debug-sender.h b/telepathy-glib/debug-sender.h
index 836c1ee..9915d27 100644
--- a/telepathy-glib/debug-sender.h
+++ b/telepathy-glib/debug-sender.h
@@ -68,7 +68,7 @@ struct _TpDebugSenderClass {
GType tp_debug_sender_get_type (void);
-TpDebugSender *tp_debug_sender_get (void);
+TpDebugSender *tp_debug_sender_dup (void);
void tp_debug_sender_add_message (TpDebugSender *self,
GTimeVal *timestamp,
--
1.5.6.5
More information about the telepathy-commits
mailing list