Some optimizations to spi_event_get_text_to_read() 55/286555/1 accepted/tizen/unified/20230110.164135
authorArtur Świgoń <a.swigon@samsung.com>
Mon, 9 Jan 2023 15:43:06 +0000 (16:43 +0100)
committerArtur Świgoń <a.swigon@samsung.com>
Mon, 9 Jan 2023 15:46:16 +0000 (16:46 +0100)
These were originally included in the now-reverted patch
"Check active window in spi_event_get_text_to_read()"
(Ic0a65ed5cc77fb232eba1f50c66379c186ec4bd9).

Change-Id: I96ca0a19fed1ec2906699f72a5530ee5e48ef9c1

src/screen_reader_spi.c

index 1d3870f51c911ecfa8e7b21dac8b15ec8ec5f97f..02df45e8b0aa17775677bc7b7eab96873a1104aa 100644 (file)
@@ -87,19 +87,14 @@ void free_shtd(SignalHandlingTimerData *shtd)
  */
 static void display_info(const AtspiEvent *event)
 {
-       AtspiAccessible *source = event->source;
-       gchar *name = atspi_accessible_get_name(source, NULL);
-       gchar *role = atspi_accessible_get_localized_role_name(source, NULL);
-       gchar *toolkit = atspi_accessible_get_toolkit_name(source, NULL);
+       gchar *unique_id = atspi_accessible_get_unique_id(event->source, NULL);
 
        DEBUG("--------------------------------------------------------");
-       DEBUG("Toolkit: %s; Event_type: %s; (%d, %d)", toolkit, event->type, event->detail1, event->detail2);
-       DEBUG("Name: %s; Role: %s; Source: %p", name, role, event->source);
+       DEBUG("Event_type: %s; (%d, %d)", event->type, event->detail1, event->detail2);
+       DEBUG("Source: %s", unique_id);
        DEBUG("--------------------------------------------------------");
 
-       g_free(name);
-       g_free(role);
-       g_free(toolkit);
+       g_free(unique_id);
 }
 
 bool allow_recursive_name(AtspiAccessible *obj)
@@ -219,6 +214,14 @@ void spi_event_get_text_to_read(
        *text_to_read = NULL;
        *descr_to_read = NULL;
 
+       // Prioritize checking the focused event to enable an early return
+       if (!g_strcmp0(event->type, spi->tracking_signal_name)) {
+               spi->last_caret_position = -1;
+
+               if (event->detail1 == 0)
+                       return;
+       }
+
        GHashTable *attrs = atspi_accessible_get_attributes(event->source, NULL);
        if (attrs) {
                char *val = g_hash_table_lookup(attrs, "suppress-screen-reader");
@@ -233,12 +236,11 @@ void spi_event_get_text_to_read(
 
        if (!g_strcmp0(event->type, spi->tracking_signal_name)) {
                /* tracking singal "focused" */
-               if (event->detail1 == 1) {
-                       ReadingComposerData *rc = reading_composer_data_get(event->source);
-                       *text_to_read = reading_composer_description_get(rc);
-                       *descr_to_read = reading_composer_extended_description_get(rc);
-                       reading_composer_data_free(rc);
-               }
+               // note: event->detail1 == 1
+               ReadingComposerData *rc = reading_composer_data_get(event->source);
+               *text_to_read = reading_composer_description_get(rc);
+               *descr_to_read = reading_composer_extended_description_get(rc);
+               reading_composer_data_free(rc);
 
        } else if (!g_strcmp0(event->type, CARET_MOVED_SIG)) {
                *text_to_read = spi_on_caret_move_get_text(spi, event);
@@ -272,9 +274,6 @@ void spi_event_get_text_to_read(
        } else if (!g_strcmp0(event->type, VALUE_CHANGED_SIG)) {
                *text_to_read = spi_on_value_changed_get_text(spi, event);
 
-       } else if (!g_strcmp0(event->type, STATE_FOCUSED_SIG)) {
-               spi->ignore_next_caret_move = EINA_TRUE;
-               spi->last_caret_position = -1;
        } else if (!g_strcmp0(event->type, STATE_CHECKED_SIG)) {
                if (event->detail1)
                        *text_to_read = g_strdup(_("IDS_ACCS_TBOPT_CHECKED_TTS"));