} while (0 != ret);
} else {
SLOG(LOG_WARN, TAG_TTSC, "[WARNING] Do not request finalize : g_sr(%d) mode(%d)", g_screen_reader, client->mode);
+ ret = tts_dbus_remove_match(client->mode);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to remove match : %s", __tts_get_error_code(ret));
+ }
}
client->before_state = client->current_state;
} while (0 != ret);
} else {
SLOG(LOG_WARN, TAG_TTSC, "[WARNING] Do not request finalize : g_sr(%d) mode(%d)", g_screen_reader, client->mode);
+ ret = tts_dbus_remove_match(client->mode);
+ if (0 != ret) {
+ SLOG(LOG_ERROR, TAG_TTSC, "[ERROR] Fail to remove match : %s", __tts_get_error_code(ret));
+ }
}
client->before_state = client->current_state;
data->current_state = TTS_STATE_CREATED;
data->reason = 0;
+ tts_dbus_remove_match(client->mode);
if (NULL == data->thread) {
SLOG(LOG_INFO, TAG_TTSC, "[INFO] ecore thread run: start_reprepare_thread");
data->thread = ecore_thread_run(__start_reprepare_thread, __end_reprepare_thread, NULL, data->tts);
client->current_state = TTS_STATE_CREATED;
client->reason = 0;
+ tts_dbus_remove_match(client->mode);
if (NULL == client->thread) {
SLOG(LOG_INFO, TAG_TTSC, "[INFO] ecore thread run: start_reprepare_thread");
client->thread = ecore_thread_run(__start_reprepare_thread, __end_reprepare_thread, NULL, client->tts);
dbus_error_free(&err);
}
+ SLOG(LOG_ERROR, TAG_TTSC, "[INFO] dbus match of mode(%d) is removed", mode);
return 0;
}
+int tts_dbus_remove_match(int mode)
+{
+ return __tts_dbus_remove_match(mode);
+}
+
static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handler)
{
if (NULL == g_conn_listener) return ECORE_CALLBACK_RENEW;
else if (dbus_message_is_signal(msg, "org.freedesktop.DBus", "NameOwnerChanged")) {
SLOG(LOG_DEBUG, TAG_TTSC, "@@@ Owner Changed");
- __tts_dbus_remove_match(TTS_MODE_DEFAULT);
- __tts_dbus_remove_match(TTS_MODE_NOTIFICATION);
- __tts_dbus_remove_match(TTS_MODE_SCREEN_READER);
- __tts_dbus_remove_match(TTS_MODE_INTERRUPT);
-
__tts_cb_error(-1, TTS_ERROR_SERVICE_RESET, -1, "Daemon Reset");
SLOG(LOG_DEBUG, TAG_TTSC, "@@@");
SLOG(LOG_DEBUG, TAG_TTSC, " ");
else {
SLOG(LOG_DEBUG, TAG_TTSC, "Message is NOT valid");
+ const char* sender = dbus_message_get_sender(msg);
+ const char* destination = dbus_message_get_destination(msg);
+ const char* path = dbus_message_get_path(msg);
+ const char* interf = dbus_message_get_interface(msg);
+ const char* member = dbus_message_get_member(msg);
+ int type = dbus_message_get_type(msg);
+ SLOG(LOG_ERROR, TAG_TTSC, "[INFO] Message is NOT valid, sender(%s), destination(%s), path(%s), interface(%s), member(%s), type(%d)", sender, destination, path, interf, member, type);
+
dbus_message_unref(msg);
break;
}
return result;
}
-
int tts_dbus_request_finalize(int uid)
{
DBusMessage* msg;
DBusError err;
dbus_error_init(&err);
- /* remove a rule for daemon error */
- char rule_err[256] = {0, };
tts_client_s* client = tts_client_get_by_uid(uid);
if (NULL == client) {
SLOG(LOG_ERROR, TAG_TTSC, "Fail to get TTS client");
return TTS_ERROR_OPERATION_FAILED;
}
+ /* remove a rule for daemon error */
+ SLOG(LOG_INFO, TAG_TTSC, "[INFO] Remove match, mode(%d)", client->mode);
if (TTS_MODE_DEFAULT == client->mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SERVER_SERVICE_INTERFACE);
+ __tts_dbus_remove_match(TTS_MODE_DEFAULT);
} else if (TTS_MODE_NOTIFICATION == client->mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_NOTI_SERVER_SERVICE_INTERFACE);
+ __tts_dbus_remove_match(TTS_MODE_NOTIFICATION);
} else if (TTS_MODE_SCREEN_READER == client->mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_SR_SERVER_SERVICE_INTERFACE);
+ __tts_dbus_remove_match(TTS_MODE_SCREEN_READER);
} else if (TTS_MODE_INTERRUPT == client->mode) {
- snprintf(rule_err, 256, "sender='org.freedesktop.DBus',path='/org/freedesktop/DBus',interface='org.freedesktop.DBus',member='NameOwnerChanged',type='signal',arg0='%s'", TTS_INTERRUPT_SERVER_SERVICE_INTERFACE);
- }
- dbus_bus_remove_match(g_conn_listener, rule_err, &err);
- dbus_connection_flush(g_conn_listener);
- if (dbus_error_is_set(&err)) {
- SLOG(LOG_ERROR, TAG_TTSC, "Match Error (%s)", err.message);
- dbus_error_free(&err);
+ __tts_dbus_remove_match(TTS_MODE_INTERRUPT);
}
msg = __tts_dbus_make_message(uid, TTS_METHOD_FINALIZE);