diff options
author | Dan Williams <dcbw@redhat.com> | 2011-12-22 00:50:40 +0000 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2011-12-22 00:50:40 +0000 |
commit | 94a0e39d3eef2afdd3e9f6948ec92fe09d737f62 (patch) | |
tree | 9afb9e21ac6deed4187e287082d9ae3e13903227 /libpurple/network.c | |
parent | 17d7d3171690db36eb5533f2347275db1a4ef055 (diff) | |
download | pidgin-94a0e39d3eef2afdd3e9f6948ec92fe09d737f62.tar.gz |
Support new connection states and signals for NetworkManager 0.9+.
Fixes #13859.
committer: Elliott Sales de Andrade <qulogic@pidgin.im>
Diffstat (limited to 'libpurple/network.c')
-rw-r--r-- | libpurple/network.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/libpurple/network.c b/libpurple/network.c index 4e30d17f20..f0e4508477 100644 --- a/libpurple/network.c +++ b/libpurple/network.c @@ -811,8 +811,20 @@ purple_network_is_available(void) purple_debug_warning("network", "NetworkManager not active. Assuming connection exists.\n"); } - if (nm_state == NM_STATE_UNKNOWN || nm_state == NM_STATE_CONNECTED) - return TRUE; + switch (nm_state) + { + case NM_STATE_UNKNOWN: +#if NM_CHECK_VERSION(0,8,992) + case NM_STATE_CONNECTED_LOCAL: + case NM_STATE_CONNECTED_SITE: + case NM_STATE_CONNECTED_GLOBAL: +#else + case NM_STATE_CONNECTED: +#endif + return TRUE; + default: + break; + } return FALSE; @@ -1149,9 +1161,14 @@ purple_network_init(void) NM_DBUS_SERVICE, NM_DBUS_PATH, NM_DBUS_INTERFACE); + /* NM 0.6 signal */ dbus_g_proxy_add_signal(nm_proxy, "StateChange", G_TYPE_UINT, G_TYPE_INVALID); dbus_g_proxy_connect_signal(nm_proxy, "StateChange", G_CALLBACK(nm_state_change_cb), NULL, NULL); + /* NM 0.7 and later signal */ + dbus_g_proxy_add_signal(nm_proxy, "StateChanged", G_TYPE_UINT, G_TYPE_INVALID); + dbus_g_proxy_connect_signal(nm_proxy, "StateChanged", + G_CALLBACK(nm_state_change_cb), NULL, NULL); dbus_proxy = dbus_g_proxy_new_for_name(nm_conn, DBUS_SERVICE_DBUS, @@ -1186,6 +1203,7 @@ purple_network_uninit(void) #ifdef HAVE_NETWORKMANAGER if (nm_proxy) { dbus_g_proxy_disconnect_signal(nm_proxy, "StateChange", G_CALLBACK(nm_state_change_cb), NULL); + dbus_g_proxy_disconnect_signal(nm_proxy, "StateChanged", G_CALLBACK(nm_state_change_cb), NULL); g_object_unref(G_OBJECT(nm_proxy)); } if (dbus_proxy) { |