voicecall: Make hangup_all work for 911 calls

This commit is contained in:
Denis Kenzior 2010-08-13 10:57:20 -05:00
parent 5d52804373
commit bab23b3976
1 changed files with 18 additions and 7 deletions

View File

@ -793,14 +793,25 @@ static void voicecalls_release_next(struct ofono_voicecall *vc)
vc->release_list = g_slist_remove(vc->release_list, call);
if (vc->driver->hangup_active != NULL &&
(call->call->status == CALL_STATUS_ALERTING ||
call->call->status == CALL_STATUS_DIALING ||
call->call->status == CALL_STATUS_INCOMING))
if (vc->driver->hangup_active == NULL)
goto fallback;
if (call->call->status == CALL_STATUS_ACTIVE &&
voicecalls_num_active(vc) == 1) {
vc->driver->hangup_active(vc, multirelease_callback, vc);
else
vc->driver->release_specific(vc, call->call->id,
multirelease_callback, vc);
return;
}
if (call->call->status == CALL_STATUS_ALERTING ||
call->call->status == CALL_STATUS_DIALING ||
call->call->status == CALL_STATUS_INCOMING) {
vc->driver->hangup_active(vc, multirelease_callback, vc);
return;
}
fallback:
vc->driver->release_specific(vc, call->call->id,
multirelease_callback, vc);
}
static DBusMessage *manager_get_properties(DBusConnection *conn,