/* pthread mutex */
static pthread_mutex_t g_allocated_handle_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t g_client_list_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t g_repeat_text_mutex = PTHREAD_MUTEX_INITIALIZER;
static unsigned int __client_generate_uid(unsigned int pid)
free(data->err_msg);
free(data->credential);
+
+ pthread_mutex_lock(&g_repeat_text_mutex);
free(data->text_repeat);
+ data->text_repeat = NULL;
+ pthread_mutex_unlock(&g_repeat_text_mutex);
+
memset(data, 0, sizeof(tts_client_s));
free(data);
return;
}
+ pthread_mutex_lock(&g_repeat_text_mutex);
if (NULL != client->text_repeat) {
free(client->text_repeat);
}
} else {
client->text_repeat = NULL;
}
+ pthread_mutex_unlock(&g_repeat_text_mutex);
}
-const char* tts_client_get_repeat_text(tts_client_s* client)
+char* tts_client_get_repeat_text(tts_client_s* client)
{
if (NULL == client || false == tts_client_is_valid_client(client)) {
return NULL;
}
- return client->text_repeat;
+ char *repeat_text = NULL;
+ pthread_mutex_lock(&g_repeat_text_mutex);
+ if (NULL != client->text_repeat) {
+ repeat_text = strdup(client->text_repeat);
+ }
+ pthread_mutex_unlock(&g_repeat_text_mutex);
+
+ return repeat_text;
}
int tts_client_new_utterance_id(tts_client_s* client)
tts_mode_e tts_client_get_mode(tts_client_s* client);
void tts_client_set_repeat_text(tts_client_s* client, const char* text);
-const char* tts_client_get_repeat_text(tts_client_s* client);
+char* tts_client_get_repeat_text(tts_client_s* client);
int tts_client_new_utterance_id(tts_client_s* client);
RETVM_IF(NULL == text_repeat || NULL == utt_id, TTS_ERROR_INVALID_PARAMETER, "[ERROR] Parameter is invalid.");
RETVM_IF(false == tts_client_is_valid_client(client), TTS_ERROR_INVALID_PARAMETER, "[ERROR] Client is invalid.");
- const char* repeat_text = tts_client_get_repeat_text(client);
+ char* repeat_text = tts_client_get_repeat_text(client);
if (NULL == repeat_text) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] There is no previous added texts. Please add texts");
return TTS_ERROR_OPERATION_FAILED;
int ret = __request_add_text(client, repeat_text, g_language, g_voice_type, g_speed, &new_utt_id);
if (TTS_ERROR_NONE != ret) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to add texts for repetition.");
+ free(repeat_text);
return ret;
}
ret = __request_play(client);
if (TTS_ERROR_NONE != ret) {
SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to play texts for repetition.");
+ free(repeat_text);
return ret;
}
SLOG(LOG_DEBUG, TAG_TTSC, "[DEBUG] text to repeat(%s), utt_id(%d)", repeat_text, new_utt_id);
*utt_id = new_utt_id;
- *text_repeat = strdup(repeat_text);
+ *text_repeat = repeat_text;
return TTS_ERROR_NONE;
}