pthread_mutex_lock(&g_tts_data_mutex);
- std::list<vc_tts_data_s*>::iterator iter;
-
try {
- iter = g_tts_data.insert(g_tts_data.end(), data);
+ g_tts_data.push_back(data);
} catch (const std::bad_alloc&) {
SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] Fail to insert tts data (bad alloc)");
pthread_mutex_unlock(&g_tts_data_mutex);
return VC_ERROR_NONE;
}
-int vc_data_get_tts_data(vc_tts_data_s** data)
+int vc_data_get_first_tts_data(vc_tts_data_s** data)
{
+ if (NULL == data) {
+ SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] tts data is NULL");
+ return VC_ERROR_INVALID_PARAMETER;
+ }
+
SLOG(LOG_DEBUG, TAG_VCC, "[DATA] tts_data : %p", *data);
pthread_mutex_lock(&g_tts_data_mutex);
-
- if (0 == g_tts_data.size()) {
+ if (g_tts_data.empty()) {
SLOG(LOG_DEBUG, TAG_VCC, "[DATA] There is no tts data");
*data = NULL;
pthread_mutex_unlock(&g_tts_data_mutex);
-
- return -1;
+ return VC_ERROR_OPERATION_FAILED;
}
- std::list<vc_tts_data_s*>::iterator iter;
-
- if (!g_tts_data.empty()) {
- iter = g_tts_data.begin();
- *data = *iter;
- g_tts_data.pop_front();
- }
+ *data = g_tts_data.front();
+ g_tts_data.pop_front();
pthread_mutex_unlock(&g_tts_data_mutex);
{
SLOG(LOG_DEBUG, TAG_VCC, "[DATA] clear tts data");
+ if (NULL == *data) {
+ SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] tts data is NULL");
+ return VC_ERROR_INVALID_PARAMETER;
+ }
+
pthread_mutex_lock(&g_tts_data_mutex);
- if (NULL != *data) {
- SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] event(%d) data(%p) size(%d)", (*data)->event, (*data)->data, (*data)->data_size);
+ vc_tts_data_s *temp = *data;
+ SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] event(%d) data(%p) size(%d)", temp->event, temp->data, temp->data_size);
- if (NULL != (*data)->data) {
- free((*data)->data);
- (*data)->data = NULL;
- }
+ if (temp->data)
+ free(temp->data);
+ temp->data = NULL;
- free(*data);
- *data = NULL;
- }
+ if (temp)
+ free(temp);
+ temp = NULL;
+
+ *data = NULL;
pthread_mutex_unlock(&g_tts_data_mutex);
pthread_mutex_lock(&g_tts_data_mutex);
- if (g_tts_data.empty()) {
+ if (g_tts_data.empty()) {
SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] There is no tts data");
pthread_mutex_unlock(&g_tts_data_mutex);
return -1;
}
std::list<vc_tts_data_s*>::iterator iter;
- for (iter = g_tts_data.begin(); (NULL != *iter && iter != g_tts_data.end()); ++iter) {
- if (utt_id == (*iter)->utt_id) {
- if (NULL != (*iter)->data) {
- free((*iter)->data);
- (*iter)->data = NULL;
- }
- g_tts_data.erase(iter);
- free(*iter);
+ iter = g_tts_data.begin();
+ while (iter != g_tts_data.end()) {
+ vc_tts_data_s *temp = nullptr;
+ temp = *iter;
+ if (nullptr != temp && utt_id == temp->utt_id) {
+ iter = g_tts_data.erase(iter);
+
+ if (temp->data)
+ free(temp->data);
+ temp->data = nullptr;
+ free(temp);
+ temp = nullptr;
+ } else {
+ iter++;
}
}