mirror of
https://github.com/itsjunetime/tdf.git
synced 2026-06-02 08:01:47 -04:00
Uhhhh various improvements from kittage and psx-shm
This commit is contained in:
+4
-4
@@ -17,7 +17,7 @@ use crate::renderer::{PageInfo, RenderError, fill_default};
|
|||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum MaybeTransferred {
|
pub enum MaybeTransferred {
|
||||||
NotYet(kittage::image::Image<'static>, memmap2::MmapMut),
|
NotYet(kittage::image::Image<'static>),
|
||||||
Transferred(kittage::ImageId)
|
Transferred(kittage::ImageId)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,13 +124,13 @@ pub async fn run_conversion_loop(
|
|||||||
|
|
||||||
match kittage::image::Image::shm_from(
|
match kittage::image::Image::shm_from(
|
||||||
dyn_img,
|
dyn_img,
|
||||||
format!("__tdf_kittage_{pid}_page_{page_num}").into()
|
&format!("__tdf_kittage_{pid}_page_{page_num}")
|
||||||
) {
|
) {
|
||||||
Ok((mut img, map)) => {
|
Ok(mut img) => {
|
||||||
img.num_or_id =
|
img.num_or_id =
|
||||||
NumberOrId::Id(NonZeroU32::new(page_num as u32 + 1).unwrap());
|
NumberOrId::Id(NonZeroU32::new(page_num as u32 + 1).unwrap());
|
||||||
ConvertedImage::Kitty {
|
ConvertedImage::Kitty {
|
||||||
img: MaybeTransferred::NotYet(img, map),
|
img: MaybeTransferred::NotYet(img),
|
||||||
area
|
area
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-21
@@ -45,7 +45,7 @@ impl<W: Write> Write for DbgWriter<W> {
|
|||||||
pub async fn run_action<'image, 'data, 'es>(
|
pub async fn run_action<'image, 'data, 'es>(
|
||||||
action: Action<'image, 'data>,
|
action: Action<'image, 'data>,
|
||||||
ev_stream: &'es mut EventStream
|
ev_stream: &'es mut EventStream
|
||||||
) -> Result<ImageId, TransmitError<'image, 'data, <&'es mut EventStream as AsyncInputReader>::Error>>
|
) -> Result<ImageId, TransmitError<<&'es mut EventStream as AsyncInputReader>::Error>>
|
||||||
{
|
{
|
||||||
let writer = DbgWriter {
|
let writer = DbgWriter {
|
||||||
w: std::io::stdout().lock(),
|
w: std::io::stdout().lock(),
|
||||||
@@ -85,7 +85,7 @@ pub async fn display_kitty_images(
|
|||||||
log::debug!("looking at (area {area:?}) img {img:#?}");
|
log::debug!("looking at (area {area:?}) img {img:#?}");
|
||||||
|
|
||||||
let this_err = match img {
|
let this_err = match img {
|
||||||
MaybeTransferred::NotYet(image, _map) => {
|
MaybeTransferred::NotYet(image) => {
|
||||||
let mut fake_image = Image {
|
let mut fake_image = Image {
|
||||||
num_or_id: image.num_or_id,
|
num_or_id: image.num_or_id,
|
||||||
format: PixelFormat::Rgb24(
|
format: PixelFormat::Rgb24(
|
||||||
@@ -118,28 +118,10 @@ pub async fn display_kitty_images(
|
|||||||
|
|
||||||
match res {
|
match res {
|
||||||
Ok(img_id) => {
|
Ok(img_id) => {
|
||||||
// We need the `_map` to be dropped here, but can't explicitly carry it
|
|
||||||
// over to here. So we're just relying on the overwrite of `img` to
|
|
||||||
// drop `_map` (and thus unmap the memory) for us
|
|
||||||
*img = MaybeTransferred::Transferred(img_id);
|
*img = MaybeTransferred::Transferred(img_id);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Err(e) => Err(match e {
|
Err(e) => Err((Some(page_num), e.to_string())),
|
||||||
TransmitError::Writing(action, e) => {
|
|
||||||
let num = if let Action::TransmitAndDisplay {
|
|
||||||
image: failed_img, ..
|
|
||||||
} = *action
|
|
||||||
{
|
|
||||||
*image = failed_img;
|
|
||||||
None
|
|
||||||
} else {
|
|
||||||
Some(page_num)
|
|
||||||
};
|
|
||||||
|
|
||||||
(num, e.to_string())
|
|
||||||
}
|
|
||||||
_ => (Some(page_num), e.to_string())
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MaybeTransferred::Transferred(image_id) => {
|
MaybeTransferred::Transferred(image_id) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user