From c99280755915e8b0a997cffc671708a5d8bfa1cf Mon Sep 17 00:00:00 2001 From: Riley Beckett Date: Mon, 27 Oct 2025 16:06:44 -0400 Subject: fix segfault & dont render when nothing has changed --- input_field.c | 12 +++++++++--- main.c | 2 ++ registry.c | 3 +-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/input_field.c b/input_field.c index dc62503..9eded28 100644 --- a/input_field.c +++ b/input_field.c @@ -30,11 +30,17 @@ void filter_items(client_state* state) { array_add(state->filtered_items, (item_display_t){ .item = i }); } } - if (array_size(state->input_buffer)) qsort(state->filtered_items, array_size(state->filtered_items), sizeof(item_display_t), compare); + if (array_size(state->input_buffer)) { + qsort(state->filtered_items, array_size(state->filtered_items), sizeof(item_display_t), compare); + } // select item - if (array_size(state->filtered_items) > 0) state->selected_filtered_item = 0; - else state->selected_filtered_item = -1; + if (array_size(state->filtered_items) > 0) { + state->selected_filtered_item = 0; + } + else { + state->selected_filtered_item = -1; + } // update layout update_layout(state); diff --git a/main.c b/main.c index ce9022d..70b50e7 100644 --- a/main.c +++ b/main.c @@ -38,6 +38,7 @@ int main(int argc, char* argv[]) { state.running = true; state.input_buffer = array_new(char, 0); state.filtered_items = array_new(item_display_t, 0); + state.selected_filtered_item = -1; // check locale setlocale(LC_ALL, ""); @@ -98,6 +99,7 @@ int main(int argc, char* argv[]) { while (state.running) { poll_events(&state); render_frame(&state); + wl_display_dispatch(state.display); } // cleanup (of course) diff --git a/registry.c b/registry.c index df41580..e61b6a0 100644 --- a/registry.c +++ b/registry.c @@ -33,11 +33,10 @@ void global(void *data, struct wl_registry *wl_registry, uint32_t name, const ch state->cursor_shape_manager = wl_registry_bind( wl_registry, name, &wp_cursor_shape_manager_v1_interface, 1); } else if (!strcmp(interface, wl_data_device_manager_interface.name)) { - state->data_device_manager = wl_registry_bind(wl_registry, name, &wl_data_device_manager_interface, 3); + state->data_device_manager = wl_registry_bind(wl_registry, name, &wl_data_device_manager_interface, 2); } else { } - } void global_remove(void *data, struct wl_registry *wl_registry, uint32_t name) { -- cgit v1.2.3