From 58187f9703b4373e0a45766b35789ddce680d87b Mon Sep 17 00:00:00 2001 From: Yash Karandikar Date: Tue, 15 Mar 2022 11:04:18 -0500 Subject: [PATCH] Clear in the event loop instead of in draw() --- src/lib.rs | 15 +++++++-------- src/main.rs | 2 ++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3827e79..5c80a9c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -179,8 +179,6 @@ impl Sprite { let (creator, canvas) = ctx.inner(); let text = creator.create_texture_from_surface(&self.surf)?; - canvas.fill_rect(None)?; - canvas.clear(); canvas.copy_ex(&text, None, self.rect, self.angle, None, false, false)?; Ok(()) @@ -241,7 +239,7 @@ pub struct Context { } impl Context { - pub fn new(canvas: Canvas) -> Self { + fn new(canvas: Canvas) -> Self { let creator = canvas.texture_creator(); Self { canvas, @@ -249,17 +247,17 @@ impl Context { } } - pub fn canvas(&mut self) -> &mut Canvas { - &mut self.canvas - } - pub fn inner(&mut self) -> (&TextureCreator, &mut Canvas) { (&self.texture_creator, &mut self.canvas) } - pub fn update(&mut self) { + fn update(&mut self) { self.canvas.present(); } + + fn clear(&mut self) { + self.canvas.clear(); + } } /// Representation of the game. @@ -324,6 +322,7 @@ impl Game { if self.stopped.get() { break; } + ctx.clear(); func(&mut ctx, &mut events); ctx.update(); } diff --git a/src/main.rs b/src/main.rs index 389b615..c6ae277 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,7 @@ fn main() { let mut i = 0.0; let mut s = Sprite::new("duck.png", 500, 400).unwrap(); + let mut s2 = Sprite::new("duck.png", 400, 500).unwrap(); game.run(|ctx, event_pump| { i = (i + 1.0) % 360.0; @@ -39,6 +40,7 @@ fn main() { } } + s2.draw(ctx).unwrap(); s.draw(ctx).unwrap(); }) .unwrap();