[telepathy-gabble/master] Search channels should only appear on the bus when ready
Will Thompson
will.thompson at collabora.co.uk
Wed Aug 26 09:21:49 PDT 2009
---
src/base-channel.c | 35 ++++++++++++++++++-----------------
src/base-channel.h | 2 ++
src/search-channel.c | 1 +
3 files changed, 21 insertions(+), 17 deletions(-)
diff --git a/src/base-channel.c b/src/base-channel.c
index fb2dd4a..280b486 100644
--- a/src/base-channel.c
+++ b/src/base-channel.c
@@ -94,6 +94,24 @@ G_DEFINE_TYPE_WITH_CODE (GabbleBaseChannel, gabble_base_channel,
G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL);
)
+/**
+ * gabble_base_channel_register:
+ * @chan: a channel
+ *
+ * Make the channel appear on the bus. @chan->object_path must have been set
+ * to a valid path, which must not already be in use as another object's path.
+ */
+void
+gabble_base_channel_register (GabbleBaseChannel *chan)
+{
+ DBusGConnection *bus = tp_get_bus ();
+
+ g_assert (chan->object_path != NULL);
+
+ dbus_g_connection_register_g_object (bus, chan->object_path,
+ (GObject *) chan);
+}
+
static void
gabble_base_channel_init (GabbleBaseChannel *self)
{
@@ -137,22 +155,6 @@ gabble_base_channel_constructor (GType type,
}
static void
-gabble_base_channel_constructed (GObject *obj)
-{
- GabbleBaseChannel *chan = GABBLE_BASE_CHANNEL (obj);
- GObjectClass *object_class = G_OBJECT_CLASS (gabble_base_channel_parent_class);
- DBusGConnection *bus;
-
- if (object_class->constructed != NULL)
- object_class->constructed (obj);
-
- g_assert (chan->object_path != NULL);
-
- bus = tp_get_bus ();
- dbus_g_connection_register_g_object (bus, chan->object_path, obj);
-}
-
-static void
gabble_base_channel_get_property (GObject *object,
guint property_id,
GValue *value,
@@ -347,7 +349,6 @@ gabble_base_channel_class_init (GabbleBaseChannelClass *gabble_base_channel_clas
sizeof (GabbleBaseChannelPrivate));
object_class->constructor = gabble_base_channel_constructor;
- object_class->constructed = gabble_base_channel_constructed;
object_class->get_property = gabble_base_channel_get_property;
object_class->set_property = gabble_base_channel_set_property;
diff --git a/src/base-channel.h b/src/base-channel.h
index a6f9ab1..c5b6c40 100644
--- a/src/base-channel.h
+++ b/src/base-channel.h
@@ -58,6 +58,8 @@ struct _GabbleBaseChannel {
GabbleBaseChannelPrivate *priv;
};
+void gabble_base_channel_register (GabbleBaseChannel *chan);
+
GType gabble_base_channel_get_type (void);
/* TYPE MACROS */
diff --git a/src/search-channel.c b/src/search-channel.c
index 64e0a4f..42a8383 100644
--- a/src/search-channel.c
+++ b/src/search-channel.c
@@ -103,6 +103,7 @@ become_ready (GabbleSearchChannel *chan)
g_assert (chan->base.closed);
chan->base.closed = FALSE;
+ gabble_base_channel_register ((GabbleBaseChannel *) chan);
g_signal_emit (chan, signals[READY_OR_NOT], 0, 0, 0, NULL);
}
--
1.5.6.5
More information about the telepathy-commits
mailing list