use std::sync::atomic::{AtomicBool, Ordering};
static NEEDS_FRAME: AtomicBool = AtomicBool::new(true);
static SIGNAL_FIRED: AtomicBool = AtomicBool::new(false);
#[inline]
pub fn request_frame() {
NEEDS_FRAME.store(true, Ordering::Release);
}
#[inline]
pub fn take_frame_request() -> bool {
NEEDS_FRAME.swap(false, Ordering::AcqRel)
}
#[inline]
pub fn peek_frame_request() -> bool {
NEEDS_FRAME.load(Ordering::Acquire)
}
#[inline]
pub fn signal_fired() {
SIGNAL_FIRED.store(true, Ordering::Release);
}
#[inline]
pub fn take_signal_fired() -> bool {
SIGNAL_FIRED.swap(false, Ordering::AcqRel)
}