summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2014-05-09 15:43:34 +0200
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2014-09-17 13:56:31 +0100
commit800e05976ddc6d2124117aeb35ba9141219b7d8d (patch)
tree61b4b6d5c380a95c31ecfa370eac07c34686a020
parent7e097b1d8447898c18f740db96e60f3eb27b49a5 (diff)
downloadtelepathy-glib-800e05976ddc6d2124117aeb35ba9141219b7d8d.tar.gz
base-client: be a GDBusObjectSkeleton
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=77882 Reviewed-by: Xavier Claessens Reviewed-by: Simon McVittie
-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;
};