cursor: Re-enable cursor image cache
This commit is contained in:
parent
977ad674e5
commit
a97279147e
1 changed files with 8 additions and 10 deletions
|
|
@ -226,7 +226,7 @@ pub struct CursorStateInner {
|
||||||
current_cursor: CursorShape,
|
current_cursor: CursorShape,
|
||||||
pub cursors: HashMap<CursorShape, Cursor>,
|
pub cursors: HashMap<CursorShape, Cursor>,
|
||||||
current_image: Option<Image>,
|
current_image: Option<Image>,
|
||||||
//image_cache: Vec<(Image, MemoryRenderBuffer)>,
|
image_cache: Vec<(Image, MemoryRenderBuffer)>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CursorStateInner {
|
impl CursorStateInner {
|
||||||
|
|
@ -304,6 +304,7 @@ impl Default for CursorStateInner {
|
||||||
map
|
map
|
||||||
},
|
},
|
||||||
current_image: None,
|
current_image: None,
|
||||||
|
image_cache: Vec::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -344,24 +345,22 @@ where
|
||||||
let integer_scale = scale.x.max(scale.y).ceil() as u32;
|
let integer_scale = scale.x.max(scale.y).ceil() as u32;
|
||||||
|
|
||||||
let seat_userdata = seat.user_data();
|
let seat_userdata = seat.user_data();
|
||||||
let mut state = seat_userdata.get::<CursorState>().unwrap().lock().unwrap();
|
let mut state_ref = seat_userdata.get::<CursorState>().unwrap().lock().unwrap();
|
||||||
|
let state = &mut *state_ref;
|
||||||
let frame = state.cursors.get(&state.current_cursor).unwrap().get_image(
|
let frame = state.cursors.get(&state.current_cursor).unwrap().get_image(
|
||||||
integer_scale,
|
integer_scale,
|
||||||
Into::<Duration>::into(time).as_millis() as u32,
|
Into::<Duration>::into(time).as_millis() as u32,
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
let pointer_images = &mut state.image_cache;
|
||||||
let mut pointer_images = &mut state.image_cache;
|
|
||||||
|
|
||||||
let maybe_image =
|
let maybe_image =
|
||||||
pointer_images
|
pointer_images
|
||||||
.iter()
|
.iter()
|
||||||
.find_map(|(image, texture)| if image == &frame { Some(texture) } else { None });
|
.find_map(|(image, texture)| if image == &frame { Some(texture) } else { None });
|
||||||
*/
|
let pointer_image = match maybe_image {
|
||||||
let pointer_image = /*match maybe_image {
|
|
||||||
Some(image) => image,
|
Some(image) => image,
|
||||||
None => {
|
None => {
|
||||||
let buffer =*/ MemoryRenderBuffer::from_slice(
|
let buffer = MemoryRenderBuffer::from_slice(
|
||||||
&frame.pixels_rgba,
|
&frame.pixels_rgba,
|
||||||
Fourcc::Argb8888,
|
Fourcc::Argb8888,
|
||||||
(frame.width as i32, frame.height as i32),
|
(frame.width as i32, frame.height as i32),
|
||||||
|
|
@ -369,11 +368,10 @@ where
|
||||||
Transform::Normal,
|
Transform::Normal,
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
/*
|
|
||||||
pointer_images.push((frame.clone(), buffer));
|
pointer_images.push((frame.clone(), buffer));
|
||||||
pointer_images.last().map(|(_, i)| i).unwrap()
|
pointer_images.last().map(|(_, i)| i).unwrap()
|
||||||
}
|
}
|
||||||
};*/
|
};
|
||||||
|
|
||||||
let hotspot = Point::<i32, BufferCoords>::from((frame.xhot as i32, frame.yhot as i32));
|
let hotspot = Point::<i32, BufferCoords>::from((frame.xhot as i32, frame.yhot as i32));
|
||||||
state.current_image = Some(frame);
|
state.current_image = Some(frame);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue