main_loop 0.3.3

main loop for real time applications
extern crate main_loop;
extern crate winit;

use main_loop::ControlFlow;
use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
use std::sync::Arc;
use winit::{EventsLoop, Window};

fn main() {
    let mut events_loop = EventsLoop::new();
    let _window = Window::new(&events_loop).unwrap();

    let done = Arc::new(AtomicBool::new(false));
    let count = AtomicUsize::new(0);

    let d = done.clone();
    main_loop::winit::run(&mut events_loop, move |events, ms| {
        println!("{:?}", ms);

        for event in events {
            println!("{:?}", event);
        }

        if count.fetch_add(1, Ordering::SeqCst) >= 60 {
            d.store(true, Ordering::SeqCst);
            ControlFlow::Break
        } else {
            ControlFlow::Continue
        }
    });

    assert_eq!(done.load(Ordering::SeqCst), true);
}