Patch has been applied, thanks. I did make a couple of minor tweaks
Thanks. A question regarding this particular tweak:
diff --git a/src/radio-settings.c b/src/radio-settings.c
index cb0a598..eb2a42d 100644
@@ -126,8 +126,7 @@ static void radio_set_fast_dormancy(struct ofono_radio_settings *rs,
const char *path = __ofono_atom_get_path(rs->atom);
dbus_bool_t value = enable;
- if ((rs->flags & RADIO_SETTINGS_FLAG_CACHED) &&
- rs->fast_dormancy == enable)
+ if (rs->fast_dormancy == enable)
The fundamental problem here is that there is only a single CACHED flag for multiple
properties, which may be modified individually. So, either you get extra signals or you
get too few. I checked the CACHED flag here because otherwise the following might happen:
1. client tries to GetProperties() and gets the "Operation already in progress"
2. client waits for PropertyChanged signal to get the FastDormancy value
3. signal never comes because the default value happens to match the one returned by the
driver and the signal is suppressed
I do agree that sending extra signals is bad but I think that not sending a signal is even
worse. If the client cannot rely on getting a PropertyChanged signal after a busy error,
all it can do is resort to polling. I.e., every client has to implement a polling pattern
while (GetProperties() == BUSY)
Having a separate CACHED flag for each value would solve this optimally. Failing that, I
don't think a few extra signals is so bad. Forcing clients to poll is just ugly.
Am I missing something?