summaryrefslogtreecommitdiff
path: root/src/network.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-12-02 14:27:18 -0600
committerDenis Kenzior <denkenz@gmail.com>2011-12-02 15:58:35 -0600
commit6746715715e188bbf457b458683355fec460e848 (patch)
treedf8181d1bbacb855ae8882ae88cb83236dab1bff /src/network.c
parent3df763c4cc996ee3aee99b593392a13363423508 (diff)
downloadofono-6746715715e188bbf457b458683355fec460e848.tar.gz
network: Refactor sim_spdn_spdi_changed
Diffstat (limited to 'src/network.c')
-rw-r--r--src/network.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/network.c b/src/network.c
index 997c60f0..819547ee 100644
--- a/src/network.c
+++ b/src/network.c
@@ -2028,6 +2028,7 @@ static void sim_pnn_opl_changed(int id, void *userdata)
static void sim_spn_spdi_changed(int id, void *userdata)
{
struct ofono_netreg *netreg = userdata;
+ gboolean had_spn = netreg->spn != NULL && strlen(netreg->spn) > 0;
netreg->flags &= ~(NETWORK_REGISTRATION_FLAG_HOME_SHOW_PLMN |
NETWORK_REGISTRATION_FLAG_ROAMING_SHOW_SPN);
@@ -2038,18 +2039,13 @@ static void sim_spn_spdi_changed(int id, void *userdata)
sim_spdi_free(netreg->spdi);
netreg->spdi = NULL;
- if (netreg->current_operator) {
- DBusConnection *conn = ofono_dbus_get_connection();
- const char *path = __ofono_atom_get_path(netreg->atom);
- const char *operator;
-
- operator = get_operator_display_name(netreg);
-
- ofono_dbus_signal_property_changed(conn, path,
- OFONO_NETWORK_REGISTRATION_INTERFACE,
- "Name", DBUS_TYPE_STRING,
- &operator);
- }
+ /*
+ * We can't determine whether the property really changed
+ * without checking the name, before and after. Instead we use a
+ * simple heuristic, which will not always be correct
+ */
+ if (netreg->current_operator && had_spn)
+ netreg_emit_operator_display_name(netreg);
ofono_sim_read(netreg->sim_context, SIM_EFSPN_FILEID,
OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,