[Telepathy-commits] [telepathy-mission-control/master] Let derived objects reimplement manager creation
Alberto Mardegan
alberto.mardegan at nokia.com
Mon Nov 17 01:03:30 PST 2008
Virtualize the manager creation, so that subclasses of McdMaster can change it.
---
src/mcd-master.c | 16 +++++++++++++---
src/mcd-master.h | 2 ++
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/mcd-master.c b/src/mcd-master.c
index 009f572..c753546 100644
--- a/src/mcd-master.c
+++ b/src/mcd-master.c
@@ -700,6 +700,15 @@ mcd_master_constructor (GType type, guint n_params,
return (GObject *) master;
}
+static McdManager *
+mcd_master_create_manager (McdMaster *master, const gchar *unique_name)
+{
+ McdMasterPrivate *priv = MCD_MASTER_PRIV (master);
+
+ return mcd_manager_new (unique_name, priv->presence_frame,
+ priv->dispatcher, priv->dbus_daemon);
+}
+
static void
mcd_master_class_init (McdMasterClass * klass)
{
@@ -717,6 +726,8 @@ mcd_master_class_init (McdMasterClass * klass)
mission_class->disconnect = _mcd_master_disconnect;
mission_class->set_flags = _mcd_master_set_flags;
+ klass->create_manager = mcd_master_create_manager;
+
/* Properties */
g_object_class_install_property
(object_class, PROP_PRESENCE_FRAME,
@@ -1183,7 +1194,6 @@ McdManager *
mcd_master_lookup_manager (McdMaster *master,
const gchar *unique_name)
{
- McdMasterPrivate *priv = MCD_MASTER_PRIV (master);
const GList *managers, *list;
McdManager *manager;
@@ -1196,8 +1206,8 @@ mcd_master_lookup_manager (McdMaster *master,
return manager;
}
- manager = mcd_manager_new (unique_name, priv->presence_frame,
- priv->dispatcher, priv->dbus_daemon);
+ manager = MCD_MASTER_GET_CLASS (master)->create_manager
+ (master, unique_name);
if (G_UNLIKELY (!manager))
g_warning ("Manager %s not created", unique_name);
else
diff --git a/src/mcd-master.h b/src/mcd-master.h
index d50389e..d61a2af 100644
--- a/src/mcd-master.h
+++ b/src/mcd-master.h
@@ -53,6 +53,8 @@ struct _McdMaster
struct _McdMasterClass
{
McdControllerClass parent_class;
+ McdManager *(*create_manager) (McdMaster *master,
+ const gchar *unique_name);
};
struct mcd_channel_request;
--
1.5.6.5
More information about the Telepathy-commits
mailing list