Fix internal state error when api is called in thread 68/127368/1
authorWonnam Jang <wn.jang@samsung.com>
Thu, 27 Apr 2017 05:52:11 +0000 (14:52 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Thu, 27 Apr 2017 05:52:11 +0000 (14:52 +0900)
Change-Id: I9801d00d4c56246eaa686e0f40497b2c7a639657
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
client/stt.c

index 149ac44..b082568 100644 (file)
@@ -1592,12 +1592,13 @@ int stt_start(stt_h stt, const char* language, const char* type)
                return STT_ERROR_PERMISSION_DENIED;
        }
 
+       client->internal_state = STT_INTERNAL_STATE_STARTING;
        ret = stt_dbus_request_start(client->uid, temp, type, client->silence, appid, client->credential);
        if (0 != ret) {
                SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to start : %s", __stt_get_error_code(ret));
+               client->internal_state = STT_INTERNAL_STATE_NONE;
        } else {
                SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Start is successful but not done");
-               client->internal_state = STT_INTERNAL_STATE_STARTING;
        }
 
        if (NULL != temp)       free(temp);
@@ -1640,13 +1641,13 @@ int stt_stop(stt_h stt)
                return STT_ERROR_IN_PROGRESS_TO_PROCESSING;
        }
 
+       client->internal_state = STT_INTERNAL_STATE_STOPPING;
        int ret = stt_dbus_request_stop(client->uid);
-
        if (0 != ret) {
                SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to stop : %s", __stt_get_error_code(ret));
+               client->internal_state = STT_INTERNAL_STATE_NONE;
        } else {
                SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Stop is successful but not done");
-               client->internal_state = STT_INTERNAL_STATE_STOPPING;
        }
 
        SLOG(LOG_DEBUG, TAG_STTC, "=====");
@@ -1688,12 +1689,13 @@ int stt_cancel(stt_h stt)
                return STT_ERROR_IN_PROGRESS_TO_READY;
        }
 
+       client->internal_state = STT_INTERNAL_STATE_CANCELING;
        int ret = stt_dbus_request_cancel(client->uid);
        if (0 != ret) {
                SLOG(LOG_ERROR, TAG_STTC, "[ERROR] Fail to cancel : %s", __stt_get_error_code(ret));
+               client->internal_state = STT_INTERNAL_STATE_NONE;
        } else {
                SLOG(LOG_DEBUG, TAG_STTC, "[SUCCESS] Cancel is successful but not done");
-               client->internal_state = STT_INTERNAL_STATE_CANCELING;
        }
 
        SLOG(LOG_DEBUG, TAG_STTC, "=====");