From: Youngsun Suh Date: Thu, 5 Jun 2025 03:28:54 +0000 (+0900) Subject: Reset read_timer on lang change X-Git-Tag: accepted/tizen/7.0/unified/20250605.140718~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a4647e655c68cce80bcc209f89dab701f6842c4e;p=platform%2Fcore%2Faccessibility%2Fscreen-reader.git Reset read_timer on lang change Change-Id: I32c79c8df3b1669a8c7af8230007a3445a18cd8d --- diff --git a/include/app_tracker.h b/include/app_tracker.h index 1fde6f80..b95443d6 100644 --- a/include/app_tracker.h +++ b/include/app_tracker.h @@ -102,4 +102,9 @@ bool app_tracker_null_context_is(App_Tracker_Data *atd); */ void app_tracker_null_context_switch(App_Tracker_Data *atd); +/** + * @brief Resets internal read timer + */ +void app_tracker_reset_read_timer(App_Tracker_Data *atd); + #endif /* end of include guard: APP_TRACKER_H_ */ diff --git a/include/navigator.h b/include/navigator.h index 35983f0c..1bbabd35 100644 --- a/include/navigator.h +++ b/include/navigator.h @@ -63,4 +63,6 @@ void navigator_set_ignore_keyboard_feedback(NavigatorData *nd, Eina_Bool feedbac Eina_Bool navigator_get_is_text_selection_mode(NavigatorData *nd); +void navigator_reset_read_timer(NavigatorData *nd); + #endif //NAVIGATOR_H_ diff --git a/include/screen_reader.h b/include/screen_reader.h index 2ac430b2..7bff5471 100644 --- a/include/screen_reader.h +++ b/include/screen_reader.h @@ -60,4 +60,6 @@ int screen_reader_create_service(Service_Data *data); int screen_reader_terminate_service(Service_Data *data); +void screen_reader_set_lang_change_callback(Service_Data *service_data); + #endif diff --git a/include/screen_reader_vconf.h b/include/screen_reader_vconf.h index 6638b9e3..27ee11c3 100644 --- a/include/screen_reader_vconf.h +++ b/include/screen_reader_vconf.h @@ -27,4 +27,7 @@ bool vc_get_sound_feedback(void); int vc_get_lcd_backlight_timeout(void); int vc_get_tts_speed(void); +typedef void(*lang_change_callback_t)(void*); +void vc_set_lang_change_callback(lang_change_callback_t cb, void *user_data); + #endif /* SCREEN_READER_VCONF_H_ */ diff --git a/src/app_tracker.c b/src/app_tracker.c index bca57eaf..26734e06 100644 --- a/src/app_tracker.c +++ b/src/app_tracker.c @@ -51,6 +51,17 @@ struct _App_Tracker_Data { AtspiAccessible *desktop; }; +void app_tracker_reset_read_timer(App_Tracker_Data *atd) +{ +#ifndef SCREEN_READER_TV + if (atd->read_timer) { + DEBUG("Resetting read timer"); + ecore_timer_del(atd->read_timer); + atd->read_timer = NULL; + } +#endif +} + #ifndef SCREEN_READER_TV static void app_tracker_window_append(void *data, AtspiAccessible *root); #endif diff --git a/src/main.c b/src/main.c index 980805fd..4285a6c2 100644 --- a/src/main.c +++ b/src/main.c @@ -65,6 +65,8 @@ static int app_create(void *data) return -1; } + screen_reader_set_lang_change_callback(sd); + sd->system_data = system_notifications_init(); navigator_set_read_quickpanel_cb(sd->navigator_data, system_status_get, sd->system_data, NULL); diff --git a/src/navigator.c b/src/navigator.c index 02de86ae..1f519709 100644 --- a/src/navigator.c +++ b/src/navigator.c @@ -2623,3 +2623,7 @@ Eina_Bool navigator_get_is_text_selection_mode(NavigatorData *nd) { if (!nd) { ERROR("NavigatorData is NULL!"); } return nd ? nd->is_text_selection_mode : EINA_FALSE; } + +void navigator_reset_read_timer(NavigatorData *nd) { + app_tracker_reset_read_timer(nd->app_tracker_data); +} diff --git a/src/screen_reader.c b/src/screen_reader.c index f7165d61..2653a69d 100644 --- a/src/screen_reader.c +++ b/src/screen_reader.c @@ -77,3 +77,19 @@ int screen_reader_terminate_service(Service_Data *service_data) tw_shutdown(); return 0; } + +static void _lang_change_callback(void *user_data) +{ + NavigatorData *nd = (NavigatorData*)user_data; + if (nd) + navigator_reset_read_timer(nd); + tw_purge(EINA_TRUE); +} + +void screen_reader_set_lang_change_callback(Service_Data *service_data) +{ + DEBUG("Setting language change callback"); + NavigatorData *nd = service_data->navigator_data; + vc_set_lang_change_callback(_lang_change_callback, nd); + +} diff --git a/src/screen_reader_vconf.c b/src/screen_reader_vconf.c index fa63362e..4566f6b9 100644 --- a/src/screen_reader_vconf.c +++ b/src/screen_reader_vconf.c @@ -42,6 +42,8 @@ typedef struct { bool sound_feedback; int lcd_backlight_timeout; int tts_speed; + lang_change_callback_t lang_change_cb; + void *lang_chang_cb_data; } VConfData; static VConfData *vc_get_instance(void); @@ -53,7 +55,10 @@ static int display_language_changed_cb(void *event_info, void *data) //to make gettext work char *pLocale = vconf_get_str(VCONFKEY_LANGSET); if (pLocale) { - tw_purge(EINA_TRUE); + VConfData *vconf_data = vc_get_instance(); + if (vconf_data->lang_change_cb) + vconf_data->lang_change_cb(vconf_data->lang_chang_cb_data); + setlocale(LC_ALL, pLocale); DEBUG("Changed Language: %s", pLocale); free(pLocale); @@ -222,3 +227,10 @@ int vc_get_tts_speed(void) { return vc_get_instance()->tts_speed; } + +void vc_set_lang_change_callback(lang_change_callback_t cb, void *user_data) +{ + VConfData *vconf_data = vc_get_instance(); + vconf_data->lang_change_cb = cb; + vconf_data->lang_chang_cb_data = user_data; +}