From 6e9761e5dc966218fd8f8764646611e243b9674f Mon Sep 17 00:00:00 2001 From: ryan Date: Sat, 10 May 2025 13:47:46 -0400 Subject: [PATCH] keyfork-qrcode: add debug printing --- crates/qrcode/keyfork-qrcode/src/lib.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/qrcode/keyfork-qrcode/src/lib.rs b/crates/qrcode/keyfork-qrcode/src/lib.rs index 2599019..38f6591 100644 --- a/crates/qrcode/keyfork-qrcode/src/lib.rs +++ b/crates/qrcode/keyfork-qrcode/src/lib.rs @@ -213,7 +213,7 @@ pub fn scan_camera(timeout: Duration, index: usize) -> Result, QR let arced = Arc::new((Mutex::new(scan_queue), Condvar::new())); let (tx, rx) = channel(); - for _ in 0..thread_count { + for i in 0..thread_count { let tx = tx.clone(); let arced = arced.clone(); @@ -244,13 +244,16 @@ pub fn scan_camera(timeout: Duration, index: usize) -> Result, QR } let mut queue = condvar .wait_while(queue, |queue| { + eprintln!("thread {i} received signal"); queue.images.is_empty() || !queue.shutdown }) .expect(bug::bug!(POISONED_MUTEX)); if let Some(image) = queue.images.pop() { + eprintln!("thread {i} received image"); // drop the queue here since this is what's going to take time drop(queue); if let Some(content) = scanner.scan_image(image) { + println!("scanned: {content}"); tx.send(content).expect( bug::bug!("A scanned image could not be sent") ); @@ -263,6 +266,7 @@ pub fn scan_camera(timeout: Duration, index: usize) -> Result, QR while Instant::now().duration_since(start) < timeout { if let Ok(content) = rx.try_recv() { arced.0.lock().expect(bug::bug!(POISONED_MUTEX)).shutdown = true; + eprintln!("shutting down threads (good)"); arced.1.notify_all(); return Ok(Some(content)); } @@ -280,12 +284,14 @@ pub fn scan_camera(timeout: Duration, index: usize) -> Result, QR .expect(bug::bug!(POISONED_MUTEX)) .images .push(image); + eprintln!("notifying any thread"); arced.1.notify_one(); } // dbg_elapsed(count, start); arced.0.lock().expect(bug::bug!(POISONED_MUTEX)).shutdown = true; + eprintln!("shutting down threads (bad)"); arced.1.notify_all(); Ok(None)