removed unnecessary mutex

This commit is contained in:
awtterpip
2024-03-16 23:09:27 -05:00
parent 8ea04d5ddd
commit 68a7e54612
3 changed files with 11 additions and 13 deletions

View File

@@ -431,7 +431,6 @@ pub fn create_xr_session(
commands.insert_resource(images.clone()); commands.insert_resource(images.clone());
commands.insert_resource(graphics_info.clone()); commands.insert_resource(graphics_info.clone());
commands.insert_resource(stage.clone()); commands.insert_resource(stage.clone());
commands.insert_resource(frame_stream.clone());
commands.insert_resource(XrRenderResources { commands.insert_resource(XrRenderResources {
session, session,
frame_stream, frame_stream,

View File

@@ -322,12 +322,12 @@ pub fn add_texture_view(
handle handle
} }
pub fn begin_frame(frame_stream: ResMut<XrFrameStream>) { pub fn begin_frame(mut frame_stream: ResMut<XrFrameStream>) {
frame_stream.begin().expect("Failed to begin frame") frame_stream.begin().expect("Failed to begin frame")
} }
pub fn end_frame( pub fn end_frame(
frame_stream: ResMut<XrFrameStream>, mut frame_stream: ResMut<XrFrameStream>,
mut swapchain: ResMut<XrSwapchain>, mut swapchain: ResMut<XrSwapchain>,
stage: Res<XrStage>, stage: Res<XrStage>,
display_time: Res<XrTime>, display_time: Res<XrTime>,

View File

@@ -1,5 +1,5 @@
use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, Mutex}; use std::sync::Arc;
use crate::error::XrError; use crate::error::XrError;
use crate::graphics::*; use crate::graphics::*;
@@ -94,7 +94,7 @@ impl XrInstance {
info.0; info.0;
info => { info => {
let (session, frame_waiter, frame_stream) = self.0.create_session::<Api>(system_id, &info)?; let (session, frame_waiter, frame_stream) = self.0.create_session::<Api>(system_id, &info)?;
Ok((session.into(), XrFrameWaiter(frame_waiter), XrFrameStream(Api::wrap(Arc::new(Mutex::new(frame_stream)))))) Ok((session.into(), XrFrameWaiter(frame_waiter), XrFrameStream(Api::wrap(frame_stream))))
} }
) )
} }
@@ -139,31 +139,30 @@ impl XrSession {
} }
} }
#[derive(Resource, Clone)] #[derive(Resource)]
pub struct XrFrameStream(pub(crate) GraphicsWrap<Self>); pub struct XrFrameStream(pub(crate) GraphicsWrap<Self>);
impl GraphicsType for XrFrameStream { impl GraphicsType for XrFrameStream {
type Inner<G: GraphicsExt> = Arc<Mutex<openxr::FrameStream<G>>>; type Inner<G: GraphicsExt> = openxr::FrameStream<G>;
} }
impl XrFrameStream { impl XrFrameStream {
pub fn begin(&self) -> openxr::Result<()> { pub fn begin(&mut self) -> openxr::Result<()> {
graphics_match!( graphics_match!(
&self.0; &mut self.0;
stream => stream.lock().unwrap().begin() stream => stream.begin()
) )
} }
pub fn end( pub fn end(
&self, &mut self,
display_time: openxr::Time, display_time: openxr::Time,
environment_blend_mode: openxr::EnvironmentBlendMode, environment_blend_mode: openxr::EnvironmentBlendMode,
layers: &[&dyn CompositionLayer], layers: &[&dyn CompositionLayer],
) -> Result<()> { ) -> Result<()> {
graphics_match!( graphics_match!(
&self.0; &mut self.0;
stream => { stream => {
let mut stream = stream.lock().unwrap();
let mut new_layers = vec![]; let mut new_layers = vec![];
for (i, layer) in layers.into_iter().enumerate() { for (i, layer) in layers.into_iter().enumerate() {