Fix Slider issue, (screen_reader_tts.c get_read_command_from_queue) 79/122179/3
authorPawel Kurowski <p.kurowski2@samsung.com>
Thu, 30 Mar 2017 11:39:00 +0000 (13:39 +0200)
committerLukasz Oleksak <l.oleksak@samsung.com>
Thu, 30 Mar 2017 14:41:29 +0000 (07:41 -0700)
Change-Id: I7a45fadb5bf96565a53bce8207826b9845c322ec

src/screen_reader_tts.c

index 3a542475faac6655929580507b1bfaee9488867b..9721a0e61ce531fdf8c26fd7dcb6f9e55d601db3 100644 (file)
@@ -270,7 +270,12 @@ Eina_Bool can_be_discarded(Screen_Reader_Tts_Data_t *tts_data, const Read_Comman
 //
 //TODO: consider handling the case of discarding well-formed read command by subsequent malformed command
 static Read_Command *get_read_command_from_queue(Screen_Reader_Tts_Data_t *tts_data, Eina_List **command_queue_list) {
-       if (command_queue_list == NULL || *command_queue_list == NULL) return NULL;
+       DEBUG("-----------------Start-----------------");
+       if (command_queue_list == NULL || *command_queue_list == NULL) {
+               ERROR("NULL list parameter");
+               DEBUG("-----------------END-----------------");
+               return NULL;
+               }
        Service_Data *sd = get_pointer_to_service_data_struct();
 
        Eina_List *command_queue = *command_queue_list;
@@ -278,7 +283,13 @@ static Read_Command *get_read_command_from_queue(Screen_Reader_Tts_Data_t *tts_d
 
        Read_Command *command = NULL;
        while (eina_list_count(command_queue)) {
-               if (command) {
+               command = command_queue->data;
+               DEBUG("GOT READ COMMAND:%p", command);
+               command_queue = eina_list_remove_list(command_queue, command_queue);
+               DEBUG("REMOVED COMMAND FROM QUEUE. NEW HEAD: %p", command_queue);
+               if (!can_be_discarded(tts_data, command) && (command->context.text != NULL))
+                       break;
+               if (command && command_queue) {
                        DEBUG("skipping read command with text: %s", command->context.text);
                        if (command->context.text)
                                free(command->context.text);
@@ -294,14 +305,11 @@ static Read_Command *get_read_command_from_queue(Screen_Reader_Tts_Data_t *tts_d
                                        ERROR("Failed to broadcast dbus signal:%d for read command:%p", READING_SKIPPED, command);
                        }
                        free(command);
+                       command = NULL;
                }
-               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);
-               if (!can_be_discarded(tts_data, command) && (command->context.text != NULL))
-                       break;
        }
+       DEBUG("-----------------END-----------------");
+       *command_queue_list = command_queue;
        return command;
 }