- bl->screen_reader_needed = ret;
- LOGD("bl->screen_reader_needed: %i, bl->pid: %i", ret, bl->pid);
- if (!bl->screen_reader_needed && (bl->pid > 0))
- _terminate_screen_reader(bl);
- else if (bl->screen_reader_needed && (bl->pid <= 0))
- _launch_screen_reader(bl, TRUE);
+ LOGD("client_needed: %i, client->pid: %i", client_needed, client->pid);
+ if (!client_needed && (client->pid > 0))
+ _terminate_client(client);
+ else if (client_needed && (client->pid <= 0))
+ _launch_client(client, TRUE);
+}
+
+
+static gboolean register_client(A11yBusClient *client)
+{
+ gboolean client_needed = FALSE;
+
+ if(!client->vconf_key) {
+ LOGE("Vconf_key missing for client: %s \n", client->vconf_key);
+ return FALSE;
+ }
+
+ int ret = vconf_get_bool(client->vconf_key, &client_needed);
+ if (ret != 0)
+ {
+ LOGD("Could not read %s key value.\n", client->vconf_key);
+ return FALSE;
+ }
+ ret = vconf_notify_key_changed(client->vconf_key, vconf_client_cb, client);
+ if(ret != 0)
+ {
+ LOGD("Could not add information level callback\n");
+ return FALSE;
+ }
+
+ if (client_needed)
+ g_timeout_add_seconds(2,_launch_process_repeat_until_success, client);
+ return TRUE;