[klout] .
This commit is contained in:
parent
73d86358d5
commit
863ace8c2c
|
|
@ -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(|| {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue