From 4659c00a55950177dfd367f40478cccf7a530777 Mon Sep 17 00:00:00 2001 From: Nova Date: Mon, 10 Oct 2022 20:45:53 -0400 Subject: [PATCH] fix(input): avoid capture order race condition --- src/nodes/input/mod.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/nodes/input/mod.rs b/src/nodes/input/mod.rs index 7e07392..71dbca4 100644 --- a/src/nodes/input/mod.rs +++ b/src/nodes/input/mod.rs @@ -261,14 +261,17 @@ pub fn process_input() { let datamap = method.serialize_datamap(); let frame = FRAME.load(Ordering::Relaxed); let captures = method.captures.get_valid_contents(); + let mut last_distance = 0.0; for distance_link in distance_links { distance_link.send_input(frame, &datamap); - if captures - .iter() - .any(|c| Arc::ptr_eq(c, &distance_link.handler)) + if last_distance != distance_link.distance + && captures + .iter() + .any(|c| Arc::ptr_eq(c, &distance_link.handler)) { break; } + last_distance = distance_link.distance; } method.captures.clear(); }