dbus: keep SESSION connection 66/255466/1
authorShinwoo Kim <cinoo.kim@samsung.com>
Fri, 19 Mar 2021 01:06:07 +0000 (10:06 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Fri, 19 Mar 2021 01:06:07 +0000 (10:06 +0900)
We need to protect session connection while screen-reader is alive.
If session connection is released, then vanished callback of at-spi-bus-launcher
is called and vanished calllback disables 'IsEnabled' property.

[GBusNameVanishedCallback]
https://www.freedesktop.org/software/gstreamer-sdk/data/docs/latest/gio/gio-Watching-Bus-Names.html#g-bus-watch-name

Change-Id: I8c91caf76cace65f1ee32acf7d5435e29a365fe1

include/screen_reader.h
src/main.c

index f487ad3b300a0fa117cfb74ef8f445c3622c085f..4650147fca30e5787658f1780ca48659d0a811b1 100644 (file)
@@ -46,6 +46,7 @@ typedef struct _Service_Data
        bool update_language_list;
 
        //Set by dbus
+       Eldbus_Connection *conn;
        Eldbus_Proxy *proxy;
        char **last_tokens;
        char *available_requests;
index 9c5fb98edf0afc065e972e5a996cab8d2cda5d44..d7a53ef76598a7a71d38bdd2db9d414e2fad447a 100644 (file)
@@ -213,6 +213,13 @@ static int app_create(void *data)
        Service_Data *sd = (Service_Data*)data;
 
        elm_init(0, NULL);
+
+       /* allocate SESSION connection here to make alive always
+          if connection is released, then vanished callback is called on
+           at-spi-bus-launcher side. and it disables 'IsEnabled' property */
+       eldbus_init();
+       sd->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
+
        atspi_init();
        screen_reader_create_service(sd);
        DEBUG("[START] init direct reading");
@@ -265,6 +272,10 @@ static int app_terminate(void *data)
        screen_reader_terminate_service(sd);
        DEBUG("libatspi terminated");
        atspi_exit();
+
+       eldbus_connection_unref(sd->conn);
+       eldbus_shutdown();
+
        elm_exit();
        DEBUG("screen reader terminated");