From 9ff100561ab1518dad01f685642455d5e70d5012 Mon Sep 17 00:00:00 2001 From: Cameron Reikes Date: Sun, 11 Dec 2022 18:08:21 -0800 Subject: [PATCH] Queue iter over elements instead of headers --- gamestate.c | 3 +-- main.c | 3 +-- queue.h | 2 +- server.c | 3 +-- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/gamestate.c b/gamestate.c index ea7f992..bc8ad83 100644 --- a/gamestate.c +++ b/gamestate.c @@ -1719,7 +1719,7 @@ SerMaybeFailure ser_client_to_server(SerState *ser, ClientToServer *msg) { size_t to_skip = queue_num_elements(msg->input_data) - num; size_t i = 0; - QUEUE_ITER(msg->input_data, cur_header) + QUEUE_ITER(msg->input_data, InputFrame, cur) { if (i < to_skip) { @@ -1727,7 +1727,6 @@ SerMaybeFailure ser_client_to_server(SerState *ser, ClientToServer *msg) } else { - InputFrame *cur = (InputFrame *)cur_header->data; SER_MAYBE_RETURN(ser_inputframe(ser, cur)); } } diff --git a/main.c b/main.c index 0fd0f6c..827914e 100644 --- a/main.c +++ b/main.c @@ -1427,9 +1427,8 @@ static void draw_dots(cpVect camera_pos, double gap) void apply_this_tick_of_input_to_player(uint64_t tick_to_search_for) { InputFrame *to_apply = NULL; - QUEUE_ITER(&input_queue, cur_header) + QUEUE_ITER(&input_queue, InputFrame, cur) { - InputFrame *cur = (InputFrame *)cur_header->data; if (cur->tick == tick(&gs)) { to_apply = cur; diff --git a/queue.h b/queue.h index 2d3396d..c9bb3db 100644 --- a/queue.h +++ b/queue.h @@ -25,7 +25,7 @@ typedef struct Queue #define QUEUE_SIZE_FOR_ELEMENTS(element_size, max_elements) ((sizeof(QueueElementHeader) + element_size) * max_elements) // oldest to newest -#define QUEUE_ITER(q_ptr, cur_header) for (QueueElementHeader *cur_header = (q_ptr)->next; cur_header != NULL; cur_header = cur_header->next) +#define QUEUE_ITER(q_ptr, type, cur) for (QueueElementHeader *cur_header = (q_ptr)->next; cur_header != NULL; cur_header = cur_header->next) for(type *cur = (type*)cur_header->data; cur != NULL; cur = NULL) void queue_init(Queue *q, size_t element_size, char *data, size_t data_length); void queue_clear(Queue *q); void *queue_push_element(Queue *q); diff --git a/server.c b/server.c index 25ca780..c54d1fc 100644 --- a/server.c +++ b/server.c @@ -312,9 +312,8 @@ void server(void *info_raw) CONNECTED_PEERS(enet_host, cur) { int this_player_index = (int)(int64_t)cur->data; - QUEUE_ITER(&player_input_queues[this_player_index], cur_header) + QUEUE_ITER(&player_input_queues[this_player_index], InputFrame, cur) { - InputFrame *cur = (InputFrame *)cur_header->data; if (cur->tick == tick(&gs)) { gs.players[this_player_index].input = *cur;