Check display state before rebuild navigation context. 21/306721/1
authorHosang Kim <hosang12.kim@samsung.com>
Mon, 26 Feb 2024 04:33:31 +0000 (13:33 +0900)
committerMaria Bialota <m.bialota@samsung.com>
Mon, 26 Feb 2024 15:33:34 +0000 (16:33 +0100)
After screen off, there's still a sound of context switching.

Change-Id: I4f0b8540fa0e678e8323d27220b93b541554fc6e

include/screen_reader_system.h
src/app_tracker.c
src/flat_navi.c
src/screen_reader_system.c

index bd59ad5d489d51e530199805df53e50b067a88ed..c5fcb963f9ca164197cf37d38f7a439a6aee9f31 100644 (file)
@@ -35,6 +35,10 @@ void device_display_lock_release(System_Data *system_data);
  */
 void system_status_get(void *system_data);
 
+/*
+ * @brief Gets display state is screen_off or not
+ */
+Eina_Bool device_display_state_screen_off_get(System_Data *system_data);
 #endif //SCREEN_READER_TV
 
 #endif // _SCREEN_READER_SYSTEM_H_
index 8330ec6afd411572a3b03ab3847eca08d755add7..e10a2c3b18ea320733b5bb84791f95748e546d58 100644 (file)
@@ -19,6 +19,7 @@
 #include <logger.h>
 #include <navigator.h>
 #include <reading_composer.h>
+#include <screen_reader_system.h>
 #include <screen_reader_tts.h>
 #include <screen_reader_vconf.h>
 #include <symbols.h>
@@ -727,6 +728,12 @@ static void app_tracker_context_switch(void *data, AtspiAccessible *root)
        atd->root = root;
        g_object_ref(atd->root);
 
+       Service_Data *sd = get_pointer_to_service_data_struct();
+       if (device_display_state_screen_off_get(sd->system_data)) {
+               flat_navi_context_root_change(navigator_get_flat_navi_context(atd->view_content_changed_ecd->user_data), NULL);
+               return;
+       }
+
        timer_reschedule(atd);
 }
 #endif
index 7270ebeba95d5d24f7c2f6a1df8225719e44c7ba..151950d08e36211f475ed4cee80af0290b49ecb9 100644 (file)
@@ -464,7 +464,7 @@ void flat_navi_context_root_change(FlatNaviContext *ctx, AtspiAccessible *root)
        g_free(id);
        if (ctx->root) g_object_unref(ctx->root);
        ctx->root = root;
-       g_object_ref(ctx->root);
+       if (ctx->root) g_object_ref(ctx->root);
 }
 
 void flat_navi_context_free(FlatNaviContext *ctx)
index 5ef852245a3a1a484e973f3c7d608ebd0389d1bf..b832677f8920edc205264e36224e67cf96520c28 100644 (file)
@@ -740,4 +740,15 @@ void system_status_get(void *user_data)
        DEBUG("END");
 }
 
+Eina_Bool device_display_state_screen_off_get(System_Data *system_data)
+{
+       if (!system_data) {
+               ERROR("System_Data could not be NULL");
+               return EINA_FALSE;
+       }
+
+       DEBUG("Is display state screen off : %d",system_data->is_display_state_screen_off);
+       return system_data->is_display_state_screen_off;
+}
+
 #endif