From 9d1ab587994ff1cab91c4cace94ed76114059a50 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Mon, 15 Dec 2008 03:18:38 +0100 Subject: [PATCH] Indicate when signal strength of connection changes --- src/element.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/element.c b/src/element.c index a78a2be..72f4026 100644 --- a/src/element.c +++ b/src/element.c @@ -1139,6 +1139,9 @@ static void emit_property_changed(DBusConnection *conn, case CONNMAN_ELEMENT_TYPE_NETWORK: iface = CONNMAN_NETWORK_INTERFACE; break; + case CONNMAN_ELEMENT_TYPE_CONNECTION: + iface = CONNMAN_CONNECTION_INTERFACE; + break; default: return; } @@ -1984,12 +1987,22 @@ void connman_element_unregister_children(struct connman_element *element) static gboolean update_element(GNode *node, gpointer user_data) { struct connman_element *element = node->data; + struct connman_element *root = user_data; DBG("element %p name %s", element, element->name); if (element->driver && element->driver->update) element->driver->update(element); + if (element->type == CONNMAN_ELEMENT_TYPE_CONNECTION && + root->type == CONNMAN_ELEMENT_TYPE_NETWORK) { + if (element->strength != root->strength) { + element->strength = root->strength; + emit_property_changed(connection, element, "Strength", + DBUS_TYPE_BYTE, &element->strength); + } + } + return FALSE; } @@ -2003,7 +2016,7 @@ void connman_element_update(struct connman_element *element) if (node != NULL) g_node_traverse(node, G_PRE_ORDER, - G_TRAVERSE_ALL, -1, update_element, NULL); + G_TRAVERSE_ALL, -1, update_element, element); } int connman_element_set_enabled(struct connman_element *element, -- 1.7.9.5