From 292e3988c59a6aa3a240b141d228babcf20face5 Mon Sep 17 00:00:00 2001 From: Nova Date: Sat, 26 Jul 2025 00:38:20 -0700 Subject: [PATCH] fix(wayland): frame pacing compared to bevy --- src/wayland/mod.rs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/wayland/mod.rs b/src/wayland/mod.rs index 787e7ab..ebe7d11 100644 --- a/src/wayland/mod.rs +++ b/src/wayland/mod.rs @@ -287,7 +287,6 @@ static RENDER_DEVICE: OnceLock = OnceLock::new(); pub struct WaylandPlugin; impl Plugin for WaylandPlugin { fn build(&self, app: &mut App) { - app.add_systems(PreFrameWait, early_frame); app.add_systems(Update, update_graphics); app.sub_app_mut(RenderApp) .init_resource::() @@ -300,10 +299,7 @@ impl Plugin for WaylandPlugin { app.sub_app_mut(RenderApp) .add_systems(Render, setup_vulkano_context) .add_systems(Render, push_used_buffers.in_set(XrRenderSet::PreRender)) - .add_systems( - Render, - release_unneeded_buffers.in_set(XrRenderSet::PostRender), - ); + .add_systems(Render, after_render.in_set(XrRenderSet::PostRender)); } } @@ -318,15 +314,12 @@ fn push_used_buffers(mut buffers: ResMut) { } } -fn release_unneeded_buffers(mut buffers: ResMut) { - buffers.retain(|_, v| Arc::downgrade(v).strong_count() > 1); -} - fn init_render_device(dev: Res) { _ = RENDER_DEVICE.set(dev.clone()); } -fn early_frame() { +fn after_render(mut buffers: ResMut) { + buffers.retain(|_, v| Arc::downgrade(v).strong_count() > 1); for surface in WL_SURFACE_REGISTRY.get_valid_contents() { surface.frame_event(); }