#define SOUND_BUFFER_LENGTH 2048
#define FOCUS_SERVER_READY "/tmp/.sound_server_ready"
+static const intptr_t CHECK_TIMER_DELETE = 1;
+
/* Sound buf save for test */
/*
#define BUF_SAVE_MODE
static struct timespec g_policy_set_time;
static Ecore_Timer* g_delayed_unset_policy_timer = NULL;
-static pthread_mutex_t g_delayed_unset_policy_mutex = PTHREAD_MUTEX_INITIALIZER;
static int g_focus_watch_id = -1;
#endif
}
-static void __set_policy_for_playing(int volume)
+static void __del_timer_for_delayed_recover(void* data)
{
- pthread_mutex_lock(&g_delayed_unset_policy_mutex);
if (NULL != g_delayed_unset_policy_timer) {
- ecore_timer_del(g_delayed_unset_policy_timer);
+ int result = (intptr_t)ecore_timer_del(g_delayed_unset_policy_timer);
g_delayed_unset_policy_timer = NULL;
+ SLOG(LOG_ERROR, tts_tag(), "[BG] Remove timer (%d)", result);
}
- pthread_mutex_unlock(&g_delayed_unset_policy_mutex);
+}
+
+static void __set_policy_for_playing(int volume)
+{
+ ecore_main_loop_thread_safe_call_async(__del_timer_for_delayed_recover, NULL);
/* Set stream info */
int ret;
static Eina_Bool __delay_recover_background_volume(void* data)
{
- pthread_mutex_lock(&g_delayed_unset_policy_mutex);
__recover_background_volume();
- g_delayed_unset_policy_timer = NULL;
-
SLOG(LOG_INFO, tts_tag(), "[BG] Delayed unset policy success");
- pthread_mutex_unlock(&g_delayed_unset_policy_mutex);
- return EINA_FALSE;
-}
-static void __set_timer_for_delay_recover(void* data)
-{
- long long int diff = (intptr_t)data;
- double delay = (double)(SND_MGR_DUCKING_DURATION - diff) / 1000.0;
- g_delayed_unset_policy_timer = ecore_timer_add(delay, __delay_recover_background_volume, NULL);
- SLOG(LOG_INFO, tts_tag(), "[BG] Delayed unset policy (%p), delay(%f)", g_delayed_unset_policy_timer, delay);
+ g_delayed_unset_policy_timer = NULL;
+ return EINA_FALSE;
}
static long long int __get_duration_from_last_volume_change()
return diff;
}
+static void __set_timer_for_delay_recover(void* data)
+{
+ if (NULL != g_delayed_unset_policy_timer) {
+ return;
+ }
+
+ long long int diff = __get_duration_from_last_volume_change();
+ if (diff > SND_MGR_DUCKING_DURATION) {
+ SLOG(LOG_INFO, tts_tag(), "[BG] Direct unset policy");
+ __recover_background_volume();
+ } else {
+ double delay = (double)(SND_MGR_DUCKING_DURATION - diff) / 1000.0;
+ g_delayed_unset_policy_timer = ecore_timer_add(delay, __delay_recover_background_volume, (void*)CHECK_TIMER_DELETE);
+ SLOG(LOG_INFO, tts_tag(), "[BG] Delayed unset policy (%p), delay(%f)", g_delayed_unset_policy_timer, delay);
+ }
+}
+
static void __unset_policy_for_playing()
{
int ret;
}
}
- pthread_mutex_lock(&g_delayed_unset_policy_mutex);
- if (NULL == g_delayed_unset_policy_timer) {
- long long int diff = __get_duration_from_last_volume_change();
- if (diff > SND_MGR_DUCKING_DURATION) {
- SLOG(LOG_INFO, tts_tag(), "[BG] Direct unset policy");
- __recover_background_volume();
- } else {
- intptr_t ptr_diff = diff;
- ecore_main_loop_thread_safe_call_async(__set_timer_for_delay_recover, (void*)ptr_diff);
- }
- }
- pthread_mutex_unlock(&g_delayed_unset_policy_mutex);
+ ecore_main_loop_thread_safe_call_async(__set_timer_for_delay_recover, NULL);
g_is_set_policy = false;
SLOG(LOG_ERROR, tts_tag(), "[BG] g_is_set_policy(%d)", g_is_set_policy);
-
-
SLOG(LOG_DEBUG, tts_tag(), "[Player DEBUG] unset policy for playing");
return;