From c18f5f6dda0b50bd32ea57bb857177e7b55ceae1 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 6 Nov 2024 14:48:30 -0800 Subject: [PATCH] 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. --- .../wayland/subsurface_widget.rs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/winit/src/platform_specific/wayland/subsurface_widget.rs b/winit/src/platform_specific/wayland/subsurface_widget.rs index 5d08dc4d..194bca61 100644 --- a/winit/src/platform_specific/wayland/subsurface_widget.rs +++ b/winit/src/platform_specific/wayland/subsurface_widget.rs @@ -582,17 +582,16 @@ pub(crate) fn take_subsurfaces() -> Vec { } #[must_use] -pub struct Subsurface<'a> { +pub struct Subsurface { buffer_size: Size, - buffer: &'a SubsurfaceBuffer, + buffer: SubsurfaceBuffer, width: Length, height: Length, content_fit: ContentFit, alpha: f32, } -impl<'a, Message, Theme, Renderer> Widget - for Subsurface<'a> +impl Widget for Subsurface where Renderer: renderer::Renderer, { @@ -648,11 +647,11 @@ where } } -impl<'a> Subsurface<'a> { +impl Subsurface { pub fn new( buffer_width: u32, buffer_height: u32, - buffer: &'a SubsurfaceBuffer, + buffer: SubsurfaceBuffer, ) -> Self { Self { 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> - for Element<'a, Message, Theme, Renderer> +impl From + for Element<'static, Message, Theme, Renderer> where - Message: Clone + 'a, + Message: Clone, Renderer: renderer::Renderer, { - fn from(subsurface: Subsurface<'a>) -> Self { + fn from(subsurface: Subsurface) -> Self { Self::new(subsurface) } }