while (1) {
if (true == player->is_paused_data) {
/* Resume player */
- sound_data = player->paused_data;
- player->paused_data = NULL;
+ if (NULL != sound_data) {
+ ttsd_data_clear_sound_data(&sound_data);
+ }
+ sound_data = (sound_data_s*)calloc(1, sizeof(sound_data_s));
+ char* temp = (char*)calloc(player->paused_data->data_size + 5, sizeof(char));
+ if (NULL == sound_data || NULL == temp || player->paused_data->data_size <= 0) {
+ SLOG(LOG_WARN, tts_tag(), "[Player WARNING] Out of memory OR paused_data is empty");
+ ttsd_data_clear_sound_data(&sound_data);
+ if (NULL != temp) {
+ free(temp);
+ temp = NULL;
+ }
+ sound_data = player->paused_data;
+ player->paused_data = NULL;
+ } else {
+ SLOG(LOG_INFO, tts_tag(), "[Player INFO] Copy paused_data to sound_data");
+ sound_data->data = NULL;
+ sound_data->rate = 0;
+ sound_data->data_size = 0;
+ sound_data->utt_id = player->paused_data->utt_id;
+ sound_data->event = player->paused_data->event;
+ sound_data->audio_type = player->paused_data->audio_type;
+ sound_data->rate = player->paused_data->rate;
+
+ sound_data->data = temp;
+ memcpy(sound_data->data, player->paused_data->data, player->paused_data->data_size);
+ sound_data->data_size = player->paused_data->data_size;
+ ttsd_data_clear_sound_data(&player->paused_data);
+ }
idx = player->idx;
if (APP_STATE_PAUSED == player->state) {
/* Save data */
SLOG(LOG_DEBUG, tts_tag(), "[Player] player(%p)", player);
+ ttsd_data_clear_sound_data(&player->paused_data);
+
player->paused_data = sound_data;
player->is_paused_data = true;
ret = sound_manager_destroy_stream_ducking(g_notification_stream_ducking);
if (SOUND_MANAGER_ERROR_NONE != ret)
SLOG(LOG_WARN, tts_tag(), "[Player WARNING] Fail to destroy notification stream ducking, ret(%d)", ret);
- g_notification_stream_ducking = NULL;
+ g_notification_stream_ducking = NULL;
} else {
SLOG(LOG_INFO, tts_tag(), "[Player INFO] Ducking handle for notification stream is already created");
}
new_client->is_paused_data = false;
new_client->idx = 0;
new_client->paused_data = NULL;
-
+
SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Player] Create player : uid(%d)", uid);
g_player_list = g_list_append(g_player_list, new_client);
if (uid == data->uid) {
g_player_list = g_list_remove_link(g_player_list, iter);
free(data);
- g_list_free(iter);
+ data = NULL;
+ g_list_free(iter);
break;
}
}
}
if (true == current->is_paused_data) {
- if (NULL != current->paused_data) {
- if (NULL != current->paused_data->data) {
- free(current->paused_data->data);
- current->paused_data->data = NULL;
- }
-
- free(current->paused_data);
- current->paused_data = NULL;
- }
+ SLOG(LOG_INFO, tts_tag(), "[Player INFO] Clear paused data");
+ ttsd_data_clear_sound_data(¤t->paused_data);
}
current->event = TTSE_RESULT_EVENT_FINISH;
data->state = APP_STATE_READY;
if (true == data->is_paused_data) {
- if (NULL != data->paused_data) {
- if (NULL != data->paused_data->data) {
- free(data->paused_data->data);
- data->paused_data->data = NULL;
- }
-
- free(data->paused_data);
- data->paused_data = NULL;
- }
+ SLOG(LOG_INFO, tts_tag(), "[Player INFO] Clear paused data");
+ ttsd_data_clear_sound_data(&data->paused_data);
}
data->is_paused_data = false;