return;
}
- device_flags = (int) cb_data->extra_data;
+ device_flags = (int)(uintptr_t)cb_data->extra_data;
if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
return;
debug_fenter();
- GET_CB_DATA(cb_data, func, userdata, (void*) device_flags);
+ GET_CB_DATA(cb_data, func, userdata, (void*)(uintptr_t)device_flags);
ret = mm_sound_proxy_add_device_connected_callback(_mm_sound_device_connected_callback_wrapper_func,
cb_data, g_free, subs_id);
return;
}
- device_flags = (int) cb_data->extra_data;
+ device_flags = (int)(uintptr_t)cb_data->extra_data;
if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
return;
debug_fenter();
- GET_CB_DATA(cb_data, func, userdata, (void *) device_flags);
+ GET_CB_DATA(cb_data, func, userdata, (void *)(uintptr_t)device_flags);
ret = mm_sound_proxy_add_device_info_changed_callback(_mm_sound_device_info_changed_callback_wrapper_func,
cb_data, g_free, subs_id);
return;
}
- device_flags = (int) cb_data->extra_data;
+ device_flags = (int)(uintptr_t)cb_data->extra_data;
if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
return;
debug_fenter();
- GET_CB_DATA(cb_data, func, userdata, (void *) device_flags);
+ GET_CB_DATA(cb_data, func, userdata, (void *)(uintptr_t)device_flags);
ret = mm_sound_proxy_add_device_state_changed_callback(_mm_sound_device_state_changed_callback_wrapper_func,
cb_data, g_free, id);
return;
}
- device_flags = (int) cb_data->extra_data;
+ device_flags = (int)(uintptr_t)cb_data->extra_data;
if (!device_is_match_with_mask(device_type, io_direction, state, device_flags))
return;
debug_fenter();
- GET_CB_DATA(cb_data, func, userdata, (void *) device_flags);
+ GET_CB_DATA(cb_data, func, userdata, (void *)(uintptr_t)device_flags);
ret = mm_sound_proxy_add_device_running_changed_callback(_mm_sound_device_running_changed_callback_wrapper_func,
cb_data, g_free, id);
debug_fenter();
- GET_CB_DATA(cb_data, func, userdata, (void*)is_for_internal);
+ GET_CB_DATA(cb_data, func, userdata, (void*)(uintptr_t)is_for_internal);
ret = mm_sound_proxy_add_volume_changed_callback(_mm_sound_volume_changed_callback_wrapper_func, cb_data, g_free, subs_id);
goto cleanup;
}
+ g_mutex_init(&g_focus_sound_handle[index].focus_lock);
focus_init_callback(index, false);
cleanup:
goto cleanup;
}
- if (!g_mutex_trylock(&g_focus_sound_handle[index].focus_lock)) {
- debug_warning("maybe focus_callback is being called, try one more time..");
- usleep(2500000); /* 2.5 sec */
- if (g_mutex_trylock(&g_focus_sound_handle[index].focus_lock))
- debug_msg("finally got focus_lock");
- }
+ g_mutex_lock(&g_focus_sound_handle[index].focus_lock);
+
+ g_focus_sound_handle[index].is_destroying = true;
ret = mm_sound_proxy_unregister_focus(index);
if (ret == MM_ERROR_NONE)
else
debug_error("Error occurred : 0x%x", ret);
- g_mutex_unlock(&g_focus_sound_handle[index].focus_lock);
-
focus_deinit_callback(index, false);
g_focus_sound_handle[index].focus_fd = 0;
g_focus_sound_handle[index].focus_pid = 0;
g_focus_sound_handle[index].is_used = false;
focus_deinit_context(index, false);
+ g_mutex_unlock(&g_focus_sound_handle[index].focus_lock);
+ g_mutex_clear(&g_focus_sound_handle[index].focus_lock);
+
+ g_focus_sound_handle[index].is_destroying = false;
cleanup:
MMSOUND_LEAVE_CRITICAL_SECTION(&g_index_mutex);
debug_fleave();