[klout] .

This commit is contained in:
soup 2024-12-21 18:08:52 -05:00
parent 73d86358d5
commit 863ace8c2c
Signed by: soup
SSH key fingerprint: SHA256:GYxje8eQkJ6HZKzVWDdyOUF1TyDiprruGhE0Ym8qYDY

View file

@ -272,12 +272,53 @@ fn worker_thread_run(init: WorkerThreadInit) {
} }
} }
fn print_layout(layout: Layout) {
let km = layout.to_key_matrix();
for chunk in km.chunks(MATRIX_COUNT / 3) {
for ch in chunk {
print!("{ch}");
}
println!();
}
}
fn clear_screen() {
print!("\x1B[2J\x1B[H");
io::stdout().flush().unwrap();
}
fn ui_thread_run(rx: Receiver<(f64, Layout)>) {
for (eff, layout) in rx.iter() {
clear_screen();
print_layout(layout);
println!("{eff}");
}
}
fn aggregator_thread_run(
layout: Layout,
rx: Receiver<(f64, Layout)>,
tx: Sender<(f64, Layout)>,
) {
let mut best_layout = layout;
let mut min_effort = f64::MAX;
for (eff, layout) in rx.iter() {
if eff < min_effort {
best_layout = layout;
min_effort = eff;
tx.send((min_effort, best_layout)).unwrap();
}
}
}
fn main() -> Result<()> { fn main() -> Result<()> {
let (tx_agg, rx_agg) = std::sync::mpsc::channel(); let (tx_agg, rx_agg) = std::sync::mpsc::channel();
let (tx_ui, rx_ui) = std::sync::mpsc::channel(); let (tx_ui, rx_ui) = std::sync::mpsc::channel();
let ui_thread = std::thread::spawn(|| { let ui_thread = std::thread::spawn(|| {
ui_thread_run(INITIAL_LAYOUT, rx_ui); ui_thread_run(rx_ui);
}); });
let aggregator_thread = std::thread::spawn(|| { let aggregator_thread = std::thread::spawn(|| {