summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/call-forwarding.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index b2b6aa29..3c68bc45 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -436,6 +436,36 @@ static void set_new_cond_list(struct ofono_call_forwarding *cf,
if (new_cfu != old_cfu) {
ofono_bool_t status = new_cfu;
+ int i;
+
+ /*
+ * Emit signals to mask/unmask conditional cfs on cfu change
+ */
+ for (i = 0; i < 4; i++) {
+ if (i == CALL_FORWARDING_TYPE_UNCONDITIONAL)
+ continue;
+
+ l = g_slist_find_custom(cf->cf_conditions[i],
+ GINT_TO_POINTER(BEARER_CLASS_VOICE),
+ cf_condition_find_with_cls);
+
+ if (l == NULL)
+ continue;
+
+ if (new_cfu)
+ number = "";
+ else {
+ lc = l->data;
+
+ number = phone_number_to_string(
+ &lc->phone_number);
+ }
+
+ ofono_dbus_signal_property_changed(conn, path,
+ OFONO_CALL_FORWARDING_INTERFACE,
+ cf_type_lut[i],
+ DBUS_TYPE_STRING, &number);
+ }
ofono_dbus_signal_property_changed(conn, path,
OFONO_CALL_FORWARDING_INTERFACE,