From 6cb683a86be50c220b55b206420640c718aa00bf Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:14:27 +0900 Subject: [PATCH] fix(openxr): move removed screens to delete_queue --- src/backend/openxr/mod.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/backend/openxr/mod.rs b/src/backend/openxr/mod.rs index 87236a1..a1e2396 100644 --- a/src/backend/openxr/mod.rs +++ b/src/backend/openxr/mod.rs @@ -320,7 +320,10 @@ pub fn openxr_run(running: Arc) -> Result<(), BackendError> { &frame_ref, )?; - let _ = overlays.update(&mut app_state)?; + let removed_overlays = overlays.update(&mut app_state)?; + for o in removed_overlays { + delete_queue.push((o, cur_frame + 5)); + } notifications.submit_pending(&mut app_state); @@ -352,9 +355,10 @@ pub fn openxr_run(running: Arc) -> Result<(), BackendError> { TaskType::DropOverlay(sel) => { if let Some(o) = overlays.mut_by_selector(&sel) { if o.state.birthframe < cur_frame { - let o = overlays.remove_by_selector(&sel); - // set for deletion after all images are done showing - delete_queue.push((o, cur_frame + 5)); + if let Some(o) = overlays.remove_by_selector(&sel) { + // set for deletion after all images are done showing + delete_queue.push((o, cur_frame + 5)); + } } } }