Skip to content

Instantly share code, notes, and snippets.

@xnorpx
Created August 24, 2022 08:15
Show Gist options
  • Save xnorpx/3f77d689f2b97b1ac597c831967eade9 to your computer and use it in GitHub Desktop.
Save xnorpx/3f77d689f2b97b1ac597c831967eade9 to your computer and use it in GitHub Desktop.
timers
#[cfg(test)]
mod tests {
use super::*;
use windows::Win32::Media::timeGetTime;
use windows::Win32::Media::timeGetDevCaps;
use windows::Win32::Media::timeBeginPeriod;
use windows::Win32::Media::TIMECAPS;
use windows::Win32::Media::TIMERR_NOERROR;
use std::mem;
#[tokio::test]
async fn test() {
let mut x: u32 = 0;
let mut time_caps = TIMECAPS {
wPeriodMin: 0,
wPeriodMax: 0,
};
let time_caps_size = mem::size_of::<TIMECAPS>() as u32;
unsafe {
timeGetDevCaps(&mut time_caps as *mut TIMECAPS, time_caps_size);
timeBeginPeriod(time_caps.wPeriodMin);
}
let mut interval = tokio::time::interval(std::time::Duration::from_millis(20));
let mut timestamp = std::time::Instant::now();
loop {
interval.tick().await;
let elapsed = timestamp.elapsed().as_millis();
println!("{}", elapsed);
timestamp = std::time::Instant::now();
}
unsafe {
timeEndPeriod(time_caps.wPeriodMin);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment