fix(input): avoid capture order race condition

This commit is contained in:
Nova
2022-10-10 20:45:53 -04:00
parent aee4a7f916
commit 4659c00a55

View File

@@ -261,14 +261,17 @@ pub fn process_input() {
let datamap = method.serialize_datamap(); let datamap = method.serialize_datamap();
let frame = FRAME.load(Ordering::Relaxed); let frame = FRAME.load(Ordering::Relaxed);
let captures = method.captures.get_valid_contents(); let captures = method.captures.get_valid_contents();
let mut last_distance = 0.0;
for distance_link in distance_links { for distance_link in distance_links {
distance_link.send_input(frame, &datamap); distance_link.send_input(frame, &datamap);
if captures if last_distance != distance_link.distance
.iter() && captures
.any(|c| Arc::ptr_eq(c, &distance_link.handler)) .iter()
.any(|c| Arc::ptr_eq(c, &distance_link.handler))
{ {
break; break;
} }
last_distance = distance_link.distance;
} }
method.captures.clear(); method.captures.clear();
} }