Give downstream a Vec instead of the pump

This commit is contained in:
Yash Karandikar 2022-03-06 13:19:04 -06:00
parent c344049fd3
commit 475166b573
Signed by: karx
GPG key ID: A794DA2529474BA5
2 changed files with 5 additions and 4 deletions

View file

@ -50,7 +50,7 @@ impl Game {
} }
} }
pub fn run<F: Fn(&mut Canvas<Window>, &mut EventPump)>(&self, func: F) -> Result<()> { pub fn run<F: Fn(&mut Canvas<Window>, Vec<Event>)>(&self, func: F) -> Result<()> {
let sdl_context = sdl2::init()?; let sdl_context = sdl2::init()?;
let video_subsystem = sdl_context.video()?; let video_subsystem = sdl_context.video()?;
@ -67,7 +67,8 @@ impl Game {
if self.stopped.get() { if self.stopped.get() {
break; break;
} }
func(&mut canvas, &mut event_pump); let events = event_pump.poll_iter().collect::<Vec<Event>>();
func(&mut canvas, events);
canvas.present(); canvas.present();
} }

View file

@ -1,12 +1,12 @@
use catbox::{Event, Game, Keycode}; use catbox::{Event, Game, Keycode};
fn main() { fn main() {
let mut game = Game::new("catbox demo", 1000, 800); let game = Game::new("catbox demo", 1000, 800);
game.run(|canvas, event_pump| { game.run(|canvas, event_pump| {
canvas.set_draw_color(catbox::Color::RGB(0, 59, 111)); canvas.set_draw_color(catbox::Color::RGB(0, 59, 111));
canvas.clear(); canvas.clear();
for event in event_pump.poll_iter() { for event in event_pump {
match event { match event {
Event::Quit { .. } Event::Quit { .. }
| Event::KeyDown { | Event::KeyDown {