Limiting locking of display to completion time of last utterance 22/283722/1
authorLukasz Oleksak <l.oleksak@samsung.com>
Tue, 20 Sep 2022 12:41:53 +0000 (14:41 +0200)
committerChun <jykeon@samsung.com>
Wed, 2 Nov 2022 07:21:25 +0000 (07:21 +0000)
Change-Id: Icfabaad91ee4e365e3b31bae72fc3d42c7108c5c
(cherry picked from commit 3526fb5146c484111a68320eab7b34242d7ee486)

include/screen_reader_tts.h
src/screen_reader_system.c
src/screen_reader_tts.c

index c774815c0b56d1a0cf9213df34bea73ebb20b8df..985bc73a5bf5177235a83433ee27bfc076f1dd99 100644 (file)
@@ -38,7 +38,6 @@ typedef struct {
        Eina_Bool discardable;
        Eina_Bool want_discard_previous_reading;
        Eina_Bool is_playing;
-       Eina_Bool is_screen_turn_off;
 } Read_Command;
 
 typedef void (*utterance_cb_t)(void*);
index c06477a2e99ac28ee33d409d462b89ea4fae42cc..a9d9e9c52f6d9451cf6badf8b861c27e30893a8d 100644 (file)
@@ -204,7 +204,6 @@ static void device_system_cb(device_callback_e type, void *value, void *user_dat
                                following is_screen_turn_off, and above system_data->is_display_state_screen_off */
                                Read_Command *rc = NULL;
                                rc = tw_speak(_("IDS_GCTS_OPT_SCREEN_TURNED_OFF_TTS"), EINA_FALSE);
-                               if (rc) rc->is_screen_turn_off = EINA_TRUE;
                        }
                } else {
                        system_data->is_display_state_screen_off = EINA_FALSE;
index 5ece303980facbc507cdcd34dab76afedca27ada..eeaa345ab72ebbf1c53831fa429bec3e0b05d1c0 100644 (file)
@@ -33,9 +33,6 @@ typedef enum _Play_Read_Command_Status Play_Read_Command_Status;
 typedef struct {
        int init;
        tts_h tts;
-#ifndef SCREEN_READER_TV
-       Ecore_Timer *display_lock_release_timer;
-#endif
        Eina_Bool pause_state;
        Eina_List *read_command_queue;
 
@@ -536,18 +533,6 @@ send_command_to_tts(TWData *tw, tts_state_e state)
                                if (TTS_ERROR_NONE != ret)
                                        ERROR("tts_play failed! result(%d)", ret);
                        }
-
-#ifndef SCREEN_READER_TV
-                       /* TODO This is not proper way and place to do this. */
-                       Service_Data *sd = get_pointer_to_service_data_struct();
-                       if (!sd || !sd->system_data) {
-                               ERROR("Critical: Service_Data or System_Data is null");
-                       } else {
-                               device_display_lock_request(sd->system_data);
-                       }
-                       if (tw->display_lock_release_timer)
-                               ecore_timer_reset(tw->display_lock_release_timer);
-#endif
                        return SUCCESS;
                }
        } else {
@@ -593,6 +578,16 @@ static Eina_Bool tw_speak_delay_finished_cb(void *d)
 static void tw_speak_do(TWData *tw)
 {
        DEBUG("[START] tw_speak_do");
+
+#ifndef SCREEN_READER_TV
+       Service_Data *sd = get_pointer_to_service_data_struct();
+       if (!sd || !sd->system_data) {
+               ERROR("Critical: Service_Data or System_Data is null");
+       } else if (have_read_command(tw)) {
+               device_display_lock_request(sd->system_data);
+       }
+#endif
+
        while (have_read_command(tw)) {
                Read_Command *command = tw->read_command_queue ? tw->read_command_queue->data : NULL;
 
@@ -826,28 +821,6 @@ static void tw_utt_started_cb(tts_h tts, int utt_id, void *user_data)
        return;
 }
 
-#ifndef SCREEN_READER_TV
-static Eina_Bool _display_lock_release_timer_cb(void *data)
-{
-       TWData *tw = (TWData*)data;
-
-       if (tw->last_read_command && tw->last_read_command->is_playing) {
-               return ECORE_CALLBACK_RENEW;
-       }
-
-       /* TODO This not a proper way and place to do this. */
-       Service_Data *sd = get_pointer_to_service_data_struct();
-       if (!sd || !sd->system_data) {
-               ERROR("Critical: Service_Data or System_Data is null");
-       } else {
-               device_display_lock_release(sd->system_data);
-       }
-
-       tw->display_lock_release_timer = NULL;
-       return ECORE_CALLBACK_CANCEL;
-}
-#endif
-
 static void tw_utt_completed_cb(tts_h tts, int utt_id, void *user_data)
 {
        DEBUG("Utterance completed : utt id(%d) \n", utt_id);
@@ -860,20 +833,21 @@ static void tw_utt_completed_cb(tts_h tts, int utt_id, void *user_data)
                if (tw->last_read_command->chain_info) --(tw->last_read_command->chain_info->chunks_yet_to_read);
 
 #ifndef SCREEN_READER_TV
-               if (!tw->last_read_command->is_screen_turn_off) {
-                       if (tw->display_lock_release_timer) ecore_timer_del(tw->display_lock_release_timer);
-                       DEBUG("resetting timer");
-                       tw->display_lock_release_timer = ecore_timer_add(vc_get_lcd_backlight_timeout() < 0.01 ? 0.01 : vc_get_lcd_backlight_timeout(),
-                               _display_lock_release_timer_cb, user_data);
-               }
                tw->pause_state = EINA_FALSE;
-
                if (tw->on_utterance_end)
                        tw->on_utterance_end(tw->on_utterance_end_user_data);
 #endif
                tw->last_read_command->is_playing = EINA_FALSE;
                stop_speaking(tw);
                overwrite_last_read_command_with(tw, NULL);
+#ifndef SCREEN_READER_TV
+               Service_Data *sd = get_pointer_to_service_data_struct();
+               if (!sd || !sd->system_data) {
+                       ERROR("Critical: Service_Data or System_Data is null");
+               } else if(!have_read_command(tw)) {
+                       device_display_lock_release(sd->system_data);
+               }
+#endif
        }
        tw_speak_request(tw);
        return;
@@ -890,9 +864,6 @@ void tw_init_internal(TWData *tw)
                ERROR("Fail to create tts (%s)", get_tts_error(r));
                return;
        }
-#ifndef SCREEN_READER_TV
-       tw->display_lock_release_timer = NULL;
-#endif
        tw->pause_state = EINA_FALSE;
        tw->read_command_queue = NULL;
        tw->last_read_command = NULL;
@@ -947,13 +918,6 @@ bool tw_init(void)
 void tw_shutdown(void)
 {
        TWData *tw = tw_get_instance();
-#ifndef SCREEN_READER_TV
-       if (tw->display_lock_release_timer) {
-               ecore_timer_del(tw->display_lock_release_timer);
-               tw->display_lock_release_timer = NULL;
-       }
-#endif
-
        stop_speaking(tw);
        tts_destroy(tw->tts);
        tw->tts = NULL;