webxr: Rename sender & receiver type aliases to WebXrSender and WebXrReceiver (#35307)

This will prevent rust-analyzer from suggesting the import of these
types when dealing with `crossbeam` channels.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2025-02-05 22:10:17 +01:00 committed by GitHub
parent eb0382449f
commit 1e5db41afd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 77 additions and 70 deletions

View file

@ -8,8 +8,8 @@ use euclid::{Point2D, RigidTransform3D};
use crate::{ use crate::{
ContextId, EnvironmentBlendMode, Error, Event, Floor, Frame, HitTestId, HitTestSource, ContextId, EnvironmentBlendMode, Error, Event, Floor, Frame, HitTestId, HitTestSource,
InputSource, LayerId, LayerInit, Native, Quitter, Sender, Session, SessionBuilder, SessionInit, InputSource, LayerId, LayerInit, Native, Quitter, Session, SessionBuilder, SessionInit,
SessionMode, Viewports, SessionMode, Viewports, WebXrSender,
}; };
/// A trait for discovering XR devices /// A trait for discovering XR devices
@ -47,7 +47,7 @@ pub trait DeviceAPI: 'static {
fn initial_inputs(&self) -> Vec<InputSource>; fn initial_inputs(&self) -> Vec<InputSource>;
/// Sets the event handling channel /// Sets the event handling channel
fn set_event_dest(&mut self, dest: Sender<Event>); fn set_event_dest(&mut self, dest: WebXrSender<Event>);
/// Quit the session /// Quit the session
fn quit(&mut self); fn quit(&mut self);

View file

@ -5,7 +5,8 @@
use euclid::RigidTransform3D; use euclid::RigidTransform3D;
use crate::{ use crate::{
ApiSpace, BaseSpace, Frame, InputFrame, InputId, InputSource, SelectEvent, SelectKind, Sender, ApiSpace, BaseSpace, Frame, InputFrame, InputId, InputSource, SelectEvent, SelectKind,
WebXrSender,
}; };
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
@ -45,7 +46,7 @@ pub enum Visibility {
/// when no event callback has been set /// when no event callback has been set
pub enum EventBuffer { pub enum EventBuffer {
Buffered(Vec<Event>), Buffered(Vec<Event>),
Sink(Sender<Event>), Sink(WebXrSender<Event>),
} }
impl Default for EventBuffer { impl Default for EventBuffer {
@ -64,7 +65,7 @@ impl EventBuffer {
} }
} }
pub fn upgrade(&mut self, dest: Sender<Event>) { pub fn upgrade(&mut self, dest: WebXrSender<Event>) {
if let EventBuffer::Buffered(ref mut events) = *self { if let EventBuffer::Buffered(ref mut events) = *self {
for event in events.drain(..) { for event in events.drain(..) {
let _ = dest.send(event); let _ = dest.send(event);

View file

@ -20,7 +20,7 @@ pub mod util;
mod view; mod view;
#[cfg(not(feature = "ipc"))] #[cfg(not(feature = "ipc"))]
pub use std::sync::mpsc::{Receiver, RecvTimeoutError, Sender}; pub use std::sync::mpsc::{RecvTimeoutError, WebXrReceiver, WebXrSender};
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
use std::thread; use std::thread;
use std::time::Duration; use std::time::Duration;
@ -37,11 +37,11 @@ pub use input::{
Handedness, InputFrame, InputId, InputSource, SelectEvent, SelectKind, TargetRayMode, Handedness, InputFrame, InputId, InputSource, SelectEvent, SelectKind, TargetRayMode,
}; };
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
pub use ipc_channel::ipc::channel; pub use ipc_channel::ipc::channel as webxr_channel;
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
pub use ipc_channel::ipc::IpcReceiver as Receiver; pub use ipc_channel::ipc::IpcReceiver as WebXrReceiver;
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
pub use ipc_channel::ipc::IpcSender as Sender; pub use ipc_channel::ipc::IpcSender as WebXrSender;
pub use layer::{ pub use layer::{
ContextId, GLContexts, GLTypes, LayerGrandManager, LayerGrandManagerAPI, LayerId, LayerInit, ContextId, GLContexts, GLTypes, LayerGrandManager, LayerGrandManagerAPI, LayerId, LayerInit,
LayerLayout, LayerManager, LayerManagerAPI, LayerManagerFactory, SubImage, SubImages, LayerLayout, LayerManager, LayerManagerAPI, LayerManagerFactory, SubImage, SubImages,
@ -63,18 +63,21 @@ pub use view::{
}; };
#[cfg(not(feature = "ipc"))] #[cfg(not(feature = "ipc"))]
pub fn channel<T>() -> Result<(Sender<T>, Receiver<T>), ()> { pub fn webxr_channel<T>() -> Result<(WebXrWebXrSender<T>, WebXrWebXrReceiver<T>), ()> {
Ok(std::sync::mpsc::channel()) Ok(std::sync::mpsc::channel())
} }
#[cfg(not(feature = "ipc"))] #[cfg(not(feature = "ipc"))]
pub fn recv_timeout<T>(receiver: &Receiver<T>, timeout: Duration) -> Result<T, RecvTimeoutError> { pub fn recv_timeout<T>(
receiver: &WebXrReceiver<T>,
timeout: Duration,
) -> Result<T, RecvTimeoutError> {
receiver.recv_timeout(timeout) receiver.recv_timeout(timeout)
} }
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
pub fn recv_timeout<T>( pub fn recv_timeout<T>(
receiver: &Receiver<T>, receiver: &WebXrReceiver<T>,
timeout: Duration, timeout: Duration,
) -> Result<T, ipc_channel::ipc::TryRecvError> ) -> Result<T, ipc_channel::ipc::TryRecvError>
where where

View file

@ -8,8 +8,8 @@ use serde::{Deserialize, Serialize};
use crate::{ use crate::{
DiscoveryAPI, Display, EntityType, Error, Floor, Handedness, Input, InputId, InputSource, DiscoveryAPI, Display, EntityType, Error, Floor, Handedness, Input, InputId, InputSource,
LeftEye, Native, Receiver, RightEye, SelectEvent, SelectKind, Sender, TargetRayMode, Triangle, LeftEye, Native, RightEye, SelectEvent, SelectKind, TargetRayMode, Triangle, Viewer, Viewport,
Viewer, Viewport, Visibility, Visibility, WebXrReceiver, WebXrSender,
}; };
/// A trait for discovering mock XR devices /// A trait for discovering mock XR devices
@ -17,7 +17,7 @@ pub trait MockDiscoveryAPI<GL>: 'static {
fn simulate_device_connection( fn simulate_device_connection(
&mut self, &mut self,
init: MockDeviceInit, init: MockDeviceInit,
receiver: Receiver<MockDeviceMsg>, receiver: WebXrReceiver<MockDeviceMsg>,
) -> Result<Box<dyn DiscoveryAPI<GL>>, Error>; ) -> Result<Box<dyn DiscoveryAPI<GL>>, Error>;
} }
@ -62,7 +62,7 @@ pub enum MockDeviceMsg {
VisibilityChange(Visibility), VisibilityChange(Visibility),
SetWorld(MockWorld), SetWorld(MockWorld),
ClearWorld, ClearWorld,
Disconnect(Sender<()>), Disconnect(WebXrSender<()>),
SetBoundsGeometry(Vec<Point2D<f32, Floor>>), SetBoundsGeometry(Vec<Point2D<f32, Floor>>),
SimulateResetPose, SimulateResetPose,
} }

View file

@ -8,14 +8,14 @@ use serde::{Deserialize, Serialize};
use crate::{ use crate::{
DiscoveryAPI, Error, Frame, GLTypes, LayerGrandManager, MainThreadSession, MockDeviceInit, DiscoveryAPI, Error, Frame, GLTypes, LayerGrandManager, MainThreadSession, MockDeviceInit,
MockDeviceMsg, MockDiscoveryAPI, Receiver, Sender, Session, SessionBuilder, SessionId, MockDeviceMsg, MockDiscoveryAPI, Session, SessionBuilder, SessionId, SessionInit, SessionMode,
SessionInit, SessionMode, WebXrReceiver, WebXrSender,
}; };
#[derive(Clone)] #[derive(Clone)]
#[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))] #[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))]
pub struct Registry { pub struct Registry {
sender: Sender<RegistryMsg>, sender: WebXrSender<RegistryMsg>,
waker: MainThreadWakerImpl, waker: MainThreadWakerImpl,
} }
@ -23,8 +23,8 @@ pub struct MainThreadRegistry<GL> {
discoveries: Vec<Box<dyn DiscoveryAPI<GL>>>, discoveries: Vec<Box<dyn DiscoveryAPI<GL>>>,
sessions: Vec<Box<dyn MainThreadSession>>, sessions: Vec<Box<dyn MainThreadSession>>,
mocks: Vec<Box<dyn MockDiscoveryAPI<GL>>>, mocks: Vec<Box<dyn MockDiscoveryAPI<GL>>>,
sender: Sender<RegistryMsg>, sender: WebXrSender<RegistryMsg>,
receiver: Receiver<RegistryMsg>, receiver: WebXrReceiver<RegistryMsg>,
waker: MainThreadWakerImpl, waker: MainThreadWakerImpl,
grand_manager: LayerGrandManager<GL>, grand_manager: LayerGrandManager<GL>,
next_session_id: u32, next_session_id: u32,
@ -45,7 +45,7 @@ impl Clone for Box<dyn MainThreadWaker> {
#[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))] #[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))]
struct MainThreadWakerImpl { struct MainThreadWakerImpl {
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
sender: Sender<()>, sender: WebXrSender<()>,
#[cfg(not(feature = "ipc"))] #[cfg(not(feature = "ipc"))]
waker: Box<dyn MainThreadWaker>, waker: Box<dyn MainThreadWaker>,
} }
@ -53,7 +53,7 @@ struct MainThreadWakerImpl {
#[cfg(feature = "ipc")] #[cfg(feature = "ipc")]
impl MainThreadWakerImpl { impl MainThreadWakerImpl {
fn new(waker: Box<dyn MainThreadWaker>) -> Result<MainThreadWakerImpl, Error> { fn new(waker: Box<dyn MainThreadWaker>) -> Result<MainThreadWakerImpl, Error> {
let (sender, receiver) = crate::channel().or(Err(Error::CommunicationError))?; let (sender, receiver) = crate::webxr_channel().or(Err(Error::CommunicationError))?;
ipc_channel::router::ROUTER.add_typed_route(receiver, Box::new(move |_| waker.wake())); ipc_channel::router::ROUTER.add_typed_route(receiver, Box::new(move |_| waker.wake()));
Ok(MainThreadWakerImpl { sender }) Ok(MainThreadWakerImpl { sender })
} }
@ -75,7 +75,7 @@ impl MainThreadWakerImpl {
} }
impl Registry { impl Registry {
pub fn supports_session(&mut self, mode: SessionMode, dest: Sender<Result<(), Error>>) { pub fn supports_session(&mut self, mode: SessionMode, dest: WebXrSender<Result<(), Error>>) {
let _ = self.sender.send(RegistryMsg::SupportsSession(mode, dest)); let _ = self.sender.send(RegistryMsg::SupportsSession(mode, dest));
self.waker.wake(); self.waker.wake();
} }
@ -84,8 +84,8 @@ impl Registry {
&mut self, &mut self,
mode: SessionMode, mode: SessionMode,
init: SessionInit, init: SessionInit,
dest: Sender<Result<Session, Error>>, dest: WebXrSender<Result<Session, Error>>,
animation_frame_handler: Sender<Frame>, animation_frame_handler: WebXrSender<Frame>,
) { ) {
let _ = self.sender.send(RegistryMsg::RequestSession( let _ = self.sender.send(RegistryMsg::RequestSession(
mode, mode,
@ -99,7 +99,7 @@ impl Registry {
pub fn simulate_device_connection( pub fn simulate_device_connection(
&mut self, &mut self,
init: MockDeviceInit, init: MockDeviceInit,
dest: Sender<Result<Sender<MockDeviceMsg>, Error>>, dest: WebXrSender<Result<WebXrSender<MockDeviceMsg>, Error>>,
) { ) {
let _ = self let _ = self
.sender .sender
@ -113,7 +113,7 @@ impl<GL: 'static + GLTypes> MainThreadRegistry<GL> {
waker: Box<dyn MainThreadWaker>, waker: Box<dyn MainThreadWaker>,
grand_manager: LayerGrandManager<GL>, grand_manager: LayerGrandManager<GL>,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let (sender, receiver) = crate::channel().or(Err(Error::CommunicationError))?; let (sender, receiver) = crate::webxr_channel().or(Err(Error::CommunicationError))?;
let discoveries = Vec::new(); let discoveries = Vec::new();
let sessions = Vec::new(); let sessions = Vec::new();
let mocks = Vec::new(); let mocks = Vec::new();
@ -199,7 +199,7 @@ impl<GL: 'static + GLTypes> MainThreadRegistry<GL> {
&mut self, &mut self,
mode: SessionMode, mode: SessionMode,
init: SessionInit, init: SessionInit,
raf_sender: Sender<Frame>, raf_sender: WebXrSender<Frame>,
) -> Result<Session, Error> { ) -> Result<Session, Error> {
for discovery in &mut self.discoveries { for discovery in &mut self.discoveries {
if discovery.supports_session(mode) { if discovery.supports_session(mode) {
@ -225,9 +225,9 @@ impl<GL: 'static + GLTypes> MainThreadRegistry<GL> {
fn simulate_device_connection( fn simulate_device_connection(
&mut self, &mut self,
init: MockDeviceInit, init: MockDeviceInit,
) -> Result<Sender<MockDeviceMsg>, Error> { ) -> Result<WebXrSender<MockDeviceMsg>, Error> {
for mock in &mut self.mocks { for mock in &mut self.mocks {
let (sender, receiver) = crate::channel().or(Err(Error::CommunicationError))?; let (sender, receiver) = crate::webxr_channel().or(Err(Error::CommunicationError))?;
if let Ok(discovery) = mock.simulate_device_connection(init.clone(), receiver) { if let Ok(discovery) = mock.simulate_device_connection(init.clone(), receiver) {
self.discoveries.insert(0, discovery); self.discoveries.insert(0, discovery);
return Ok(sender); return Ok(sender);
@ -243,9 +243,12 @@ enum RegistryMsg {
RequestSession( RequestSession(
SessionMode, SessionMode,
SessionInit, SessionInit,
Sender<Result<Session, Error>>, WebXrSender<Result<Session, Error>>,
Sender<Frame>, WebXrSender<Frame>,
),
SupportsSession(SessionMode, WebXrSender<Result<(), Error>>),
SimulateDeviceConnection(
MockDeviceInit,
WebXrSender<Result<WebXrSender<MockDeviceMsg>, Error>>,
), ),
SupportsSession(SessionMode, Sender<Result<(), Error>>),
SimulateDeviceConnection(MockDeviceInit, Sender<Result<Sender<MockDeviceMsg>, Error>>),
} }

View file

@ -11,9 +11,9 @@ use log::warn;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use crate::{ use crate::{
channel, ContextId, DeviceAPI, Error, Event, Floor, Frame, FrameUpdateEvent, HitTestId, webxr_channel, ContextId, DeviceAPI, Error, Event, Floor, Frame, FrameUpdateEvent, HitTestId,
HitTestSource, InputSource, LayerGrandManager, LayerId, LayerInit, Native, Receiver, Sender, HitTestSource, InputSource, LayerGrandManager, LayerId, LayerInit, Native, Viewport, Viewports,
Viewport, Viewports, WebXrReceiver, WebXrSender,
}; };
// How long to wait for an rAF. // How long to wait for an rAF.
@ -89,24 +89,24 @@ pub enum EnvironmentBlendMode {
#[derive(Debug)] #[derive(Debug)]
#[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))] #[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))]
enum SessionMsg { enum SessionMsg {
CreateLayer(ContextId, LayerInit, Sender<Result<LayerId, Error>>), CreateLayer(ContextId, LayerInit, WebXrSender<Result<LayerId, Error>>),
DestroyLayer(ContextId, LayerId), DestroyLayer(ContextId, LayerId),
SetLayers(Vec<(ContextId, LayerId)>), SetLayers(Vec<(ContextId, LayerId)>),
SetEventDest(Sender<Event>), SetEventDest(WebXrSender<Event>),
UpdateClipPlanes(/* near */ f32, /* far */ f32), UpdateClipPlanes(/* near */ f32, /* far */ f32),
StartRenderLoop, StartRenderLoop,
RenderAnimationFrame, RenderAnimationFrame,
RequestHitTest(HitTestSource), RequestHitTest(HitTestSource),
CancelHitTest(HitTestId), CancelHitTest(HitTestId),
UpdateFrameRate(f32, Sender<f32>), UpdateFrameRate(f32, WebXrSender<f32>),
Quit, Quit,
GetBoundsGeometry(Sender<Option<Vec<Point2D<f32, Floor>>>>), GetBoundsGeometry(WebXrSender<Option<Vec<Point2D<f32, Floor>>>>),
} }
#[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))] #[cfg_attr(feature = "ipc", derive(Serialize, Deserialize))]
#[derive(Clone)] #[derive(Clone)]
pub struct Quitter { pub struct Quitter {
sender: Sender<SessionMsg>, sender: WebXrSender<SessionMsg>,
} }
impl Quitter { impl Quitter {
@ -122,7 +122,7 @@ impl Quitter {
pub struct Session { pub struct Session {
floor_transform: Option<RigidTransform3D<f32, Native, Floor>>, floor_transform: Option<RigidTransform3D<f32, Native, Floor>>,
viewports: Viewports, viewports: Viewports,
sender: Sender<SessionMsg>, sender: WebXrSender<SessionMsg>,
environment_blend_mode: EnvironmentBlendMode, environment_blend_mode: EnvironmentBlendMode,
initial_inputs: Vec<InputSource>, initial_inputs: Vec<InputSource>,
granted_features: Vec<String>, granted_features: Vec<String>,
@ -144,7 +144,7 @@ impl Session {
} }
pub fn reference_space_bounds(&self) -> Option<Vec<Point2D<f32, Floor>>> { pub fn reference_space_bounds(&self) -> Option<Vec<Point2D<f32, Floor>>> {
let (sender, receiver) = channel().ok()?; let (sender, receiver) = webxr_channel().ok()?;
let _ = self.sender.send(SessionMsg::GetBoundsGeometry(sender)); let _ = self.sender.send(SessionMsg::GetBoundsGeometry(sender));
receiver.recv().ok()? receiver.recv().ok()?
} }
@ -175,7 +175,7 @@ impl Session {
} }
pub fn create_layer(&self, context_id: ContextId, init: LayerInit) -> Result<LayerId, Error> { pub fn create_layer(&self, context_id: ContextId, init: LayerInit) -> Result<LayerId, Error> {
let (sender, receiver) = channel().map_err(|_| Error::CommunicationError)?; let (sender, receiver) = webxr_channel().map_err(|_| Error::CommunicationError)?;
let _ = self let _ = self
.sender .sender
.send(SessionMsg::CreateLayer(context_id, init, sender)); .send(SessionMsg::CreateLayer(context_id, init, sender));
@ -201,7 +201,7 @@ impl Session {
let _ = self.sender.send(SessionMsg::UpdateClipPlanes(near, far)); let _ = self.sender.send(SessionMsg::UpdateClipPlanes(near, far));
} }
pub fn set_event_dest(&mut self, dest: Sender<Event>) { pub fn set_event_dest(&mut self, dest: WebXrSender<Event>) {
let _ = self.sender.send(SessionMsg::SetEventDest(dest)); let _ = self.sender.send(SessionMsg::SetEventDest(dest));
} }
@ -233,7 +233,7 @@ impl Session {
let _ = self.sender.send(SessionMsg::CancelHitTest(id)); let _ = self.sender.send(SessionMsg::CancelHitTest(id));
} }
pub fn update_frame_rate(&mut self, rate: f32, sender: Sender<f32>) { pub fn update_frame_rate(&mut self, rate: f32, sender: WebXrSender<f32>) {
let _ = self.sender.send(SessionMsg::UpdateFrameRate(rate, sender)); let _ = self.sender.send(SessionMsg::UpdateFrameRate(rate, sender));
} }
@ -251,12 +251,12 @@ enum RenderState {
/// For devices that want to do their own thread management, the `SessionThread` type is exposed. /// For devices that want to do their own thread management, the `SessionThread` type is exposed.
pub struct SessionThread<Device> { pub struct SessionThread<Device> {
receiver: Receiver<SessionMsg>, receiver: WebXrReceiver<SessionMsg>,
sender: Sender<SessionMsg>, sender: WebXrSender<SessionMsg>,
layers: Vec<(ContextId, LayerId)>, layers: Vec<(ContextId, LayerId)>,
pending_layers: Option<Vec<(ContextId, LayerId)>>, pending_layers: Option<Vec<(ContextId, LayerId)>>,
frame_count: u64, frame_count: u64,
frame_sender: Sender<Frame>, frame_sender: WebXrSender<Frame>,
running: bool, running: bool,
device: Device, device: Device,
id: SessionId, id: SessionId,
@ -269,10 +269,10 @@ where
{ {
pub fn new( pub fn new(
mut device: Device, mut device: Device,
frame_sender: Sender<Frame>, frame_sender: WebXrSender<Frame>,
id: SessionId, id: SessionId,
) -> Result<Self, Error> { ) -> Result<Self, Error> {
let (sender, receiver) = crate::channel().or(Err(Error::CommunicationError))?; let (sender, receiver) = crate::webxr_channel().or(Err(Error::CommunicationError))?;
device.set_quitter(Quitter { device.set_quitter(Quitter {
sender: sender.clone(), sender: sender.clone(),
}); });
@ -440,7 +440,7 @@ where
/// A type for building XR sessions /// A type for building XR sessions
pub struct SessionBuilder<'a, GL> { pub struct SessionBuilder<'a, GL> {
sessions: &'a mut Vec<Box<dyn MainThreadSession>>, sessions: &'a mut Vec<Box<dyn MainThreadSession>>,
frame_sender: Sender<Frame>, frame_sender: WebXrSender<Frame>,
layer_grand_manager: LayerGrandManager<GL>, layer_grand_manager: LayerGrandManager<GL>,
id: SessionId, id: SessionId,
} }
@ -452,7 +452,7 @@ impl<'a, GL: 'static> SessionBuilder<'a, GL> {
pub(crate) fn new( pub(crate) fn new(
sessions: &'a mut Vec<Box<dyn MainThreadSession>>, sessions: &'a mut Vec<Box<dyn MainThreadSession>>,
frame_sender: Sender<Frame>, frame_sender: WebXrSender<Frame>,
layer_grand_manager: LayerGrandManager<GL>, layer_grand_manager: LayerGrandManager<GL>,
id: SessionId, id: SessionId,
) -> Self { ) -> Self {
@ -470,7 +470,7 @@ impl<'a, GL: 'static> SessionBuilder<'a, GL> {
Factory: 'static + FnOnce(LayerGrandManager<GL>) -> Result<Device, Error> + Send, Factory: 'static + FnOnce(LayerGrandManager<GL>) -> Result<Device, Error> + Send,
Device: DeviceAPI, Device: DeviceAPI,
{ {
let (acks, ackr) = crate::channel().or(Err(Error::CommunicationError))?; let (acks, ackr) = crate::webxr_channel().or(Err(Error::CommunicationError))?;
let frame_sender = self.frame_sender; let frame_sender = self.frame_sender;
let layer_grand_manager = self.layer_grand_manager; let layer_grand_manager = self.layer_grand_manager;
let id = self.id; let id = self.id;

View file

@ -18,10 +18,10 @@ use surfman::{
use webxr_api::util::ClipPlanes; use webxr_api::util::ClipPlanes;
use webxr_api::{ use webxr_api::{
ContextId, DeviceAPI, DiscoveryAPI, Display, Error, Event, EventBuffer, Floor, Frame, ContextId, DeviceAPI, DiscoveryAPI, Display, Error, Event, EventBuffer, Floor, Frame,
InputSource, LayerGrandManager, LayerId, LayerInit, LayerManager, Native, Quitter, Sender, InputSource, LayerGrandManager, LayerId, LayerInit, LayerManager, Native, Quitter, Session,
Session, SessionBuilder, SessionInit, SessionMode, SomeEye, View, Viewer, ViewerPose, Viewport, SessionBuilder, SessionInit, SessionMode, SomeEye, View, Viewer, ViewerPose, Viewport,
Viewports, Views, CUBE_BACK, CUBE_BOTTOM, CUBE_LEFT, CUBE_RIGHT, CUBE_TOP, LEFT_EYE, RIGHT_EYE, Viewports, Views, WebXrSender, CUBE_BACK, CUBE_BOTTOM, CUBE_LEFT, CUBE_RIGHT, CUBE_TOP,
VIEWER, LEFT_EYE, RIGHT_EYE, VIEWER,
}; };
use crate::{SurfmanGL, SurfmanLayerManager}; use crate::{SurfmanGL, SurfmanLayerManager};
@ -305,7 +305,7 @@ impl DeviceAPI for GlWindowDevice {
vec![] vec![]
} }
fn set_event_dest(&mut self, dest: Sender<Event>) { fn set_event_dest(&mut self, dest: WebXrSender<Event>) {
self.events.upgrade(dest) self.events.upgrade(dest)
} }

View file

@ -13,8 +13,8 @@ use webxr_api::{
Frame, FrameUpdateEvent, HitTestId, HitTestResult, HitTestSource, Input, InputFrame, InputId, Frame, FrameUpdateEvent, HitTestId, HitTestResult, HitTestSource, Input, InputFrame, InputId,
InputSource, LayerGrandManager, LayerId, LayerInit, LayerManager, MockButton, MockDeviceInit, InputSource, LayerGrandManager, LayerId, LayerInit, LayerManager, MockButton, MockDeviceInit,
MockDeviceMsg, MockDiscoveryAPI, MockInputMsg, MockViewInit, MockViewsInit, MockWorld, Native, MockDeviceMsg, MockDiscoveryAPI, MockInputMsg, MockViewInit, MockViewsInit, MockWorld, Native,
Quitter, Ray, Receiver, SelectEvent, SelectKind, Sender, Session, SessionBuilder, SessionInit, Quitter, Ray, SelectEvent, SelectKind, Session, SessionBuilder, SessionInit, SessionMode,
SessionMode, Space, SubImages, View, Viewer, ViewerPose, Viewports, Views, Space, SubImages, View, Viewer, ViewerPose, Viewports, Views, WebXrReceiver, WebXrSender,
}; };
use crate::{SurfmanGL, SurfmanLayerManager}; use crate::{SurfmanGL, SurfmanLayerManager};
@ -74,7 +74,7 @@ impl MockDiscoveryAPI<SurfmanGL> for HeadlessMockDiscovery {
fn simulate_device_connection( fn simulate_device_connection(
&mut self, &mut self,
init: MockDeviceInit, init: MockDeviceInit,
receiver: Receiver<MockDeviceMsg>, receiver: WebXrReceiver<MockDeviceMsg>,
) -> Result<Box<dyn DiscoveryAPI<SurfmanGL>>, Error> { ) -> Result<Box<dyn DiscoveryAPI<SurfmanGL>>, Error> {
let viewer_origin = init.viewer_origin; let viewer_origin = init.viewer_origin;
let floor_transform = init.floor_origin.map(|f| f.inverse()); let floor_transform = init.floor_origin.map(|f| f.inverse());
@ -107,7 +107,7 @@ impl MockDiscoveryAPI<SurfmanGL> for HeadlessMockDiscovery {
} }
} }
fn run_loop(receiver: Receiver<MockDeviceMsg>, data: Arc<Mutex<HeadlessDeviceData>>) { fn run_loop(receiver: WebXrReceiver<MockDeviceMsg>, data: Arc<Mutex<HeadlessDeviceData>>) {
while let Ok(msg) = receiver.recv() { while let Ok(msg) = receiver.recv() {
if !data.lock().expect("Mutex poisoned").handle_msg(msg) { if !data.lock().expect("Mutex poisoned").handle_msg(msg) {
break; break;
@ -283,7 +283,7 @@ impl DeviceAPI for HeadlessDevice {
vec![] vec![]
} }
fn set_event_dest(&mut self, dest: Sender<Event>) { fn set_event_dest(&mut self, dest: WebXrSender<Event>) {
self.with_per_session(|s| s.events.upgrade(dest)) self.with_per_session(|s| s.events.upgrade(dest))
} }

View file

@ -29,9 +29,9 @@ use webxr_api::util::{self, ClipPlanes};
use webxr_api::{ use webxr_api::{
BaseSpace, Capture, ContextId, DeviceAPI, DiscoveryAPI, Display, Error, Event, EventBuffer, BaseSpace, Capture, ContextId, DeviceAPI, DiscoveryAPI, Display, Error, Event, EventBuffer,
Floor, Frame, GLContexts, InputId, InputSource, LayerGrandManager, LayerId, LayerInit, Floor, Frame, GLContexts, InputId, InputSource, LayerGrandManager, LayerId, LayerInit,
LayerManager, LayerManagerAPI, LeftEye, Native, Quitter, RightEye, SelectKind, Sender, LayerManager, LayerManagerAPI, LeftEye, Native, Quitter, RightEye, SelectKind,
Session as WebXrSession, SessionBuilder, SessionInit, SessionMode, SubImage, SubImages, View, Session as WebXrSession, SessionBuilder, SessionInit, SessionMode, SubImage, SubImages, View,
ViewerPose, Viewport, Viewports, Views, Visibility, ViewerPose, Viewport, Viewports, Views, Visibility, WebXrSender,
}; };
use crate::gl_utils::GlClearer; use crate::gl_utils::GlClearer;
@ -1421,7 +1421,7 @@ impl DeviceAPI for OpenXrDevice {
] ]
} }
fn set_event_dest(&mut self, dest: Sender<Event>) { fn set_event_dest(&mut self, dest: WebXrSender<Event>) {
self.events.upgrade(dest) self.events.upgrade(dest)
} }