removed unnecessary mutex
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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>,
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
Reference in New Issue
Block a user