Refactoring: get_read_command_from_queue 11/233711/3 accepted/tizen/unified/20200520.111244 submit/tizen/20200520.101418
authorBartlomiej Grzelewski <b.grzelewski@samsung.com>
Mon, 18 May 2020 10:08:00 +0000 (12:08 +0200)
committerBartlomiej Grzelewski <b.grzelewski@samsung.com>
Tue, 19 May 2020 10:16:03 +0000 (12:16 +0200)
Simplified code in get_read_command_from_queue function.

Change-Id: I91e07899a4261d8d84a7c78b7a4e7c6ca0c987fe

src/screen_reader_tts.c

index 1263bbf87cf9423654859a3e9b16ebd8db5658d7..6850aa62aa868641b57ddc63ea02e44d4624791a 100644 (file)
@@ -225,31 +225,33 @@ Eina_Bool can_be_discarded(const Read_Command *prev)
 static void  _reading_status_notify(Signal signal, Read_Command *command);
 static void dispose_read_command(Read_Command *command, Signal playing_reason, Signal non_playing_reason);
 
-// TODO(t.wozniak): simplify the function
 // Retrieves first non-discardable command from the queue (if there is one)
 // or the last command in the queue (if all are discardable).
 //
 //TODO: consider handling the case of discarding well-formed read command by subsequent malformed command
-static Read_Command *get_read_command_from_queue(Eina_List **command_queue_list)
+static Read_Command *get_read_command_from_queue(Eina_List **cmd_list)
 {
-       if (command_queue_list == NULL || *command_queue_list == NULL) return NULL;
+       if (cmd_list == NULL || *cmd_list == NULL)
+               return NULL;
+
+       Read_Command *result = NULL;
 
-       Eina_List *command_queue = *command_queue_list;
-       DEBUG("CLEAN UP THE QUEUE HEAD(%p) # of elements in queue:%d", command_queue, eina_list_count(command_queue));
+       while (eina_list_count(*cmd_list)) {
+               dispose_read_command(result, READING_SKIPPED, READING_SKIPPED);
+               result = (*cmd_list)->data;
+               *cmd_list = eina_list_remove(*cmd_list, result);
 
-       Read_Command *command = NULL;
-       while (eina_list_count(command_queue)) {
+               // command is not discardable
+               if (!can_be_discarded(result) && (result->context.text != NULL))
+                       break;
 
-               dispose_read_command(command, READING_SKIPPED, READING_SKIPPED);
-               command = command_queue->data;
-               DEBUG("GOT READ COMMAND:%p", command);
-               *command_queue_list = eina_list_remove(command_queue, command);
-               DEBUG("REMOVED COMMAND FROM QUEUE. NEW HEAD: %p", command_queue);
-               Read_Command *next = *command_queue_list ? (*command_queue_list)->data : NULL;
-               if ((!can_be_discarded(command) && (command->context.text != NULL)) || (next && next->delay_to_speak))
+               // next command have delay_to_speak
+               Read_Command *next = *cmd_list ? (*cmd_list)->data : NULL;
+               if (next && next->delay_to_speak)
                        break;
        }
-       return command;
+
+       return result;
 }
 
 static void purge_commands_from_queue(Eina_List **list_ptr, Eina_Bool only_discardables)