gnome-main-menu r446 - in trunk: . main-menu/src



Author: federico
Date: Tue Apr 15 18:23:54 2008
New Revision: 446
URL: http://svn.gnome.org/viewvc/gnome-main-menu?rev=446&view=rev

Log:
Update to NetworkManager 0.7 API
2008-04-11  Tambet Ingo  <tambet gmail com>

	Adapt the API changes of libnm-glib.

	See https://bugzilla.novell.com/show_bug.cgi?id=377019 for the
	request to update to this API.

	* main-menu/src/network-status-agent.c
	(nm_get_first_active_device_info): nm_client_get_devices() now
	returns a 'const GPtrArray', update.
	(nm_get_device_info): The device properties returned from libnm-glib
	have been changed to constants, update.
	To allow notifications for all NMObject property changes, the
	"state-changed" signal is removed from NMDevice and replaced by a
	generic "notify::" signal.
	(nm_state_change_cb): Update the signature, ask for the state.

Signed-off-by: Federico Mena Quintero <federico gnu org>


Modified:
   trunk/ChangeLog
   trunk/main-menu/src/network-status-agent.c

Modified: trunk/main-menu/src/network-status-agent.c
==============================================================================
--- trunk/main-menu/src/network-status-agent.c	(original)
+++ trunk/main-menu/src/network-status-agent.c	Tue Apr 15 18:23:54 2008
@@ -51,7 +51,7 @@
 static NetworkStatusInfo *nm_get_first_active_device_info (NetworkStatusAgent *);
 static NetworkStatusInfo *nm_get_device_info (NetworkStatusAgent *, NMDevice *);
 
-static void nm_state_change_cb (NMDevice *device, NMDeviceState state, gpointer user_data);
+static void nm_state_change_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data);
 
 static NetworkStatusInfo *gtop_get_first_active_device_info (void);
 
@@ -150,25 +150,26 @@
 
 	NetworkStatusInfo *info = NULL;
 
-	GSList *devices;
-	GSList *node;
+	const GPtrArray *devices;
+	gint i;
 
 	if (!priv->nm_client)
 		return NULL;
 
 	devices = nm_client_get_devices (priv->nm_client);
 
-	for (node = devices; node; node = node->next)
+	for (i = 0; devices && i < devices->len; i++)
 	{
-		info = nm_get_device_info (agent, NM_DEVICE (node->data));
+		NMDevice *nm_device;
+
+		nm_device = NM_DEVICE (g_ptr_array_index (devices, i));
+		info = nm_get_device_info (agent, nm_device);
 
 		if (info)
 		{
 			if (info->active)
 			{
-				NMDevice * nm_device;
-				nm_device = NM_DEVICE (node->data);
-				g_signal_connect (nm_device, "state-changed", G_CALLBACK (nm_state_change_cb), agent);
+				g_signal_connect (nm_device, "notify::state", G_CALLBACK (nm_state_change_cb), agent);
 				break;
 			}
 
@@ -178,9 +179,6 @@
 		}
 	}
 
-	//the NM internal code does not free these. g_slist_foreach (devices, (GFunc) g_object_unref, NULL);
-	g_slist_free (devices);
-
 	return info;
 }
 
@@ -200,10 +198,10 @@
 nm_get_device_info (NetworkStatusAgent * agent, NMDevice * device)
 {
 	NetworkStatusInfo *info = g_object_new (NETWORK_STATUS_INFO_TYPE, NULL);
-	GArray *array;
+	const GArray *array;
 
-	info->iface = nm_device_get_iface (device);
-	info->driver = nm_device_get_driver (device);
+	info->iface = g_strdup (nm_device_get_iface (device));
+	info->driver = g_strdup (nm_device_get_driver (device));
 	info->active = (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) ? TRUE : FALSE;
 	if (! info->active)
 		return info;
@@ -225,48 +223,45 @@
 		if (array->len > 1)
 			info->secondary_dns = ip4_address_as_string (g_array_index (array, guint32, 1));
 	}
-	g_array_free (array, TRUE);
-
-	g_object_unref (cfg);
 
 	if (NM_IS_DEVICE_802_11_WIRELESS(device))
 	{
-		GSList *iter;
-		GSList *aps;
+		const GPtrArray *aps;
+		gint i;
 		info->type = DEVICE_TYPE_802_11_WIRELESS;
 
 		info->speed_mbs = nm_device_802_11_wireless_get_bitrate (NM_DEVICE_802_11_WIRELESS(device));
 		info->hw_addr = g_strdup (nm_device_802_11_wireless_get_hw_address (NM_DEVICE_802_11_WIRELESS(device)));
 		aps = nm_device_802_11_wireless_get_access_points (NM_DEVICE_802_11_WIRELESS(device));
-		for (iter = aps; iter; iter = iter->next)
+		for (i = 0; aps && i < aps->len; i++)
 		{
 			const GByteArray * ssid;
-			ssid = nm_access_point_get_ssid (NM_ACCESS_POINT (iter->data));
+			ssid = nm_access_point_get_ssid (NM_ACCESS_POINT (g_ptr_array_index (aps, i)));
 			if (ssid)
 				info->essid = g_strdup (nm_utils_escape_ssid (ssid->data, ssid->len));
 			else
 				info->essid = g_strdup ("(none)");
 			break; //fixme - we only show one for now
 		}
-
-		g_slist_foreach (aps, (GFunc) g_object_unref, NULL);
-		g_slist_free (aps);
 	}
 	else if (NM_IS_DEVICE_802_3_ETHERNET (device))
 	{
 		info->type = DEVICE_TYPE_802_3_ETHERNET;
 		info->speed_mbs = nm_device_802_3_ethernet_get_speed (NM_DEVICE_802_3_ETHERNET(device));
-		info->hw_addr = nm_device_802_3_ethernet_get_hw_address (NM_DEVICE_802_3_ETHERNET(device));
+		info->hw_addr = g_strdup (nm_device_802_3_ethernet_get_hw_address (NM_DEVICE_802_3_ETHERNET(device)));
 	}
 
 	return info;
 }
 
 static void
-nm_state_change_cb (NMDevice *device, NMDeviceState state, gpointer user_data)
+nm_state_change_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data)
 {
 	NetworkStatusAgent        *this = NETWORK_STATUS_AGENT (user_data);
 	NetworkStatusAgentPrivate *priv = NETWORK_STATUS_AGENT_GET_PRIVATE (this);
+	NMDeviceState              state;
+
+	state = nm_device_get_state (device);
 
 	if (priv->state_curr == state)
 		return;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]