Update the g_thread_try_new by resource issue 80/179980/7 accepted/tizen/unified/20180611.015441 submit/tizen/20180607.021137
authorYoungHun Kim <yh8004.kim@samsung.com>
Wed, 23 May 2018 23:52:29 +0000 (08:52 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Mon, 4 Jun 2018 04:54:31 +0000 (13:54 +0900)
Change-Id: Ib35de6f9c6cbf2f5401b24246616fb0a2a86c862

packaging/mm-resource-manager.spec
src/lib/mm_resource_manager.h
src/lib/mm_resource_manager_priv.c

index 083c92d..168737d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mm-resource-manager
 Summary:    A Multimedia Resource Manager API
-Version:    0.2.5
+Version:    0.2.6
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 34bc8f4..964dabf 100644 (file)
@@ -216,6 +216,7 @@ typedef int (*mm_resource_manager_release_cb) (mm_resource_manager_h rm,
  * @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
index 2d7c039..db87af5 100644 (file)
@@ -130,6 +130,7 @@ int _mm_resource_manager_create(mm_resource_manager_app_class_e app_class,
 {
        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,
@@ -146,7 +147,16 @@ int _mm_resource_manager_create(mm_resource_manager_app_class_e app_class,
                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) {