Merge "[Bugfix][T106BUG-181] Resolve the problem poweralarm not start on time"
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h b/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
index ec50ef7..3bb398f 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-call/include/libcall/lynq_call.h
@@ -64,6 +64,9 @@
int lynq_hangup_waiting_or_background(void);
int lynq_hangup_foreground_resume_background(void);
+/* add for T106bug-213 2023/9/18 */
+void lynq_release_wait_call();
+
/*lei add for API-163/API-164 2023/1/3*/
/**
* @brief wait_call_state_change
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp
index b40f6c1..58849e7 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -765,7 +765,6 @@
return LYNQ_E_PARAMETER_ANONALY;
}
g_module_init_flag = MODULE_SWITCHING;
- s_call_state_change_mutex = PTHREAD_MUTEX_INITIALIZER;
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
@@ -819,7 +818,6 @@
lynq_close_all_rc_socket_thread();
lynq_stop_call_list_loop();
g_module_init_flag = MODULE_CLOSED;
- pthread_mutex_destroy(&s_call_state_change_mutex);
return 0;
}
@@ -1457,7 +1455,10 @@
}
/*audio end*/
-
+void lynq_release_wait_call()
+{
+ pthread_cond_signal(&s_call_state_change_cond);
+}
bool is_support_urc(int urc_id)
{
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
index fa210e6..a35a192 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-voice/lynq-qser-voice.cpp
@@ -48,6 +48,10 @@
while (s_voice_thread_status)
{
lynq_wait_call_state_change(&handle);
+ if(s_voice_thread_status == 0)
+ {
+ return NULL;
+ }
lynq_get_current_call_state(&handle,&call_state,&toa,&direction,addr);
if (call_state == LYNQ_CALL_ACTIVE)
{
@@ -141,19 +145,14 @@
int qser_voice_call_removestatehandle(voice_client_handle_type h_voice)
{
- int ret;
- if (s_lynq_voice_tid != -1)
- {
- ret = pthread_cancel(s_lynq_voice_tid);
- LYDBGLOG("pthread cancel ret = %d",ret);
- }
- if (s_lynq_voice_tid != -1)
- {
- ret = pthread_join(s_lynq_voice_tid,NULL);
- LYDBGLOG("pthread cancel ret = %d",ret);
- s_lynq_voice_tid = -1;
- }
+
+ LYINFLOG("Enter removestatehandle !!!");
s_voice_thread_status = 0;
+ if(s_lynq_voice_tid != -1)
+ {
+ lynq_release_wait_call();
+ }
+
s_voice_cb = NULL;
return RESULT_OK;
}