forked from koniifer/ableos
main graphics loop
This commit is contained in:
parent
b21c53fa82
commit
19508c979e
|
@ -34,8 +34,8 @@ run-args = [
|
||||||
"-drive",
|
"-drive",
|
||||||
"file=disk.qcow2,if=none,id=drive0",
|
"file=disk.qcow2,if=none,id=drive0",
|
||||||
|
|
||||||
# "-qmp",
|
"-qmp",
|
||||||
# "unix:../qmp-sock,server,nowait"
|
"unix:../qmp-sock,server,nowait"
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,7 +3,7 @@ use ab_glyph::{Font, FontRef, Glyph};
|
||||||
use alloc::{boxed::Box, vec, vec::Vec};
|
use alloc::{boxed::Box, vec, vec::Vec};
|
||||||
use shadeable::{evaluate_shader, pixel_format::Rgba64};
|
use shadeable::{evaluate_shader, pixel_format::Rgba64};
|
||||||
use spin;
|
use spin;
|
||||||
use vga::writers::GraphicsWriter;
|
use vga::{colors::Color16, writers::GraphicsWriter};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ScreenSize {
|
pub struct ScreenSize {
|
||||||
|
@ -127,7 +127,7 @@ impl ScreenBuffer {
|
||||||
// TODO force clear
|
// TODO force clear
|
||||||
pub fn force_redraw(&mut self) {
|
pub fn force_redraw(&mut self) {
|
||||||
use shadeable::pixel_format::into_vga_16;
|
use shadeable::pixel_format::into_vga_16;
|
||||||
VGAE.lock().clear_screen(into_vga_16(self.clear_color));
|
VGAE.lock().clear_screen(vga::colors::Color16::Black);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Draw a glyph on the screen at the given position
|
/// Draw a glyph on the screen at the given position
|
||||||
|
@ -211,8 +211,9 @@ impl VgaBuffer for ScreenBuffer {
|
||||||
for x in 0..self.size.x {
|
for x in 0..self.size.x {
|
||||||
use shadeable::pixel_format::into_vga_16;
|
use shadeable::pixel_format::into_vga_16;
|
||||||
let vga_color = into_vga_16(self.buff[y * self.size.x + x]);
|
let vga_color = into_vga_16(self.buff[y * self.size.x + x]);
|
||||||
|
// let vga_color = vga::colors::Color16::Cyan;
|
||||||
|
|
||||||
if into_vga_16(self.clear_color) != vga_color {
|
if Color16::Cyan != vga_color {
|
||||||
mode.set_pixel(x, y, vga_color);
|
mode.set_pixel(x, y, vga_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#![allow(clippy::empty_loop)]
|
#![allow(clippy::empty_loop)]
|
||||||
|
|
||||||
use acpi::AcpiTables;
|
use acpi::AcpiTables;
|
||||||
|
use x86_64::instructions::interrupts::{disable, enable};
|
||||||
|
|
||||||
use crate::scratchpad;
|
use crate::scratchpad;
|
||||||
|
|
||||||
|
@ -86,6 +87,25 @@ pub fn kernel_main() -> ! {
|
||||||
|
|
||||||
start_facepalm();
|
start_facepalm();
|
||||||
scratchpad();
|
scratchpad();
|
||||||
|
|
||||||
|
loop {
|
||||||
|
disable();
|
||||||
|
let mut mode = SCREEN_BUFFER.lock();
|
||||||
|
mode.force_redraw();
|
||||||
|
|
||||||
|
mode.copy_to_buffer();
|
||||||
|
mode.clear();
|
||||||
|
|
||||||
|
mode.draw_char(0, 0, 'v', 0xff00ffff);
|
||||||
|
|
||||||
|
mode.copy_to_buffer();
|
||||||
|
drop(mode);
|
||||||
|
enable()
|
||||||
|
// sloop::halt();
|
||||||
|
}
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
sloop()
|
sloop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue