subsurface_widget: Take owned SubsurfaceBuffer

This type is an `Arc`, so there's no major benefit to using a reference,
or a `Cow` to make it generic.

Drag surfaces currently require a `'static` `Element`, so this is needed
their.
This commit is contained in:
Ian Douglas Scott 2024-11-06 14:48:30 -08:00 • committed by Ashley Wulber
parent dbbaa4f442
commit c18f5f6dda
No known key found for this signature in database
GPG key ID: 5216D4F46A90A820

View file

@ -582,17 +582,16 @@ pub(crate) fn take_subsurfaces() -> Vec<SubsurfaceInfo> {
} }
#[must_use] #[must_use]
pub struct Subsurface<'a> { pub struct Subsurface {
buffer_size: Size<f32>, buffer_size: Size<f32>,
buffer: &'a SubsurfaceBuffer, buffer: SubsurfaceBuffer,
width: Length, width: Length,
height: Length, height: Length,
content_fit: ContentFit, content_fit: ContentFit,
alpha: f32, alpha: f32,
} }
impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer> impl<Message, Theme, Renderer> Widget<Message, Theme, Renderer> for Subsurface
for Subsurface<'a>
where where
Renderer: renderer::Renderer, Renderer: renderer::Renderer,
{ {
@ -648,11 +647,11 @@ where
} }
} }
impl<'a> Subsurface<'a> { impl Subsurface {
pub fn new( pub fn new(
buffer_width: u32, buffer_width: u32,
buffer_height: u32, buffer_height: u32,
buffer: &'a SubsurfaceBuffer, buffer: SubsurfaceBuffer,
) -> Self { ) -> Self {
Self { Self {
buffer_size: Size::new(buffer_width as f32, buffer_height as f32), buffer_size: Size::new(buffer_width as f32, buffer_height as f32),
@ -686,13 +685,13 @@ impl<'a> Subsurface<'a> {
} }
} }
impl<'a, Message, Theme, Renderer> From<Subsurface<'a>> impl<Message, Theme, Renderer> From<Subsurface>
for Element<'a, Message, Theme, Renderer> for Element<'static, Message, Theme, Renderer>
where where
Message: Clone + 'a, Message: Clone,
Renderer: renderer::Renderer, Renderer: renderer::Renderer,
{ {
fn from(subsurface: Subsurface<'a>) -> Self { fn from(subsurface: Subsurface) -> Self {
Self::new(subsurface) Self::new(subsurface)
} }
} }