summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberto Mardegan <mardy@users.sourceforge.net>2007-10-17 12:08:24 +0000
committerAlberto Mardegan <mardy@users.sourceforge.net>2007-10-17 12:08:24 +0000
commitdb2e22dfb8acef2c353e56a5f4ddac0a31bda39c (patch)
treec245563d30f16c8bc1a711688776bf3faa5a5677
parent033c5cc75127531ab4661e546f4c8c78dd2e2c5b (diff)
Create the connection manager proxy just before actually using it;
fixes a potential crash. git-svn-id: https://mission-control.svn.sourceforge.net/svnroot/mission-control/trunk@175 d91c8aed-3f2b-0410-a83d-924a1c20a0ba
-rw-r--r--ChangeLog4
-rw-r--r--src/mcd-manager.c48
2 files changed, 16 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog
index aa312546..d393bfd0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2007-10-17 Alberto Mardegan <alberto.mardegan@nokia.com>
+ * src/mcd-manager.c:
+ Create the connection manager proxy just before actually using it;
+ fixes a potential crash.
+
* libmissioncontrol/mc-profile.[hc]:
Add mc_profile_get_avatar_mime_type() for getting the preferred avatar
MIME type.
diff --git a/src/mcd-manager.c b/src/mcd-manager.c
index 3a61a6e9..babe7e04 100644
--- a/src/mcd-manager.c
+++ b/src/mcd-manager.c
@@ -93,6 +93,18 @@ _mcd_manager_create_connection (McdManager * manager, McAccount * account)
McdManagerPrivate *priv = MCD_MANAGER_PRIV (manager);
g_return_if_fail (mcd_manager_get_account_connection (manager, account) == NULL);
+ if (!priv->tp_conn_mgr)
+ {
+ g_return_if_fail (MC_IS_MANAGER (priv->mc_manager));
+
+ priv->tp_conn_mgr =
+ tp_connmgr_new (priv->dbus_connection,
+ mc_manager_get_bus_name (priv->mc_manager),
+ mc_manager_get_object_path (priv->mc_manager),
+ TP_IFACE_CONN_MGR_INTERFACE);
+ g_debug ("%s: Manager %s created", G_STRFUNC,
+ mc_manager_get_unique_name (priv->mc_manager));
+ }
connection = mcd_connection_new (priv->dbus_connection,
mc_manager_get_bus_name (priv->
@@ -113,8 +125,6 @@ _mcd_manager_create_connections (McdManager * manager)
GList *node;
McdManagerPrivate *priv = MCD_MANAGER_PRIV (manager);
- g_return_if_fail (TELEPATHY_IS_CONNMGR (priv->tp_conn_mgr));
-
for (node = priv->accounts; node; node = node->next)
{
/* Create a connection object for each account */
@@ -248,22 +258,6 @@ on_presence_requested_idle (gpointer data)
&& (requested_presence != MC_PRESENCE_OFFLINE
&& requested_presence != MC_PRESENCE_UNSET))
{
- if (!priv->tp_conn_mgr)
- {
- g_return_val_if_fail (MC_IS_MANAGER (priv->mc_manager),
- FALSE);
-
- priv->tp_conn_mgr =
- tp_connmgr_new (priv->dbus_connection,
- mc_manager_get_bus_name (priv->
- mc_manager),
- mc_manager_get_object_path (priv->
- mc_manager),
- TP_IFACE_CONN_MGR_INTERFACE);
- g_debug ("%s: Manager %s created", G_STRFUNC,
- mc_manager_get_unique_name (priv->mc_manager));
- }
-
_mcd_manager_create_connections (manager);
}
@@ -875,24 +869,6 @@ mcd_manager_add_account (McdManager * manager, McAccount * account)
if ((actual_presence != MC_PRESENCE_OFFLINE &&
actual_presence != MC_PRESENCE_UNSET))
{
- /* Also create the telepathy connection manager if not already
- * created */
- if (!priv->tp_conn_mgr)
- {
- g_return_val_if_fail (MC_IS_MANAGER (priv->mc_manager),
- FALSE);
-
- priv->tp_conn_mgr =
- tp_connmgr_new (priv->dbus_connection,
- mc_manager_get_bus_name (priv->
- mc_manager),
- mc_manager_get_object_path (priv->
- mc_manager),
- TP_IFACE_CONN_MGR_INTERFACE);
- g_debug ("%s: Manager %s created", G_STRFUNC,
- mc_manager_get_unique_name (priv->mc_manager));
- }
-
_mcd_manager_create_connection (manager, account);
}
}