From 8fa29c0e282bdb154ec1fee634fb8587556517ae Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Sat, 4 Jul 2026 05:26:44 +0900 Subject: [PATCH] wvr_server: dont release dma buffer --- wayvr/src/backend/wayvr/comp.rs | 6 +++++- wayvr/src/backend/wayvr/mod.rs | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/wayvr/src/backend/wayvr/comp.rs b/wayvr/src/backend/wayvr/comp.rs index 7156030a..5ba0424a 100644 --- a/wayvr/src/backend/wayvr/comp.rs +++ b/wayvr/src/backend/wayvr/comp.rs @@ -153,6 +153,7 @@ impl compositor::CompositorHandler for Application { }) { let sbwi = SurfaceBufWithImage { + buffer: Some(buffer.clone()), image, transform: wl_transform_to_frame_transform( attrs.buffer_transform, @@ -173,6 +174,7 @@ impl compositor::CompositorHandler for Application { }) { let sbwi = SurfaceBufWithImage { + buffer: None, image, transform: wl_transform_to_frame_transform( attrs.buffer_transform, @@ -183,6 +185,7 @@ impl compositor::CompositorHandler for Application { sbwi.apply_to_surface(states); } }); + buffer.release(); } Some(BufferType::SinglePixel) => { let spb = get_single_pixel_buffer(&buffer).unwrap(); // always Ok @@ -192,6 +195,7 @@ impl compositor::CompositorHandler for Application { }) { let sbwi = SurfaceBufWithImage { + buffer: None, image, transform: wl_transform_to_frame_transform( // does this even matter @@ -202,11 +206,11 @@ impl compositor::CompositorHandler for Application { }; sbwi.apply_to_surface(states); } + buffer.release(); } Some(other) => log::warn!("Unsupported wl_buffer format: {other:?}"), None => { /* don't draw anything */ } } - buffer.release(); } Some(BufferAssignment::Removed) | None => {} } diff --git a/wayvr/src/backend/wayvr/mod.rs b/wayvr/src/backend/wayvr/mod.rs index b33f68df..d0d7e169 100644 --- a/wayvr/src/backend/wayvr/mod.rs +++ b/wayvr/src/backend/wayvr/mod.rs @@ -16,7 +16,7 @@ use smithay::{ output::{Mode, Output}, reexports::{ wayland_protocols_misc::server_decoration::server::org_kde_kwin_server_decoration_manager as kde_decoration, - wayland_server::{self, backend::ClientId}, + wayland_server::{self, backend::ClientId, protocol::wl_buffer}, }, utils::{Logical, Size}, wayland::{ @@ -721,6 +721,7 @@ struct SurfaceBufWithImageContainer { #[derive(Clone)] #[allow(dead_code)] pub struct SurfaceBufWithImage { + pub buffer: Option, pub image: Arc, pub transform: Transform, pub scale: i32,