Browse Source

Change to use scratch oevent list when predicting ui markers

master
cancel 6 years ago
parent
commit
5e2206f45f
  1. 10
      bank.c
  2. 1
      bank.h
  3. 8
      tui_main.c

10
bank.c

@ -104,6 +104,16 @@ void oevent_list_init(Oevent_list* olist) {
} }
void oevent_list_deinit(Oevent_list* olist) { free(olist->buffer); } void oevent_list_deinit(Oevent_list* olist) { free(olist->buffer); }
void oevent_list_clear(Oevent_list* olist) { olist->count = 0; } void oevent_list_clear(Oevent_list* olist) { olist->count = 0; }
void oevent_list_copy(Oevent_list const* src, Oevent_list* dest) {
Usz src_count = src->count;
if (dest->capacity < src_count) {
Usz new_cap = orca_round_up_power2(src_count);
dest->buffer = realloc(dest->buffer, new_cap * sizeof(Oevent));
dest->capacity = new_cap;
}
memcpy(dest->buffer, src->buffer, src_count * sizeof(Oevent));
dest->count = src_count;
}
Oevent* oevent_list_alloc_item(Oevent_list* olist) { Oevent* oevent_list_alloc_item(Oevent_list* olist) {
Usz count = olist->count; Usz count = olist->count;
if (olist->capacity == count) { if (olist->capacity == count) {

1
bank.h

@ -59,5 +59,6 @@ typedef struct {
void oevent_list_init(Oevent_list* olist); void oevent_list_init(Oevent_list* olist);
void oevent_list_deinit(Oevent_list* olist); void oevent_list_deinit(Oevent_list* olist);
void oevent_list_clear(Oevent_list* olist); void oevent_list_clear(Oevent_list* olist);
void oevent_list_copy(Oevent_list const* src, Oevent_list* dest);
ORCA_FORCE_NO_INLINE ORCA_FORCE_NO_INLINE
Oevent* oevent_list_alloc_item(Oevent_list* olist); Oevent* oevent_list_alloc_item(Oevent_list* olist);

8
tui_main.c

@ -588,6 +588,8 @@ int main(int argc, char** argv) {
Field scratch_field; Field scratch_field;
field_init(&scratch_field); field_init(&scratch_field);
Oevent_list scratch_oevent_list;
oevent_list_init(&scratch_oevent_list);
Tui_cursor tui_cursor; Tui_cursor tui_cursor;
tui_cursor_init(&tui_cursor); tui_cursor_init(&tui_cursor);
@ -619,9 +621,8 @@ int main(int argc, char** argv) {
if (needs_remarking) { if (needs_remarking) {
field_resize_raw_if_necessary(&scratch_field, field.height, field.width); field_resize_raw_if_necessary(&scratch_field, field.height, field.width);
field_copy(&field, &scratch_field); field_copy(&field, &scratch_field);
orca_run(field.buffer, markmap_r.buffer, field.height, field.width, orca_run(scratch_field.buffer, markmap_r.buffer, field.height, field.width,
tick_num, &bank, &oevent_list, piano_bits); tick_num, &bank, &scratch_oevent_list, piano_bits);
field_copy(&scratch_field, &field);
needs_remarking = false; needs_remarking = false;
} }
int content_y = 0; int content_y = 0;
@ -826,5 +827,6 @@ quit:
field_deinit(&scratch_field); field_deinit(&scratch_field);
undo_history_deinit(&undo_hist); undo_history_deinit(&undo_hist);
oevent_list_deinit(&oevent_list); oevent_list_deinit(&oevent_list);
oevent_list_deinit(&scratch_oevent_list);
return 0; return 0;
} }

Loading…
Cancel
Save