--- profiles/audio/hfp-hf.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/profiles/audio/hfp-hf.c b/profiles/audio/hfp-hf.c index f05e5d38f..5f8fde1cd 100644 --- a/profiles/audio/hfp-hf.c +++ b/profiles/audio/hfp-hf.c @@ -538,10 +538,25 @@ static void ciev_call_cb(uint8_t val, void *user_data) dev->call = !!val; - if (dev->call == TRUE) - g_slist_foreach(dev->calls, activate_calls, dev); - else + if (dev->call == TRUE) { + if (dev->calls == NULL) { + /* Create already active call during SLC */ + struct call *call; + + call = telephony_new_call(dev->telephony, + CALL_STATE_ACTIVE, + NULL); + if (telephony_call_register_interface(call)) { + telephony_free_call(call); + return; + } + dev->calls = g_slist_append(dev->calls, call); + } else { + g_slist_foreach(dev->calls, activate_calls, dev); + } + } else { g_slist_foreach(dev->calls, deactivate_active_calls, dev); + } } static void callsetup_deactivate(gpointer data, gpointer user_data) -- 2.43.0