From aa76fd1782f7ab3c7ebf031065722f394961e37a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 8 Oct 2009 14:05:02 -0400 Subject: Moving the building of the EmpathyAccountManager to it's own function. --- src/status-provider-mc5.c | 24 +++++++++++++++++++----- src/status-provider-mc5.h | 4 ++-- 2 files changed, 21 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/status-provider-mc5.c b/src/status-provider-mc5.c index 671e459..e277fc7 100644 --- a/src/status-provider-mc5.c +++ b/src/status-provider-mc5.c @@ -104,6 +104,23 @@ status_provider_mc5_class_init (StatusProviderMC5Class *klass) return; } +/* Build our empathy account manager instance if we don't + have one. */ +static void +build_eam (StatusProviderMC5 * self) +{ + StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(self); + + if (priv->manager != NULL) { + return; + } + + priv->manager = EMPATHY_ACCOUNT_MANAGER(g_object_new(EMPATHY_TYPE_ACCOUNT_MANAGER, NULL)); + g_signal_connect(G_OBJECT(priv->manager), "global-presence-changed", G_CALLBACK(presence_changed), self); + + return; +} + /* Creating an instance of the status provider. We set the variables and create an EmpathyAccountManager object. It does all the hard work in this module of tracking MissionControl and enumerating the @@ -116,8 +133,6 @@ status_provider_mc5_init (StatusProviderMC5 *self) priv->status = STATUS_PROVIDER_STATUS_DISCONNECTED; priv->manager = NULL; - g_signal_connect(G_OBJECT(priv->manager), "global-presence-changed", G_CALLBACK(presence_changed), self); - return; } @@ -168,9 +183,8 @@ static void set_status (StatusProvider * sp, StatusProviderStatus status) { StatusProviderMC5Private * priv = STATUS_PROVIDER_MC5_GET_PRIVATE(sp); - if (priv->manager == NULL) { - priv->manager = EMPATHY_ACCOUNT_MANAGER(g_object_new(EMPATHY_TYPE_ACCOUNT_MANAGER, NULL)); - } + + build_eam(STATUS_PROVIDER_MC5(sp)); empathy_account_manager_request_global_presence(priv->manager, sp_to_tp_map[status], sp_to_mc_map[status], ""); diff --git a/src/status-provider-mc5.h b/src/status-provider-mc5.h index 2c03729..4d5659d 100644 --- a/src/status-provider-mc5.h +++ b/src/status-provider-mc5.h @@ -31,8 +31,8 @@ with this program. If not, see . G_BEGIN_DECLS #define STATUS_PROVIDER_MC5_TYPE (status_provider_mc5_get_type ()) -#define STATUS_PROVIDER_MC5(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STATUS_PROVIDER_MC5_TYPE, StatusProviderTelepathy)) -#define STATUS_PROVIDER_MC5_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STATUS_PROVIDER_MC5_TYPE, StatusProviderTelepathyClass)) +#define STATUS_PROVIDER_MC5(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), STATUS_PROVIDER_MC5_TYPE, StatusProviderMC5)) +#define STATUS_PROVIDER_MC5_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), STATUS_PROVIDER_MC5_TYPE, StatusProviderMC5Class)) #define IS_STATUS_PROVIDER_MC5(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), STATUS_PROVIDER_MC5_TYPE)) #define IS_STATUS_PROVIDER_MC5_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), STATUS_PROVIDER_MC5_TYPE)) #define STATUS_PROVIDER_MC5_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), STATUS_PROVIDER_MC5_TYPE, StatusProviderMC5Class)) -- cgit v1.2.3