use std::io;
use std::path::PathBuf;
use denise::SurfaceError;
use crate::info::FbInfoError;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum FbdevError {
#[error("no framebuffer device found")]
NoDevice,
#[error("opening {path}")]
Open {
path: PathBuf,
#[source]
source: io::Error,
},
#[error("reading {path}")]
Sysfs {
path: PathBuf,
#[source]
source: io::Error,
},
#[error(transparent)]
Geometry(#[from] FbInfoError),
#[error("mapping the framebuffer")]
Map(#[source] io::Error),
#[error("framebuffer is {actual} bytes but the geometry needs {required}")]
TooSmall {
required: usize,
actual: usize,
},
}
impl From<FbdevError> for SurfaceError {
fn from(err: FbdevError) -> Self {
SurfaceError::backend(err)
}
}