From aea858dd1738da36510ff2f681555dea3029064c Mon Sep 17 00:00:00 2001 From: Savanni D'Gerinel Date: Mon, 3 Mar 2025 23:18:28 -0500 Subject: [PATCH] Do a static buffer allocation for the Canvas --- pico-st7789/src/drawing.rs | 14 ++++++++------ pico-st7789/src/main.rs | 5 ++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/pico-st7789/src/drawing.rs b/pico-st7789/src/drawing.rs index e02e868..d8e780f 100644 --- a/pico-st7789/src/drawing.rs +++ b/pico-st7789/src/drawing.rs @@ -10,16 +10,18 @@ use alloc::{boxed::Box, vec::Vec}; -pub struct Canvas<'a> { - pub buf: &'a mut [u8], +static mut BUF: [u8; 163200] = [0; 163200]; + +pub struct Canvas { + pub buf: &'static mut [u8; 163200], pub width: usize, } -impl<'a> Canvas<'a> { - pub fn new(buf: &'a mut [u8], columns: usize) -> Self { +impl Canvas { + pub fn new() -> Self { Self { - buf, - width: columns, + buf: unsafe { &mut BUF }, + width: 170, } } diff --git a/pico-st7789/src/main.rs b/pico-st7789/src/main.rs index 33deb64..90d3789 100644 --- a/pico-st7789/src/main.rs +++ b/pico-st7789/src/main.rs @@ -119,15 +119,18 @@ unsafe fn main() -> ! { timer.delay_ms(1000); + /* let mut framebuf = [0; FRAMEBUF]; let mut canvas = Canvas::new(&mut framebuf, COLUMNS); + */ + let mut canvas = Canvas::new(); loop { { let display = display.acquire(); let _ = led.set_high(); timer.delay_ms(100); - display.send_buf(&canvas.buf); + display.send_buf(canvas.buf); let _ = led.set_low(); }