diff --git a/src/devices/graphical_debug/debug.rs b/src/devices/graphical_debug/debug.rs index 4378e1d8b3..49c8f49bf3 100644 --- a/src/devices/graphical_debug/debug.rs +++ b/src/devices/graphical_debug/debug.rs @@ -1,4 +1,13 @@ -use super::Display; +use core::ptr; + +pub(super) struct Display { + pub(super) width: usize, + pub(super) height: usize, + pub(super) stride: usize, + onscreen_ptr: *mut u32, +} + +unsafe impl Send for Display {} static FONT: &[u8] = include_bytes!("../../../res/unifont.font"); @@ -11,7 +20,19 @@ pub struct DebugDisplay { } impl DebugDisplay { - pub(super) fn new(display: Display) -> DebugDisplay { + pub(super) fn new( + width: usize, + height: usize, + stride: usize, + onscreen_ptr: *mut u32, + ) -> DebugDisplay { + let display = Display { + width, + height, + stride, + onscreen_ptr, + }; + let w = display.width / 8; let h = display.height / 16; DebugDisplay { @@ -48,8 +69,8 @@ impl DebugDisplay { fn clear_row(&mut self, y: usize) { for row in y * 16..(y + 1) * 16 { unsafe { - core::ptr::write_bytes( - self.display.data_mut().add(row * self.display.stride), + ptr::write_bytes( + self.display.onscreen_ptr.add(row * self.display.stride), 0, self.display.width, ); @@ -63,7 +84,7 @@ impl DebugDisplay { let phys_y = y % self.display.height; let mut dst = unsafe { self.display - .data_mut() + .onscreen_ptr .add(phys_y * self.display.stride + x) }; @@ -82,7 +103,7 @@ impl DebugDisplay { let next_phys_y = (phys_y + row + 1) % self.display.height; dst = unsafe { self.display - .data_mut() + .onscreen_ptr .add(next_phys_y * self.display.stride + x) }; } diff --git a/src/devices/graphical_debug/display.rs b/src/devices/graphical_debug/display.rs deleted file mode 100644 index f0f1d0e915..0000000000 --- a/src/devices/graphical_debug/display.rs +++ /dev/null @@ -1,34 +0,0 @@ -use core::ptr; - -/// A display -pub(super) struct Display { - pub(super) width: usize, - pub(super) height: usize, - pub(super) stride: usize, - onscreen_ptr: *mut u32, -} - -unsafe impl Send for Display {} - -impl Display { - pub(super) fn new( - width: usize, - height: usize, - stride: usize, - onscreen_ptr: *mut u32, - ) -> Display { - unsafe { - ptr::write_bytes(onscreen_ptr, 0, stride * height); - } - Display { - width, - height, - stride, - onscreen_ptr, - } - } - - pub(super) fn data_mut(&mut self) -> *mut u32 { - self.onscreen_ptr - } -} diff --git a/src/devices/graphical_debug/mod.rs b/src/devices/graphical_debug/mod.rs index 3f00c5ebdd..b701c9a821 100644 --- a/src/devices/graphical_debug/mod.rs +++ b/src/devices/graphical_debug/mod.rs @@ -2,10 +2,8 @@ use core::str; use spin::Mutex; pub use self::debug::DebugDisplay; -use self::display::Display; pub mod debug; -pub mod display; pub static DEBUG_DISPLAY: Mutex> = Mutex::new(None); @@ -60,11 +58,8 @@ pub fn init(env: &[u8]) { width, height, stride, phys, virt ); - { - let display = Display::new(width, height, stride, virt as *mut u32); - let debug_display = DebugDisplay::new(display); - *DEBUG_DISPLAY.lock() = Some(debug_display); - } + let debug_display = DebugDisplay::new(width, height, stride, virt as *mut u32); + *DEBUG_DISPLAY.lock() = Some(debug_display); } #[allow(unused)]