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;
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 {
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;
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);
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;
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;
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;