//
//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;
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);
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;
}