diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2014-05-09 15:43:34 +0200 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2014-09-17 13:56:31 +0100 |
commit | 800e05976ddc6d2124117aeb35ba9141219b7d8d (patch) | |
tree | 61b4b6d5c380a95c31ecfa370eac07c34686a020 | |
parent | 7e097b1d8447898c18f740db96e60f3eb27b49a5 (diff) | |
download | telepathy-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.c | 27 | ||||
-rw-r--r-- | telepathy-glib/base-client.h | 4 |
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; }; |