[Accessibility] Shutdown eldbus if eldbus is initialized 12/163912/2
authorShinwoo Kim <cinoo.kim@samsung.com>
Thu, 14 Dec 2017 04:16:28 +0000 (13:16 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Thu, 14 Dec 2017 04:29:30 +0000 (13:29 +0900)
The eldbus_shutdown could call abort if an eldbus connection remains.
The elementary creates an eldbus connection internally, so this connection
could remain when the eldbus_shutdown is called without eldbus_init on
application side.

The following is eldbus usage.
1. eldbus_init
2. eldbus_connection_get
3. eldbus_connection_unref /* free eldbus connection */
4. eldbus_shutdown

So this patch set does not call eldbus_shutdown, if eldbus is not initiated.

Change-Id: Icc9a608d620caf0fbc4cd714b9d26b96561023d9

setting-accessibility/include/setting-accessibility-universal-switch-dbus.h
setting-accessibility/src/setting-accessibility-universal-switch-dbus.c

index c662a6264ba9c0bbf0f62e62741fea16a66b5f3f..371e4387cad20ec0f5bff1834d5045c0cc5882e0 100644 (file)
@@ -42,6 +42,7 @@ struct _UniversalSwitchEldbus {
        init_done_cb init_done_callback;
        void *init_done_callback_data;
 
+       Eina_Bool is_init;
 };
 
 typedef struct _UniversalSwitchEldbus UniversalSwitchEldbus;
index b9aae8eb9a74ba94192a9748dfb6d73b64a34c0b..dc9e4f5165d35011dded0e999d128ecb2dadbc02 100755 (executable)
@@ -38,7 +38,12 @@ static Eina_Bool __eldbus_init(UniversalSwitchDbusConfig *config)
        eldbus->proxy = NULL;
        eldbus->capture_switch_request = NULL;
 
-       eldbus_init();
+       eldbus->is_init = eldbus_init();
+       if (!eldbus->is_init) {
+               SETTING_TRACE_ERROR("DBus initialization failed");
+               return EINA_FALSE;
+       }
+
        if (!(eldbus->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION))) {
                SETTING_TRACE_ERROR("Connection to session bus failed");
                return EINA_FALSE;
@@ -54,6 +59,9 @@ static void __eldbus_shutdown(UniversalSwitchDbusConfig *config)
 {
        UniversalSwitchEldbus *eldbus = &config->eldbus;
 
+       if (!eldbus->is_init)
+               return;
+
        if (eldbus->conn)
                eldbus_name_owner_changed_callback_del(eldbus->conn, BUS, __bus_name_acquired, config);