fix: remove data races by making save_load_running atomic and removing main thread engine_process_commands calls
Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
19
tui.c
19
tui.c
@@ -129,7 +129,6 @@ static void delete_clips(int *clip_indices, int count) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
engine_reset_clip(g_engine, clip_indices[i]);
|
||||
}
|
||||
engine_process_commands(g_engine);
|
||||
}
|
||||
|
||||
// Yank clips (store their indices)
|
||||
@@ -172,7 +171,6 @@ static void paste_clips(void) {
|
||||
engine_trigger_clip(g_engine, new_clip_idx);
|
||||
}
|
||||
}
|
||||
engine_process_commands(g_engine);
|
||||
}
|
||||
|
||||
// Set a mark at current position
|
||||
@@ -199,7 +197,6 @@ static void go_to_mark(char mark_char) {
|
||||
static void play_next_scene(void) {
|
||||
int next_row = (selected_row + 1) % GRID_ROWS;
|
||||
engine_trigger_scene(g_engine, next_row);
|
||||
engine_process_commands(g_engine);
|
||||
selected_row = next_row;
|
||||
}
|
||||
|
||||
@@ -207,7 +204,6 @@ static void play_next_scene(void) {
|
||||
static void play_prev_scene(void) {
|
||||
int prev_row = (selected_row - 1 + GRID_ROWS) % GRID_ROWS;
|
||||
engine_trigger_scene(g_engine, prev_row);
|
||||
engine_process_commands(g_engine);
|
||||
selected_row = prev_row;
|
||||
}
|
||||
|
||||
@@ -435,7 +431,6 @@ static void handle_mouse_event(MEVENT *event) {
|
||||
|
||||
int clip_idx = grid_to_clip_index(selected_row, selected_col);
|
||||
engine_trigger_clip(g_engine, clip_idx);
|
||||
engine_process_commands(g_engine);
|
||||
} else if (event->bstate & BUTTON3_CLICKED) {
|
||||
// Right click: select and reset clip
|
||||
selected_row = grid_row;
|
||||
@@ -443,21 +438,18 @@ static void handle_mouse_event(MEVENT *event) {
|
||||
|
||||
int clip_idx = grid_to_clip_index(selected_row, selected_col);
|
||||
engine_reset_clip(g_engine, clip_idx);
|
||||
engine_process_commands(g_engine);
|
||||
} else if (event->bstate & BUTTON2_CLICKED) {
|
||||
// Middle click: select and trigger scene
|
||||
selected_row = grid_row;
|
||||
selected_col = grid_col;
|
||||
|
||||
engine_trigger_scene(g_engine, selected_row);
|
||||
engine_process_commands(g_engine);
|
||||
} else if (event->bstate & BUTTON1_DOUBLE_CLICKED) {
|
||||
// Double left click: select and trigger scene
|
||||
selected_row = grid_row;
|
||||
selected_col = grid_col;
|
||||
|
||||
engine_trigger_scene(g_engine, selected_row);
|
||||
engine_process_commands(g_engine);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,7 +633,6 @@ void tui_run(Engine *engine) {
|
||||
case 't': {
|
||||
int clip_idx = grid_to_clip_index(selected_row, selected_col);
|
||||
engine_trigger_clip(engine, clip_idx);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -649,7 +640,6 @@ void tui_run(Engine *engine) {
|
||||
// Delete (reset) current clip
|
||||
int clip_idx = grid_to_clip_index(selected_row, selected_col);
|
||||
engine_reset_clip(engine, clip_idx);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -669,7 +659,6 @@ void tui_run(Engine *engine) {
|
||||
case 's': {
|
||||
// Trigger scene for current row
|
||||
engine_trigger_scene(engine, selected_row);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -686,7 +675,6 @@ void tui_run(Engine *engine) {
|
||||
}
|
||||
QuantizeMode next = modes[(current + 1) % num_modes];
|
||||
engine_set_quantize_mode(engine, next);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -697,19 +685,16 @@ void tui_run(Engine *engine) {
|
||||
} else {
|
||||
engine_set_quantize_threshold(engine, 0);
|
||||
}
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case ' ': { // Space bar - toggle play/pause
|
||||
engine_transport_toggle_play(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'S': { // Shift+S - stop transport
|
||||
engine_transport_stop(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -718,13 +703,11 @@ void tui_run(Engine *engine) {
|
||||
ClockSource next = (current == CLOCK_SOURCE_INTERNAL) ?
|
||||
CLOCK_SOURCE_MIDI : CLOCK_SOURCE_INTERNAL;
|
||||
engine_set_clock_source(engine, next);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'x':
|
||||
engine_transport_stop(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
|
||||
case ':': {
|
||||
@@ -791,14 +774,12 @@ void tui_run(Engine *engine) {
|
||||
case 'u': {
|
||||
// Undo
|
||||
engine_undo_action(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
case 18: { // Ctrl+R (18 = 0x12)
|
||||
// Redo
|
||||
engine_redo_action(engine);
|
||||
engine_process_commands(engine);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user