Modify retry logic using thread 15/172115/1
authorWonnam Jang <wn.jang@samsung.com>
Thu, 11 Jan 2018 02:45:34 +0000 (11:45 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Mon, 12 Mar 2018 02:50:34 +0000 (02:50 +0000)
Change-Id: I497ca5ad4cf7f2e095e27ae23f9b35d311b867a6
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
(cherry picked from commit 3a6c4c582b80fa0dd884f1a85062ae7113526a70)

src/vc_elm_widget_wrapper.c

index df9ba35dbbd7d805fe5d23e615d471c38a03bc76..451bd9d96e110fb101e7bc228bd421ce177ef985 100644 (file)
@@ -83,22 +83,24 @@ static void __vc_widget_send_current_command_group_cb(vc_cmd_list_h *vc_group, v
        VC_ELM_LOG_DBG("SEND CURRENT COMMAND GROUP cb CALLED");
 }
 
-int _vc_elm_widget_wrapper_initialize()
+static void __start_initialize_thread(void *data, Ecore_Thread *thread)
 {
+       (void)data;
+
        char *lang = NULL;
        if (vcw.initialized) {
                VC_ELM_LOG_ERR("already initialized");
-               return 0;
+               return;
        }
-       vcw.initialized = 1;
 
        int retry_cnt = 0;
-       int ret = 0;
+       int ret = -1;
        while (retry_cnt < MAX_RETRY_CNT && 0 != (ret = vc_widget_initialize(&g_vc_w))) {
                VC_ELM_LOG_ERR("Fail to vc_widet_initialize, ret(%d)", ret);
                usleep(500000);
                retry_cnt++;
        }
+
        VC_ERROR_CHECK(vc_widget_set_error_cb(g_vc_w, &__vc_error_cb, NULL));
        VC_ERROR_CHECK(vc_widget_set_show_tooltip_cb(g_vc_w, &__vc_show_tooltip_callback, NULL));
        VC_ERROR_CHECK(vc_widget_set_result_cb(g_vc_w, &__vc_result_cb, NULL));
@@ -109,8 +111,46 @@ int _vc_elm_widget_wrapper_initialize()
        VC_ERROR_CHECK(vc_widget_prepare(g_vc_w));
        VC_ELM_LOG_DBG("VC default language used %s", lang);
        vcw.lang = lang;
+       vcw.initialized = 1;
 
-       return 1;
+       VC_ELM_LOG_ERR("[SUCCESS] vc elm initialized");
+       return;
+}
+
+static void __end_initialize_thread(void *data, Ecore_Thread *thread)
+{
+       VC_ELM_LOG_ERR("[SUCCESS] End initialize thread");
+}
+
+int _vc_elm_widget_wrapper_initialize()
+{
+       char *lang = NULL;
+       if (vcw.initialized) {
+               VC_ELM_LOG_ERR("already initialized");
+               return 0;
+       }
+
+       int ret = -1;
+       if (0 != (ret = vc_widget_initialize(&g_vc_w))) {
+               VC_ELM_LOG_ERR("Fail to vc_widet_initialize, ret(%d)", ret);
+               ecore_thread_run(__start_initialize_thread, __end_initialize_thread, NULL, NULL);
+               return ret;
+       }
+
+       VC_ERROR_CHECK(vc_widget_set_error_cb(g_vc_w, &__vc_error_cb, NULL));
+       VC_ERROR_CHECK(vc_widget_set_show_tooltip_cb(g_vc_w, &__vc_show_tooltip_callback, NULL));
+       VC_ERROR_CHECK(vc_widget_set_result_cb(g_vc_w, &__vc_result_cb, NULL));
+       VC_ERROR_CHECK(vc_widget_set_state_changed_cb(g_vc_w, &__vc_state_changed_cb, NULL));
+       VC_ERROR_CHECK(vc_widget_set_service_state_changed_cb(g_vc_w, &__vc_service_state_changed_cb, NULL));
+       VC_ERROR_CHECK(vc_widget_set_current_language_changed_cb(g_vc_w, &__vc_language_changed_cb, NULL));
+       VC_ERROR_CHECK(vc_widget_set_send_current_command_list_cb(g_vc_w, __vc_widget_send_current_command_group_cb, NULL));
+       VC_ERROR_CHECK(vc_widget_prepare(g_vc_w));
+       VC_ELM_LOG_DBG("VC default language used %s", lang);
+       vcw.lang = lang;
+       vcw.initialized = 1;
+
+       VC_ELM_LOG_ERR("[SUCCESS] vc elm initialized");
+       return 0;
 }
 
 int _vc_elm_widget_wrapper_deinitialize()