#![no_std]
extern crate alloc;
mod device;
pub mod rdif;
mod types;
use ax_lazyinit::LazyInit;
use ax_sync::Mutex;
pub use device::{DisplayDevice, DisplayError, DisplayResult, ErasedDisplayDevice};
pub use types::{DisplayInfo, PixelFormat};
static MAIN_DISPLAY: LazyInit<Mutex<ErasedDisplayDevice>> = LazyInit::new();
pub fn init_display(display_devs: impl IntoIterator<Item = ErasedDisplayDevice>) {
log::info!("Initialize display subsystem...");
if let Some(dev) = display_devs.into_iter().next() {
log::info!(" use display device 0: {}", dev.name());
MAIN_DISPLAY.init_once(Mutex::new(dev));
} else {
log::warn!(" No display device found!");
}
}
pub fn has_display() -> bool {
MAIN_DISPLAY.is_inited()
}
pub fn framebuffer_info() -> DisplayInfo {
MAIN_DISPLAY.lock().info()
}
pub fn framebuffer_flush() -> bool {
MAIN_DISPLAY.lock().flush().is_ok()
}