diff options
author | Alberto Mardegan <mardy@users.sourceforge.net> | 2007-10-17 12:08:24 +0000 |
---|---|---|
committer | Alberto Mardegan <mardy@users.sourceforge.net> | 2007-10-17 12:08:24 +0000 |
commit | db2e22dfb8acef2c353e56a5f4ddac0a31bda39c (patch) | |
tree | c245563d30f16c8bc1a711688776bf3faa5a5677 | |
parent | 033c5cc75127531ab4661e546f4c8c78dd2e2c5b (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-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/mcd-manager.c | 48 |
2 files changed, 16 insertions, 36 deletions
@@ -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); } } |