Merge "Change uid and gid for service files" into tizen
[platform/core/uifw/tts.git] / server / ttsd_engine_agent.c
index 684a90f..5b16adb 100644 (file)
@@ -259,7 +259,7 @@ static int __update_voice_list()
 
 int ttsd_engine_agent_load_current_engine(ttse_request_callback_s* callback)
 {
-       SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] === ttsd_engine_agent_load_current_engine START");
+       SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] load current engine START");
 
 
        if (false == g_agent_init) {
@@ -388,7 +388,10 @@ int ttsd_engine_agent_unload_current_engine()
                data = iter->data;
 
                if (NULL != data) {
-                       if (NULL != data->lang)         free(data->lang);
+                       if (NULL != data->lang) {
+                               free(data->lang);
+                               data->lang = NULL;
+                       }
                        g_cur_voices = g_slist_remove(g_cur_voices, data);
                        free(data);
                        data = NULL;
@@ -691,7 +694,10 @@ int ttsd_engine_agent_set_default_voice(const char* language, int vctype)
                iter = g_slist_next(iter);
        }
 
-       if (NULL != g_engine_info->default_lang)        free(g_engine_info->default_lang);
+       if (NULL != g_engine_info->default_lang) {
+               free(g_engine_info->default_lang);
+               g_engine_info->default_lang = NULL;
+       }
 
        g_engine_info->default_lang = strdup(language);
        g_engine_info->default_vctype = vctype;
@@ -827,7 +833,7 @@ int ttsd_engine_load_voice(const char* lang, const int vctype)
                return TTSD_ERROR_OPERATION_FAILED;
        }
 
-       /* 2. increse ref count */
+       /* 2. increase ref count */
        data->client_ref_count++;
 
        /* 3. if ref count change 0 to 1 and not default, load voice */
@@ -901,7 +907,7 @@ int ttsd_engine_unload_voice(const char* lang, const int vctype)
                return TTSD_ERROR_OPERATION_FAILED;
        }
 
-       /* 2. Decrese ref count */
+       /* 2. Decrease ref count */
        data->client_ref_count--;
 
        /* 3. if ref count change 0 and not default, load voice */
@@ -951,7 +957,10 @@ int ttsd_engine_start_synthesis(const char* lang, int vctype, const char* text,
        int temp_type;
        if (true != ttsd_engine_select_valid_voice(lang, vctype, &temp_lang, &temp_type)) {
                SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to select default voice");
-               if (NULL != temp_lang)  free(temp_lang);
+               if (NULL != temp_lang) {
+                       free(temp_lang);
+                       temp_lang = NULL;
+               }
                return TTSD_ERROR_INVALID_VOICE;
        } else {
                SECURE_SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent] Start synthesis : language(%s), type(%d), speed(%d), text(%s), credential(%s)", 
@@ -1157,6 +1166,42 @@ int ttsd_engine_get_private_data(const char* key, char** data)
        return ret;
 }
 
+int ttsd_engine_check_app_agreed(const char* appid, bool* is_agreed)
+{
+       if (false == g_agent_init) {
+               SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Not Initialized");
+               return TTSD_ERROR_OPERATION_FAILED;
+       }
+
+       if (false == g_engine_info->is_loaded) {
+               SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] No loaded engine");
+               return TTSD_ERROR_ENGINE_NOT_FOUND;
+       }
+
+       if (NULL == appid || NULL == is_agreed) {
+               SLOG(LOG_WARN, tts_tag(), "[Engine Agent WARNING] Invalid parameter, appid is NULL");
+               return TTSD_ERROR_NONE;
+       }
+
+
+       if (NULL == g_engine_info->callbacks->check_app_agreed) {
+               SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Not supported feature");
+               return TTSD_ERROR_NOT_SUPPORTED_FEATURE;
+       }
+
+       int ret = 0;
+       bool tmp = true; // default value is true until now
+       ret = g_engine_info->callbacks->check_app_agreed(appid, &tmp);
+       if (0 != ret) {
+               SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Fail to check app agreed(%d)", ret);
+               return TTSD_ERROR_OPERATION_FAILED;
+       }
+
+       *is_agreed = tmp;
+
+       return ret;
+}
+
 void __free_voice_list(GList* voice_list)
 {
        GList *iter = NULL;
@@ -1171,8 +1216,12 @@ void __free_voice_list(GList* voice_list)
                        data = iter->data;
 
                        if (NULL != data) {
-                               if (NULL != data->language)     free(data->language);
+                               if (NULL != data->language) {
+                                       free(data->language);
+                                       data->language = NULL;
+                               }
                                free(data);
+                               data = NULL;
                        }
 
                        voice_list = g_list_remove_link(voice_list, iter);
@@ -1193,7 +1242,7 @@ int ttsd_print_voicelist()
        GSList *iter = NULL;
        ttsvoice_s* data = NULL;
 
-       SLOG(LOG_DEBUG, tts_tag(), "=== Voice list ===");
+       SLOG(LOG_DEBUG, tts_tag(), "@@@ Voice list @@@");
 
        if (g_slist_length(g_cur_voices) > 0) {
                /* Get a first item */
@@ -1218,14 +1267,14 @@ int ttsd_print_voicelist()
                }
        }
 
-       SLOG(LOG_DEBUG, tts_tag(), "==================");
+       SLOG(LOG_DEBUG, tts_tag(), "@@@@@");
 
        return 0;
 }
 
 int __internal_get_engine_info(ttse_request_callback_s* callback)
 {
-       SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] === inside __internal_get_engine_info");
+       SLOG(LOG_DEBUG, tts_tag(), "[Engine Agent DEBUG] internal get engine info");
 
        if (NULL == callback) {
                SLOG(LOG_ERROR, tts_tag(), "[Engine Agent ERROR] Invalid engine");