summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--telepathy-glib/base-client.c27
-rw-r--r--telepathy-glib/base-client.h4
2 files changed, 28 insertions, 3 deletions
diff --git a/telepathy-glib/base-client.c b/telepathy-glib/base-client.c
index e9040e216..25c5e535d 100644
--- a/telepathy-glib/base-client.c
+++ b/telepathy-glib/base-client.c
@@ -205,7 +205,8 @@ static void approver_iface_init (gpointer, gpointer);
static void handler_iface_init (gpointer, gpointer);
static void requests_iface_init (gpointer, gpointer);
-G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TpBaseClient, tp_base_client, G_TYPE_OBJECT,
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE(TpBaseClient, tp_base_client,
+ G_TYPE_DBUS_OBJECT_SKELETON,
G_IMPLEMENT_INTERFACE(TP_TYPE_SVC_CLIENT, NULL);
G_IMPLEMENT_INTERFACE(TP_TYPE_SVC_CLIENT_OBSERVER, observer_iface_init);
G_IMPLEMENT_INTERFACE(TP_TYPE_SVC_CLIENT_APPROVER, approver_iface_init);
@@ -1191,9 +1192,26 @@ tp_base_client_set_property (GObject *object,
}
static void
+object_skeleton_take_interface (GDBusObjectSkeleton *skel,
+ GDBusInterfaceSkeleton *iface)
+{
+ g_dbus_object_skeleton_add_interface (skel, iface);
+ g_object_unref (iface);
+}
+
+static void
+object_skeleton_take_svc_interface (GDBusObjectSkeleton *skel,
+ GType type)
+{
+ object_skeleton_take_interface (skel,
+ tp_svc_interface_skeleton_new (skel, type));
+}
+
+static void
tp_base_client_constructed (GObject *object)
{
TpBaseClient *self = TP_BASE_CLIENT (object);
+ GDBusObjectSkeleton *skel = G_DBUS_OBJECT_SKELETON (self);
void (*chain_up) (GObject *) =
((GObjectClass *) tp_base_client_parent_class)->constructed;
GString *string;
@@ -1202,6 +1220,13 @@ tp_base_client_constructed (GObject *object)
if (chain_up != NULL)
chain_up (object);
+ object_skeleton_take_svc_interface (skel, TP_TYPE_SVC_CLIENT);
+ object_skeleton_take_svc_interface (skel, TP_TYPE_SVC_CLIENT_OBSERVER);
+ object_skeleton_take_svc_interface (skel, TP_TYPE_SVC_CLIENT_APPROVER);
+ object_skeleton_take_svc_interface (skel, TP_TYPE_SVC_CLIENT_HANDLER);
+ object_skeleton_take_svc_interface (skel,
+ TP_TYPE_SVC_CLIENT_INTERFACE_REQUESTS);
+
g_assert (self->priv->factory != NULL);
/* Ensure we have a GDBusConnection */
diff --git a/telepathy-glib/base-client.h b/telepathy-glib/base-client.h
index 0aabeddec..639cd0bf2 100644
--- a/telepathy-glib/base-client.h
+++ b/telepathy-glib/base-client.h
@@ -76,7 +76,7 @@ typedef void (*TpBaseClientClassHandleChannelImpl) (
struct _TpBaseClientClass {
/*<public>*/
- GObjectClass parent_class;
+ GDBusObjectSkeletonClass parent_class;
TpBaseClientClassObserveChannelImpl observe_channel;
TpBaseClientClassAddDispatchOperationImpl add_dispatch_operation;
TpBaseClientClassHandleChannelImpl handle_channel;
@@ -87,7 +87,7 @@ struct _TpBaseClientClass {
struct _TpBaseClient {
/*<private>*/
- GObject parent;
+ GDBusObjectSkeleton parent;
TpBaseClientPrivate *priv;
};