using namespace std;
-typedef struct
+typedef struct
{
char* lang;
int vctype;
}used_voice_s;
-typedef struct
+typedef struct
{
int pid;
int uid;
static vector<app_data_s> g_app_list;
+static pthread_mutex_t g_speak_data_mutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t g_sound_data_mutex = PTHREAD_MUTEX_INITIALIZER;
/*
int __data_show_sound_list(int index)
{
SLOG(LOG_DEBUG, tts_tag(), "----- Sound list -----");
-
+
unsigned int i = 0;
std::list<sound_data_s*>::iterator iter;
for (iter = g_app_list[index].m_wav_data.begin(); iter != g_app_list[index].m_wav_data.end(); iter++) {
#ifdef DATA_DEBUG
__data_show_list();
-#endif
+#endif
return TTSD_ERROR_NONE;
}
int index = 0;
index = ttsd_data_is_client(uid);
-
+
if (index < 0) {
SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%d)", uid);
return -1;
#ifdef DATA_DEBUG
__data_show_list();
-#endif
+#endif
return TTSD_ERROR_NONE;
}
for (int i = 0; i < vsize; i++) {
if(g_app_list[i].uid == uid) {
- return i;
+ return i;
}
}
int index;
index = ttsd_data_is_client(uid);
-
+
if (index < 0) {
SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%d)", uid);
return TTSD_ERROR_INVALID_PARAMETER;
{
int index = 0;
index = ttsd_data_is_client(uid);
-
+
if (index < 0) {
SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%d)", uid);
return TTSD_ERROR_INVALID_PARAMETER;
}
+ /* mutex is locked */
+ pthread_mutex_lock(&g_speak_data_mutex);
int size = g_app_list[index].m_speak_data.size();
+
+ /* mutex is unlocked */
+ pthread_mutex_unlock(&g_speak_data_mutex);
+
return size;
}
if (NULL != iter->lang) {
free(iter->lang);
}
- }
+ }
g_app_list[index].m_used_voice.clear();
SECURE_SLOG(LOG_ERROR, tts_tag(), "[DATA ERROR] uid is not valid (%d)", uid);
return TTSD_ERROR_INVALID_PARAMETER;
}
-
+
+ /* mutex is locked */
+ pthread_mutex_lock(&g_speak_data_mutex);
+
g_app_list[index].m_speak_data.insert(g_app_list[index].m_speak_data.end(), data);
if (1 == data->utt_id)
#ifdef DATA_DEBUG
__data_show_text_list(index);
-#endif
+#endif
+ pthread_mutex_unlock(&g_speak_data_mutex);
+
return TTSD_ERROR_NONE;
}
return TTSD_ERROR_INVALID_PARAMETER;
}
+ /* mutex is locked */
+ pthread_mutex_lock(&g_speak_data_mutex);
+
if (0 == g_app_list[index].m_speak_data.size()) {
#ifdef DATA_DEBUG
- SLOG(LOG_WARN, tts_tag(), "[DATA WARNING] There is no speak data");
-#endif
+ SLOG(LOG_WARN, tts_tag(), "[DATA WARNING] There is no speak data");
+#endif
+ pthread_mutex_unlock(&g_speak_data_mutex);
return -1;
}
#ifdef DATA_DEBUG
__data_show_text_list(index);
-#endif
+#endif
+ pthread_mutex_unlock(&g_speak_data_mutex);
+
return TTSD_ERROR_NONE;
}
#ifdef DATA_DEBUG
__data_show_sound_list(index);
-#endif
+#endif
/* mutex is unlocked */
pthread_mutex_unlock(&g_sound_data_mutex);
#ifdef DATA_DEBUG
__data_show_sound_list(index);
-#endif
+#endif
/* mutex is unlocked */
pthread_mutex_unlock(&g_sound_data_mutex);
return TTSD_ERROR_INVALID_PARAMETER;
}
+ /* mutex is locked */
+ pthread_mutex_lock(&g_sound_data_mutex);
+
int removed_last_uttid = -1;
speak_data_s* temp_speak = NULL;
sound_data_s* temp_sound = NULL;
g_app_list[index].m_speak_data.clear();
g_app_list[index].m_wav_data.clear();
+ /* mutex is unlocked */
+ pthread_mutex_unlock(&g_sound_data_mutex);
+
return TTSD_ERROR_NONE;
}
#ifdef DATA_DEBUG
__data_show_list();
-#endif
-
+#endif
+
/* Copy app info */
vector<app_data_s> temp_app_list;
int vsize = g_app_list.size();
for (i = 0;i < vsize;i++) {
temp_app_list.erase(temp_app_list.begin());
}
-
+
return 0;
}
for (int i = 0; i < vsize; i++) {
if(g_app_list[i].state == APP_STATE_PLAYING) {
- return g_app_list[i].uid;
+ return g_app_list[i].uid;
}
}
for (int i = 0;i < vsize;i++) {
if(g_app_list[i].pid == pid) {
- number++;
+ number++;
}
}
}
fprintf(fp, "----------------------");
-
+
/* get speck data */
fprintf(fp, "----- Text list -----");
i++;
}
fprintf(fp, "---------------------");
-
+
return 0;
}