return FALSE;
}
+ if (!g_focus_sound_handle[focus_index].is_used) {
+ debug_warning("unsetting watch calllback has been already requested");
+ goto SKIP_CB_AND_RET;
+ }
+
debug_msg("lock focus_lock = %p", &g_focus_sound_handle[focus_index].focus_lock);
g_mutex_lock(&g_focus_sound_handle[focus_index].focus_lock);
}
}
+SKIP_CB_AND_RET:
#ifdef CONFIG_ENABLE_RETCB
{
int rett = 0;
#endif
}
- debug_msg("unlock focus_lock = %p", &g_focus_sound_handle[focus_index].focus_lock);
- g_mutex_unlock(&g_focus_sound_handle[focus_index].focus_lock);
+ if (g_focus_sound_handle[focus_index].is_used) {
+ debug_msg("unlock focus_lock = %p", &g_focus_sound_handle[focus_index].focus_lock);
+ g_mutex_unlock(&g_focus_sound_handle[focus_index].focus_lock);
+ }
debug_fleave();
-
return TRUE;
}
g_mutex_lock(&g_focus_sound_handle[index].focus_lock);
+ g_focus_sound_handle[index].is_used = false;
+
ret = mm_sound_proxy_unset_focus_watch_callback(g_focus_sound_handle[index].focus_tid, g_focus_sound_handle[index].handle, g_focus_sound_handle[index].is_for_session);
if (ret == MM_ERROR_NONE)
g_focus_sound_handle[index].focus_fd = 0;
g_focus_sound_handle[index].focus_tid = 0;
g_focus_sound_handle[index].handle = 0;
- g_focus_sound_handle[index].is_used = false;
cleanup:
MMSOUND_LEAVE_CRITICAL_SECTION(&g_index_mutex);
debug_fleave();