diff --git a/src/dev/framebuffer/console.rs b/src/dev/framebuffer/console.rs index 77cc606..b7903aa 100644 --- a/src/dev/framebuffer/console.rs +++ b/src/dev/framebuffer/console.rs @@ -90,7 +90,7 @@ impl FramebufferConsole { self.need_screen_clear = false; } if self.need_line_clear { - fb_clear_area(tc, 0, self.cursor.1 * 16, 320, 16); + fb_clear_area(tc, 0, self.cursor.1 * 16, 320, 16, refresh_whole_screen); self.need_line_clear = false; } diff --git a/src/dev/framebuffer/mod.rs b/src/dev/framebuffer/mod.rs index 576d7db..1717f24 100644 --- a/src/dev/framebuffer/mod.rs +++ b/src/dev/framebuffer/mod.rs @@ -107,7 +107,7 @@ pub fn fb_clearscreen(tc: &mut TrafficControl, send_refresh: bool) { } } -pub fn fb_clear_area(tc: &mut TrafficControl, x: usize, y: usize, w: usize, h: usize) { +pub fn fb_clear_area(tc: &mut TrafficControl, x: usize, y: usize, w: usize, h: usize, send_refresh: bool) { const BYTES: [u8; 3] = FB_BG_COLOR.to_bytes(); let fbaddr = FRAMEBUFFER_ADDR.load(Ordering::Relaxed); if fbaddr == 0 { @@ -124,11 +124,13 @@ pub fn fb_clear_area(tc: &mut TrafficControl, x: usize, y: usize, w: usize, h: u } } } - framebuffer_update( - tc, - 0, - 0, - FRAMEBUFFER_WIDTH as u32, - FRAMEBUFFER_HEIGHT as u32, - ); + if send_refresh { + framebuffer_update( + tc, + 0, + 0, + FRAMEBUFFER_WIDTH as u32, + FRAMEBUFFER_HEIGHT as u32, + ); + } } \ No newline at end of file