Implement set/unset engine_changed_cb and Fix ttsd_dbus_server_get_private_data
[platform/core/uifw/tts.git] / common / tts_config_mgr.c
index 006afb4..45a8349 100644 (file)
@@ -96,9 +96,14 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id)
 
        /* Change default engine */
        iter = g_slist_nth(g_engine_list, 0);
-       engine_info = iter->data;
+        if (NULL == iter) {
+                SLOG(LOG_ERROR, tts_tag(), "[ERROR] No engine in list");
+                return TTS_CONFIG_ERROR_OPERATION_FAILED;
+        }
 
+       engine_info = iter->data;
        if (NULL == g_config_info) {
+                SLOG(LOG_ERROR, tts_tag(), "[ERROR] Invalid engine info in list");
                return TTS_CONFIG_ERROR_OPERATION_FAILED;
        }
 
@@ -149,8 +154,17 @@ int __tts_config_mgr_check_engine_is_valid(const char* engine_id)
                        free(g_config_info->language);
 
                        iter_voice = g_slist_nth(engine_info->voices, 0);
+                        if (NULL == iter_voice) {
+                                SLOG(LOG_ERROR, tts_tag(), "Fail to get voice list");
+                                return TTS_CONFIG_ERROR_OPERATION_FAILED;
+                        }
                        voice = iter_voice->data;
 
+                        if (NULL == voice || NULL == voice->language) {
+                                SLOG(LOG_ERROR, tts_tag(), "Fail to get voice info from list");
+                                return TTS_CONFIG_ERROR_OPERATION_FAILED;
+                        }
+
                        g_config_info->language = strdup(voice->language);
                        g_config_info->type = voice->type;
                        SLOG(LOG_DEBUG, tts_tag(), "Default voice is changed : lang(%s) type(%d)", voice->language, voice->type);
@@ -364,7 +378,7 @@ Eina_Bool tts_config_mgr_inotify_event_cb(void* data, Ecore_Fd_Handler *fd_handl
                                                SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine changed callback : uid(%d)", temp_client->uid);
                                                temp_client->engine_cb(g_config_info->engine_id, g_config_info->setting, 
                                                        g_config_info->language, g_config_info->type, 
-                                                       g_config_info->auto_voice, temp_client->user_data);
+                                                       g_config_info->auto_voice, g_config_info->credential, temp_client->user_data);
                                        }
                                }
 
@@ -882,9 +896,9 @@ static Eina_Bool __tts_config_mgr_engine_config_inotify_event_callback(void* dat
                        if (NULL != temp_client) {
                                if (NULL != temp_client->engine_cb) {
                                        SECURE_SLOG(LOG_DEBUG, tts_tag(), "Engine changed callback : uid(%d)", temp_client->uid);
-                                       temp_client->engine_cb(g_config_info->engine_id, g_config_info->setting, 
+                                       temp_client->engine_cb(g_config_info->engine_id, g_config_info->setting,        
                                                g_config_info->language, g_config_info->type, 
-                                               g_config_info->auto_voice, temp_client->user_data);
+                                               g_config_info->auto_voice, g_config_info->credential, temp_client->user_data);
                                }
                        }