Do a static buffer allocation for the Canvas

This commit is contained in:
Savanni D'Gerinel 2025-03-03 23:18:28 -05:00
parent 85e5d0bb5e
commit aea858dd17
2 changed files with 12 additions and 7 deletions

View File

@ -10,16 +10,18 @@
use alloc::{boxed::Box, vec::Vec}; use alloc::{boxed::Box, vec::Vec};
pub struct Canvas<'a> { static mut BUF: [u8; 163200] = [0; 163200];
pub buf: &'a mut [u8],
pub struct Canvas {
pub buf: &'static mut [u8; 163200],
pub width: usize, pub width: usize,
} }
impl<'a> Canvas<'a> { impl Canvas {
pub fn new(buf: &'a mut [u8], columns: usize) -> Self { pub fn new() -> Self {
Self { Self {
buf, buf: unsafe { &mut BUF },
width: columns, width: 170,
} }
} }

View File

@ -119,15 +119,18 @@ unsafe fn main() -> ! {
timer.delay_ms(1000); timer.delay_ms(1000);
/*
let mut framebuf = [0; FRAMEBUF]; let mut framebuf = [0; FRAMEBUF];
let mut canvas = Canvas::new(&mut framebuf, COLUMNS); let mut canvas = Canvas::new(&mut framebuf, COLUMNS);
*/
let mut canvas = Canvas::new();
loop { loop {
{ {
let display = display.acquire(); let display = display.acquire();
let _ = led.set_high(); let _ = led.set_high();
timer.delay_ms(100); timer.delay_ms(100);
display.send_buf(&canvas.buf); display.send_buf(canvas.buf);
let _ = led.set_low(); let _ = led.set_low();
} }