[telepathy-mission-control/master] McdMaster: inline disconnect_account_transport
Simon McVittie
simon.mcvittie at collabora.co.uk
Thu Jun 25 10:33:29 PDT 2009
---
src/mcd-master.c | 55 +++++++++++++++++++++--------------------------------
1 files changed, 22 insertions(+), 33 deletions(-)
diff --git a/src/mcd-master.c b/src/mcd-master.c
index cd8c938..5b9267e 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);
+ }
+
+ }
}
}
--
1.5.6.5
More information about the telepathy-commits
mailing list