Fix internal state error when api is called in thread 64/127364/1
authorWonnam Jang <wn.jang@samsung.com>
Thu, 27 Apr 2017 05:46:31 +0000 (14:46 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Thu, 27 Apr 2017 05:46:31 +0000 (14:46 +0900)
Change-Id: I1aaab56682def70092c9241503e7ab844f87e580
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
client/vc_mgr.c

index ee31520..cad7905 100644 (file)
@@ -1684,10 +1684,12 @@ int vc_mgr_start(bool exclusive_command_option)
        ret = -1;
        count = 0;
        while (0 != ret) {
+               vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_STARTING);
                ret = vc_mgr_dbus_request_start(g_vc_m->handle, (int)recognition_mode, exclusive_command_option, start_by_client);
                if (0 != ret) {
                        if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to start request start : %s", __vc_mgr_get_error_code(ret));
+                               vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_NONE);
                                break;
                        } else {
                                SLOG(LOG_WARN, TAG_VCM, "[WARNING] retry start request start : %s", __vc_mgr_get_error_code(ret));
@@ -1696,12 +1698,12 @@ int vc_mgr_start(bool exclusive_command_option)
                                if (VC_RETRY_COUNT == count) {
                                        SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to request");
                                        vc_mgr_client_set_exclusive_command(g_vc_m, false);
+                                       vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_NONE);
                                        break;
                                }
                        }
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] start recognition");
-                       vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_STARTING);
                }
        }
 
@@ -1763,10 +1765,12 @@ int vc_mgr_stop()
        int count = 0;
        /* do request */
        while (0 != ret) {
+               vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_STOPPING);
                ret = vc_mgr_dbus_request_stop(g_vc_m->handle);
                if (0 != ret) {
                        if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_DEBUG, TAG_VCM, "[ERROR] Fail to stop request : %s", __vc_mgr_get_error_code(ret));
+                               vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_NONE);
                                break;
                        } else {
                                SLOG(LOG_WARN, TAG_VCM, "[WARNING] retry stop request : %s", __vc_mgr_get_error_code(ret));
@@ -1774,12 +1778,12 @@ int vc_mgr_stop()
                                count++;
                                if (VC_RETRY_COUNT == count) {
                                        SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to request");
+                                       vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_NONE);
                                        break;
                                }
                        }
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Stop recognition");
-                       vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_STOPPING);
                }
        }
 
@@ -1835,10 +1839,12 @@ int vc_mgr_cancel()
        int ret = -1;
        int count = 0;
        while (0 != ret) {
+               vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_CANCELING);
                ret = vc_mgr_dbus_request_cancel(g_vc_m->handle);
                if (0 != ret) {
                        if (VC_ERROR_TIMED_OUT != ret) {
                                SLOG(LOG_DEBUG, TAG_VCM, "[ERROR] Fail to cancel request : %s", __vc_mgr_get_error_code(ret));
+                               vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_NONE);
                                break;
                        } else {
                                SLOG(LOG_WARN, TAG_VCM, "[WARNING] retry cancel request : %s", __vc_mgr_get_error_code(ret));
@@ -1846,12 +1852,12 @@ int vc_mgr_cancel()
                                count++;
                                if (VC_RETRY_COUNT == count) {
                                        SLOG(LOG_ERROR, TAG_VCM, "[ERROR] Fail to request");
+                                       vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_NONE);
                                        break;
                                }
                        }
                } else {
                        SLOG(LOG_DEBUG, TAG_VCM, "[SUCCESS] Cancel recognition");
-                       vc_mgr_client_set_internal_state(g_vc_m, VC_INTERNAL_STATE_CANCELING);
                }
        }