Hi Timo,

<snip>

+static void clcc_poll_dialing_cb(gboolean ok, GAtResult *result,
+                       gpointer user_data)
+{
+       struct ofono_voicecall *vc = user_data;
+       struct voicecall_data *vd = ofono_voicecall_get_data(vc);
+       GSList *calls, *dialing;
+
+       if (!ok)
+               return;
+
+       calls = at_util_parse_clcc(result);
+       dialing = find_dialing(calls);
+
+       if (dialing == NULL) {
+               if (vd->clcc_source)
+                       g_source_remove(vd->clcc_source);
+
+               vd->clcc_source = g_timeout_add(POLL_CLCC_DELAY,
+                                                                               
                poll_clcc, vc);
+               return;
+       }
+
+       clcc_poll_cb(ok, result, user_data);

I'm not entirely happy that we parse the CLCC list twice here, once in this function and once in the clcc_poll_cb. Would setting a flag in ciev_callsetup_notify and checking it in clcc_poll_cb be a better idea?

e.g.
if (num_active > 1 || num_held > 1)
        vd->clcc_source = g_timeout_add(POLL_CLCC_INTERVAL, poll_clcc,
                                                        vc);

would go into something like:

poll_again = num_active > 1 || num_held > 1;
if (vd->flags & FLAG_NOKIA_N9_BROKEN_DIAL) {
        poll_again = TRUE;
        vd->flags &= FLAG_NOKIA_N9_BROKEN_DIAL;
}

if (poll_again)
        ....

Regards,
-Denis
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to