1 extern crate sdl2;
2 
3 use sdl2::pixels::Color;
4 use sdl2::event::Event;
5 use sdl2::keyboard::Keycode;
6 use std::time::Duration;
7 
main() -> Result<(), String>8 pub fn main() -> Result<(), String> {
9     let sdl_context = sdl2::init()?;
10     let video_subsystem = sdl_context.video()?;
11 
12     let window = video_subsystem.window("rust-sdl2 demo: Video", 800, 600)
13         .position_centered()
14         .opengl()
15         .build()
16         .map_err(|e| e.to_string())?;
17 
18     let mut canvas = window.into_canvas().build().map_err(|e| e.to_string())?;
19 
20     canvas.set_draw_color(Color::RGB(255, 0, 0));
21     canvas.clear();
22     canvas.present();
23     let mut event_pump = sdl_context.event_pump()?;
24 
25     'running: loop {
26         for event in event_pump.poll_iter() {
27             match event {
28                 Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
29                     break 'running
30                 },
31                 _ => {}
32             }
33         }
34         ::std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));
35         // The rest of the game loop goes here...
36     }
37 
38     Ok(())
39 }
40