diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2009-06-25 18:33:29 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2009-06-25 19:32:10 +0100 |
commit | 4f9297c52188bb6df8ecee61945cc0e364813c51 (patch) | |
tree | c4d90adf4a56bd31c1db2cde4fcef2d8351c70b4 /src/mcd-master.c | |
parent | 3557a696559cba12f363b2fc284a8263be47df87 (diff) | |
download | telepathy-mission-control-4f9297c52188bb6df8ecee61945cc0e364813c51.tar.gz |
McdMaster: inline disconnect_account_transport
Diffstat (limited to 'src/mcd-master.c')
-rw-r--r-- | 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 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); + } + + } } } |