Browse Source

Change orca_run() to not clear input buffers

Callers are now in charge of clearing/cleanup
master
cancel 5 years ago
parent
commit
a89b2ace51
  1. 3
      cli_main.c
  2. 2
      sim.c
  3. 20
      tui_main.c

3
cli_main.c

@ -1,6 +1,7 @@
#include "bank.h"
#include "base.h"
#include "field.h"
#include "gbuffer.h"
#include "sim.h"
#include <getopt.h>
@ -102,6 +103,8 @@ int main(int argc, char** argv) {
oevent_list_init(&oevent_list);
Usz max_ticks = (Usz)ticks;
for (Usz i = 0; i < max_ticks; ++i) {
mbuffer_clear(mbuf_r.buffer, field.height, field.width);
oevent_list_clear(&oevent_list);
orca_run(field.buffer, mbuf_r.buffer, field.height, field.width, i,
&oevent_list, 0);
}

2
sim.c

@ -741,8 +741,6 @@ void orca_run(Glyph* restrict gbuf, Mark* restrict mbuf, Usz height, Usz width,
Usz tick_number, Oevent_list* oevent_list, Usz random_seed) {
Glyph vars_slots[Glyphs_index_count];
memset(vars_slots, '.', sizeof(vars_slots));
mbuffer_clear(mbuf, height, width);
oevent_list_clear(oevent_list);
Oper_extra_params extras;
extras.vars_slots = &vars_slots[0];
extras.oevent_list = oevent_list;

20
tui_main.c

@ -1097,6 +1097,14 @@ double ged_secs_to_deadline(Ged const* a) {
void ged_reset_clock(Ged* a) { a->clock = stm_now(); }
void clear_and_run_vm(Glyph* restrict gbuf, Mark* restrict mbuf, Usz height,
Usz width, Usz tick_number, Oevent_list* oevent_list,
Usz random_seed) {
mbuffer_clear(mbuf, height, width);
oevent_list_clear(oevent_list);
orca_run(gbuf, mbuf, height, width, tick_number, oevent_list, random_seed);
}
void ged_do_stuff(Ged* a) {
double secs_span = 60.0 / (double)a->bpm / 4.0;
Oosc_dev* oosc_dev = a->oosc_dev;
@ -1143,8 +1151,9 @@ void ged_do_stuff(Ged* a) {
if (do_play) {
apply_time_to_sustained_notes(oosc_dev, midi_mode, secs_span,
&a->susnote_list, &a->time_to_next_note_off);
orca_run(a->field.buffer, a->mbuf_r.buffer, a->field.height, a->field.width,
a->tick_num, &a->oevent_list, a->random_seed);
clear_and_run_vm(a->field.buffer, a->mbuf_r.buffer, a->field.height,
a->field.width, a->tick_num, &a->oevent_list,
a->random_seed);
++a->tick_num;
a->needs_remarking = true;
a->is_draw_dirty = true;
@ -1234,7 +1243,7 @@ void ged_draw(Ged* a, WINDOW* win) {
a->field.width);
field_copy(&a->field, &a->scratch_field);
mbuf_reusable_ensure_size(&a->mbuf_r, a->field.height, a->field.width);
orca_run(a->scratch_field.buffer, a->mbuf_r.buffer, a->field.height,
clear_and_run_vm(a->scratch_field.buffer, a->mbuf_r.buffer, a->field.height,
a->field.width, a->tick_num, &a->scratch_oevent_list,
a->random_seed);
a->needs_remarking = false;
@ -1641,8 +1650,9 @@ void ged_input_cmd(Ged* a, Ged_input_cmd ev) {
break;
case Ged_input_cmd_step_forward:
undo_history_push(&a->undo_hist, &a->field, a->tick_num);
orca_run(a->field.buffer, a->mbuf_r.buffer, a->field.height, a->field.width,
a->tick_num, &a->oevent_list, a->random_seed);
clear_and_run_vm(a->field.buffer, a->mbuf_r.buffer, a->field.height,
a->field.width, a->tick_num, &a->oevent_list,
a->random_seed);
++a->tick_num;
a->activity_counter += a->oevent_list.count;
a->needs_remarking = true;

Loading…
Cancel
Save