* @retval #MM_RESOURCE_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #MM_RESOURCE_MANAGER_ERROR_INVALID_OPERATION Invalid operation
* @retval #MM_RESOURCE_MANAGER_ERROR_INVALID_STATE Invalid state
+ * @retval #MM_RESOURCE_MANAGER_ERROR_NOT_ENOUGH not enough free resource volume
* @see mm_resource_manager_destroy()
* @see mm_resource_manager_app_class_e
* @see mm_resource_manager_release_cb
{
mm_resource_manager_s *handle = *rm = NULL;
int ret;
+ GError *error = NULL;
handle = (mm_resource_manager_s *) calloc(1, sizeof(mm_resource_manager_s));
MM_RM_RETVM_IF(NULL == handle, MM_RESOURCE_MANAGER_ERROR_INVALID_OPERATION,
return ret;
}
- handle->dispatcher_thread = g_thread_new(NULL, __dispatcher_thread, handle);
+ handle->dispatcher_thread = g_thread_try_new(NULL, __dispatcher_thread, handle, &error);
+ if (!handle->dispatcher_thread) {
+ if (error) {
+ MM_RM_ERROR("dispatcher_thread creation failed : %s", error->message);
+ g_error_free(error);
+ }
+ __destroy_dispatcher(handle);
+ free(handle);
+ return MM_RESOURCE_MANAGER_ERROR_NOT_ENOUGH;
+ }
ret = __dbus_init_conf(handle);
if (ret != MM_RESOURCE_MANAGER_ERROR_NONE) {