summaryrefslogtreecommitdiff
path: root/src/mcd-master.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2009-06-25 18:33:29 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2009-06-25 19:32:10 +0100
commit4f9297c52188bb6df8ecee61945cc0e364813c51 (patch)
treec4d90adf4a56bd31c1db2cde4fcef2d8351c70b4 /src/mcd-master.c
parent3557a696559cba12f363b2fc284a8263be47df87 (diff)
downloadtelepathy-mission-control-4f9297c52188bb6df8ecee61945cc0e364813c51.tar.gz
McdMaster: inline disconnect_account_transport
Diffstat (limited to 'src/mcd-master.c')
-rw-r--r--src/mcd-master.c55
1 files changed, 22 insertions, 33 deletions
diff --git a/src/mcd-master.c b/src/mcd-master.c
index cd8c9388..5b9267e4 100644
--- a/src/mcd-master.c
+++ b/src/mcd-master.c
@@ -168,54 +168,43 @@ mcd_master_transport_connected (McdMaster *master, McdTransportPlugin *plugin,
}
static void
-disconnect_account_transport (gpointer key, gpointer value, gpointer userdata)
-{
- McdAccount *account = MCD_ACCOUNT (value);
- TransportData *td = userdata;
-
- if (td->transport == _mcd_account_connection_get_transport (account))
- {
- McdConnection *connection;
-
- DEBUG ("account %s must disconnect",
- mcd_account_get_unique_name (account));
- connection = mcd_account_get_connection (account);
- if (connection)
- mcd_connection_close (connection);
- mcd_account_connection_bind_transport (account, NULL);
-
- /* it may be that there is another transport to which the account can
- * reconnect */
- if (_mcd_master_account_conditions_satisfied (td->master, account))
- {
- DEBUG ("conditions matched");
- _mcd_account_connect_with_auto_presence (account);
- }
- }
-}
-
-static void
mcd_master_transport_disconnected (McdMaster *master, McdTransportPlugin *plugin,
McdTransport *transport)
{
McdMasterPrivate *priv = MCD_MASTER_PRIV (master);
GHashTable *accounts;
- TransportData td;
GHashTableIter iter;
gpointer v;
DEBUG ("%s", mcd_transport_get_name (plugin, transport));
- td.master = master;
- td.plugin = plugin;
- td.transport = transport;
-
accounts = _mcd_account_manager_get_accounts (priv->account_manager);
g_hash_table_iter_init (&iter, accounts);
while (g_hash_table_iter_next (&iter, NULL, &v))
{
- disconnect_account_transport (NULL, v, &td);
+ McdAccount *account = MCD_ACCOUNT (v);
+
+ if (transport == _mcd_account_connection_get_transport (account))
+ {
+ McdConnection *connection;
+
+ DEBUG ("account %s must disconnect",
+ mcd_account_get_unique_name (account));
+ connection = mcd_account_get_connection (account);
+ if (connection)
+ mcd_connection_close (connection);
+ mcd_account_connection_bind_transport (account, NULL);
+
+ /* it may be that there is another transport to which the account
+ * can reconnect */
+ if (_mcd_master_account_conditions_satisfied (master, account))
+ {
+ DEBUG ("conditions matched");
+ _mcd_account_connect_with_auto_presence (account);
+ }
+
+ }
}
}