A ton of bug fixes

This commit is contained in:
2026-01-28 01:09:23 +01:00
parent 935df84920
commit f4eafdf5b2
13 changed files with 400 additions and 130 deletions

View File

@@ -12,12 +12,12 @@ mod widgets;
use std::io;
use std::path::PathBuf;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::atomic::{AtomicBool, AtomicI64, Ordering};
use std::sync::Arc;
use std::time::Duration;
use clap::Parser;
use crossterm::event::{self, Event, EnableBracketedPaste, DisableBracketedPaste};
use crossterm::event::{self, DisableBracketedPaste, EnableBracketedPaste, Event};
use crossterm::terminal::{
disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
};
@@ -27,7 +27,9 @@ use ratatui::prelude::CrosstermBackend;
use ratatui::Terminal;
use app::App;
use engine::{build_stream, spawn_sequencer, AudioStreamConfig, LinkState, ScopeBuffer, SpectrumBuffer};
use engine::{
build_stream, spawn_sequencer, AudioStreamConfig, LinkState, ScopeBuffer, SpectrumBuffer,
};
use input::{handle_key, InputContext, InputResult};
use settings::Settings;
use state::audio::RefreshRate;
@@ -66,6 +68,7 @@ fn main() -> io::Result<()> {
}
let playing = Arc::new(AtomicBool::new(true));
let nudge_us = Arc::new(AtomicI64::new(0));
let mut app = App::new();
@@ -111,6 +114,7 @@ fn main() -> io::Result<()> {
Arc::clone(&app.rng),
settings.link.quantum,
Arc::clone(&app.live_keys),
Arc::clone(&nudge_us),
);
let stream_config = AudioStreamConfig {
@@ -201,6 +205,7 @@ fn main() -> io::Result<()> {
app.metrics.scope = scope_buffer.read();
(app.metrics.peak_left, app.metrics.peak_right) = scope_buffer.peaks();
app.metrics.spectrum = spectrum_buffer.read();
app.metrics.nudge_ms = nudge_us.load(Ordering::Relaxed) as f64 / 1000.0;
}
let seq_snapshot = sequencer.snapshot();
@@ -215,7 +220,9 @@ fn main() -> io::Result<()> {
}
terminal.draw(|frame| views::render(frame, &app, &link, &seq_snapshot))?;
if event::poll(Duration::from_millis(app.audio.config.refresh_rate.millis()))? {
if event::poll(Duration::from_millis(
app.audio.config.refresh_rate.millis(),
))? {
match event::read()? {
Event::Key(key) => {
let mut ctx = InputContext {
@@ -224,6 +231,7 @@ fn main() -> io::Result<()> {
snapshot: &seq_snapshot,
playing: &playing,
audio_tx: &sequencer.audio_tx,
nudge_us: &nudge_us,
};
if let InputResult::Quit = handle_key(&mut ctx, key) {
@@ -238,7 +246,6 @@ fn main() -> io::Result<()> {
_ => {}
}
}
}
disable_raw_mode()?;