From e71bdaa70992f9a071eb76b3d3c4f7162a2e8b65 Mon Sep 17 00:00:00 2001 From: "sh.pi" Date: Fri, 7 Jun 2013 23:14:04 +0900 Subject: [PATCH] Fix the bug that device-daemon is not finished. dbus finished logic was not working and crashed. now the bug is fixed. Change-Id: I04956e87ca847af8701d563da82e3da7b5b8d6bc Signed-off-by: Krzysztof Sasiak --- src/core/edbus-handler.c | 4 +++- src/core/main.c | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/core/edbus-handler.c b/src/core/edbus-handler.c index a80a89e..7bdb088 100644 --- a/src/core/edbus-handler.c +++ b/src/core/edbus-handler.c @@ -354,6 +354,9 @@ static unregister_edbus_watch_all(void) Eina_List *n, *next; struct edbus_list *watch; + if (eina_list_count(edbus_watch_list) > 0) + dbus_connection_remove_filter(conn, message_filter, NULL); + EINA_LIST_FOREACH_SAFE(edbus_watch_list, n, next, watch) { snprintf(match, sizeof(match), NAME_OWNER_MATCH, watch); dbus_bus_remove_match(conn, match, NULL); @@ -419,7 +422,6 @@ err_dbus_shutdown: static void edbus_exit(void *data) { unregister_edbus_signal_handle(); - dbus_connection_remove_filter(conn, message_filter, NULL); unregister_edbus_watch_all(); e_dbus_connection_close(edbus_conn); e_dbus_shutdown(); diff --git a/src/core/main.c b/src/core/main.c index 81a9c05..8ce0730 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -47,6 +47,13 @@ static void sig_quit(int signo) _E("received SIGTERM signal %d", signo); } +static void sig_usr1(int signo) +{ + _D("received SIGUSR1 signal %d, deviced'll be finished!", signo); + + ecore_main_loop_quit(); +} + static int system_main(int argc, char **argv) { struct ss_main_data ad; @@ -54,6 +61,8 @@ static int system_main(int argc, char **argv) init_ad(&ad); devices_init(&ad); signal(SIGTERM, sig_quit); + signal(SIGUSR1, sig_usr1); + ecore_main_loop_begin(); devices_exit(&ad); -- 2.7.4