From 845947243073600ba098f92712978584c689927f Mon Sep 17 00:00:00 2001 From: Shinwoo Kim Date: Sat, 23 Mar 2013 11:24:50 +0900 Subject: [PATCH] [access] read at once - Tizen TTS engine performance issue Change-Id: Ia1a549f318f2cadc9b6492e2e250bdd0eac42d6e --- src/lib/elm_access.c | 36 +++++++++++++++++++++++++++++------- src/lib/elm_access.h | 24 +++++++++++++++++------- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/src/lib/elm_access.c b/src/lib/elm_access.c index e566716..f5a023b 100644 --- a/src/lib/elm_access.c +++ b/src/lib/elm_access.c @@ -149,17 +149,39 @@ _access_highlight_object_get(Evas_Object *obj) static void _access_highlight_read(Elm_Access_Info *ac, Evas_Object *obj) { + int type; + char *txt = NULL; + Eina_Strbuf *strbuf; + + /*FIXME: TIZEN only - read at once because Tizen TTS engine performance is not good */ + strbuf = eina_strbuf_new(); + if (_elm_config->access_mode != ELM_ACCESS_MODE_OFF) { + if (ac->on_highlight) ac->on_highlight(ac->on_highlight_data); _elm_access_object_hilight(obj); - _elm_access_read(ac, ELM_ACCESS_CANCEL, obj); - _elm_access_read(ac, ELM_ACCESS_TYPE, obj); - _elm_access_read(ac, ELM_ACCESS_INFO, obj); - _elm_access_read(ac, ELM_ACCESS_STATE, obj); - _elm_access_read(ac, ELM_ACCESS_CONTEXT_INFO, obj); - _elm_access_read(ac, ELM_ACCESS_DONE, obj); + + for (type = ELM_ACCESS_INFO_FIRST + 1; type < ELM_ACCESS_INFO_LAST; type++) + { + txt = _elm_access_text_get(ac, type, obj); + if (txt && (strlen(txt) > 0)) + { + if (eina_strbuf_length_get(strbuf) > 0) + eina_strbuf_append_printf(strbuf, ", %s", txt); + else + eina_strbuf_append(strbuf, txt); + + free(txt); + } + } } + + txt = eina_strbuf_string_steal(strbuf); + eina_strbuf_free(strbuf); + + _elm_access_say(txt); + free(txt); } static Eina_Bool @@ -554,7 +576,7 @@ _elm_access_say(const char *txt) if (txt) { if (mapi->out_read) mapi->out_read(txt); - if (mapi->out_read) mapi->out_read(".\n"); + //if (mapi->out_read) mapi->out_read(".\n"); /* TIZEN only: Tizen TTS engine performance is not good */ } if (mapi->out_read_done) mapi->out_read_done(); } diff --git a/src/lib/elm_access.h b/src/lib/elm_access.h index bad553e..c28a747 100644 --- a/src/lib/elm_access.h +++ b/src/lib/elm_access.h @@ -6,13 +6,23 @@ * */ -#define ELM_ACCESS_TYPE 0 /* when reading out widget or item - * this is read first */ -#define ELM_ACCESS_INFO 1 /* next read is info - this is - * normally label */ -#define ELM_ACCESS_STATE 2 /* if there is a state (eg checkbox) - * then read state out */ -#define ELM_ACCESS_CONTEXT_INFO 3 /* to give contextual information */ +enum _Elm_Access_Info_Type +{ + ELM_ACCESS_INFO_FIRST = -1, + ELM_ACCESS_INFO, /* next read is info - this is + * normally label */ + ELM_ACCESS_TYPE, /* when reading out widget or item + * this is read first */ + ELM_ACCESS_STATE, /* if there is a state (eg checkbox) + * then read state out */ + ELM_ACCESS_CONTEXT_INFO, /* to give contextual information */ + ELM_ACCESS_INFO_LAST +}; + +/** + * @typedef Elm_Access_Info_Type + */ +typedef enum _Elm_Access_Info_Type Elm_Access_Info_Type; typedef char *(*Elm_Access_Info_Cb)(void *data, Evas_Object *obj); typedef void (*Elm_Access_Activate_Cb)(void *data, Evas_Object *part_obj, Elm_Object_Item *item); -- 2.7.4