Improve usb timing accuracy

This commit is contained in:
RipleyTom 2025-12-24 02:11:03 +01:00 committed by Elad
parent df6a3d01df
commit 847a147002

View file

@ -636,6 +636,8 @@ void usb_handler_thread::operator()()
// Process asynchronous requests that are pending
libusb_handle_events_timeout_completed(ctx, &lusb_tv, nullptr);
u64 delay = 1'000;
// Process fake transfers
if (!fake_transfers.empty())
{
@ -650,6 +652,13 @@ void usb_handler_thread::operator()()
if (transfer->expected_time > timestamp)
{
const u64 diff_time = transfer->expected_time - timestamp;
if (diff_time < delay)
{
delay = diff_time;
}
++it;
continue;
}
@ -668,7 +677,7 @@ void usb_handler_thread::operator()()
if (handled_devices.empty())
thread_ctrl::wait_for(500'000);
else
thread_ctrl::wait_for(1'000);
thread_ctrl::wait_for(delay);
}
}