vce_ prefix TCs are all failed, because dbus_open_connection was already established.
So, if only TC case which means that default appid is differ from current appid is,
it will ignore to established dbus connection.
Change-Id: I955ef8922d4bbc8ba7f74bd1572ee43383c29afc
int vcd_dbus_reconnect()
{
+ if (!g_conn_sender || !g_conn_listener) {
+ vcd_dbus_close_connection();
+
+ if (0 != vcd_dbus_open_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to reconnect");
+ return -1;
+ }
+
+ SLOG(LOG_INFO, TAG_VCD, "[DBUS] Reconnect");
+ return 0;
+ }
+
bool sender_connected = dbus_connection_get_is_connected(g_conn_sender);
bool listener_connected = dbus_connection_get_is_connected(g_conn_listener);
SLOG(LOG_WARN, TAG_VCD, "[DBUS] Sender(%s) Listener(%s)",
g_dbus_fd_handler = NULL;
}
- dbus_bus_release_name(g_conn_listener, VC_SERVER_SERVICE_NAME, &err);
+ if (NULL != g_conn_listener) {
+ dbus_bus_release_name(g_conn_listener, VC_SERVER_SERVICE_NAME, &err);
- if (dbus_error_is_set(&err)) {
- SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] dbus_bus_release_name() : %s", err.message);
- dbus_error_free(&err);
+ if (dbus_error_is_set(&err)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Dbus ERROR] dbus_bus_release_name() : %s", err.message);
+ dbus_error_free(&err);
+ }
}
-
__vcd_dbus_connection_free();
return 0;
return VCD_ERROR_OPERATION_FAILED;
}
- if (true == g_dynamic_engine.is_loaded) {
- SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent] Engine has already been loaded");
- return 0;
- }
-
if (NULL == callback) {
SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent ERROR] Invalid engine");
return VCD_ERROR_ENGINE_NOT_FOUND;
}
+ if (true == g_dynamic_engine.is_loaded) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Engine Agent] Engine has already been loaded");
+ return 0;
+ }
+
/* Get current engine info */
int ret = __internal_get_engine_info(callback);
if (0 != ret) {
#include <app_control.h>
#include <app_manager.h>
+#include <aul.h>
#include <dirent.h>
#include <sound_manager.h>
+#include <vconf.h>
#include "vc_cmd_db.h"
#include "vc_info_parser.h"
return ret;
}
+static bool __is_default_engine()
+{
+ char* engine = NULL;
+ engine = vconf_get_str(VCONFKEY_VC_ENGINE_DEFAULT);
+ if (NULL == engine) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to get sting for vc engine");
+ return FALSE;
+ }
+
+ char appid[1024] = {'\0', };
+ if (0 != aul_app_get_appid_bypid(getpid(), appid, sizeof(appid) - 1)) {
+ SLOG(LOG_ERROR, TAG_VCD, "[Server ERROR] Fail to get callee appid by pid");
+ }
+
+ SLOG(LOG_DEBUG, TAG_VCD, "[Server] VC Default Engine(%s), appId(%s)", engine, appid);
+ if (0 == strncmp(engine, appid, strlen(engine))) {
+ free(engine);
+ return TRUE;
+ }
+ free(engine);
+ return FALSE;
+}
+
int vcd_initialize(vce_request_callback_s *callback)
{
int ret = 0;
/* Initialize manager info */
vcd_client_manager_unset();
- /* Open dbus connection */
- if (0 != vcd_dbus_open_connection()) {
- SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to open connection");
- return VCD_ERROR_OPERATION_FAILED;
+ if (TRUE == __is_default_engine()) {
+ /* Open dbus connection */
+ if (0 != vcd_dbus_open_connection()) {
+ SLOG(LOG_ERROR, TAG_VCD, "[ERROR] Fail to open connection");
+ return VCD_ERROR_OPERATION_FAILED;
+ }
}
vcd_config_set_service_state(VCD_STATE_READY);