feat: add save/load thread and WAV file I/O for clip persistence

Co-authored-by: aider (deepseek/deepseek-coder) <aider@aider.chat>
This commit is contained in:
Loic Coenen
2026-05-02 10:18:04 +00:00
parent c48394f341
commit f37cb5c0a6
6 changed files with 505 additions and 1 deletions

22
tui.c
View File

@@ -1,4 +1,5 @@
#include "tui.h"
#include "wav_io.h"
#include <ncurses.h>
#include <string.h>
#include <stdlib.h>
@@ -366,8 +367,27 @@ static bool handle_command_mode(void) {
// Restore previous nodelay state before returning
nodelay(stdscr, prev_nodelay);
return true; // Quit
} else if (strncmp(cmd_buffer, "load ", 5) == 0) {
// :load <clip_index> <filename>
char *rest = cmd_buffer + 5;
int clip_idx = atoi(rest);
// Find filename after clip index
char *filename = rest;
while (*filename && *filename != ' ') filename++;
if (*filename) {
*filename = '\0';
filename++;
while (*filename == ' ') filename++;
if (*filename) {
// Submit load request via save/load queue
save_load_queue_push(&g_engine->save_load_queue, REQ_LOAD_CLIP, clip_idx, filename);
}
}
} else if (strncmp(cmd_buffer, "save ", 5) == 0) {
// :save <clip_index>
int clip_idx = atoi(cmd_buffer + 5);
save_load_queue_push(&g_engine->save_load_queue, REQ_SAVE_CLIP, clip_idx, "");
}
// Add more commands here as needed
// Restore previous nodelay state before returning
nodelay(stdscr, prev_nodelay);