diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-08-13 10:57:20 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-08-13 14:00:43 -0500 |
commit | bab23b39767b664061ac2bcba747fe2b96561ca7 (patch) | |
tree | b882e9cbc37664bb81a2983e8d9bef9d9305c9ff | |
parent | 5d528043730bbfdacb1e9a7f7afb24e70b885c33 (diff) | |
download | ofono-bab23b39767b664061ac2bcba747fe2b96561ca7.tar.bz2 |
voicecall: Make hangup_all work for 911 calls
-rw-r--r-- | src/voicecall.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/voicecall.c b/src/voicecall.c index 5a803f78..4b4d3143 100644 --- a/src/voicecall.c +++ b/src/voicecall.c @@ -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, |