# HG changeset patch # User dcbw@redhat.com # Date 1324515040 0 # Node ID 490ad537b77f779494db1fc7ea8a420d3266db6d # Parent cad13153ea924a6241c1ead58d7cf67a60fc1347 Support new connection states and signals for NetworkManager 0.9+. Fixes #13859. committer: Elliott Sales de Andrade diff -r cad13153ea92 -r 490ad537b77f ChangeLog --- a/ChangeLog Wed Dec 21 08:47:08 2011 +0000 +++ b/ChangeLog Thu Dec 22 00:50:40 2011 +0000 @@ -1,6 +1,10 @@ Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul version 3.0.0 (??/??/????): + libpurple: + * Support new connection states and signals for NetworkManager 0.9+. + (Dan Williams) (#13859) + AIM and ICQ: * Make buddy list management code more efficient. (Oliver) (#4816) * Don't try to format ICQ usernames entered as email addresses. diff -r cad13153ea92 -r 490ad537b77f libpurple/network.c --- a/libpurple/network.c Wed Dec 21 08:47:08 2011 +0000 +++ b/libpurple/network.c Thu Dec 22 00:50:40 2011 +0000 @@ -811,8 +811,20 @@ 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 @@ 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 @@ #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) {