From e0603f0c68d133374cf0e6fb05bb3e105e5546a4 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 26 Oct 2009 16:54:18 -0500 Subject: [PATCH] Add a master function for updating attached state --- src/gprs.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/gprs.c b/src/gprs.c index e0346549..8443f1bf 100644 --- a/src/gprs.c +++ b/src/gprs.c @@ -512,23 +512,27 @@ static char **gprs_contexts_path_list(GSList *context_list) return objlist; } -static void gprs_set_attached(struct ofono_gprs *gprs) +static void gprs_attached_update(struct ofono_gprs *gprs) { DBusConnection *conn = ofono_dbus_get_connection(); const char *path; + ofono_bool_t attached; dbus_bool_t value; - ofono_bool_t attached = gprs->driver_attached && - !(gprs->flags & GPRS_FLAG_DETACHED_AFTER_ROAMING); - if (attached != gprs->attached) { - gprs->attached = attached; + attached = gprs->driver_attached && + (gprs->status == NETWORK_REGISTRATION_STATUS_REGISTERED || + gprs->status == NETWORK_REGISTRATION_STATUS_ROAMING); - path = __ofono_atom_get_path(gprs->atom); - value = attached; - ofono_dbus_signal_property_changed(conn, path, - DATA_CONNECTION_MANAGER_INTERFACE, - "Attached", DBUS_TYPE_BOOLEAN, &value); - } + if (attached == gprs->attached) + return; + + gprs->attached = attached; + + path = __ofono_atom_get_path(gprs->atom); + value = attached; + ofono_dbus_signal_property_changed(conn, path, + DATA_CONNECTION_MANAGER_INTERFACE, + "Attached", DBUS_TYPE_BOOLEAN, &value); } static void gprs_attach_callback(const struct ofono_error *error, void *data)