aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas/webxr.rs
diff options
context:
space:
mode:
authorSamson <16504129+sagudev@users.noreply.github.com>2025-02-05 07:13:21 +0100
committerGitHub <noreply@github.com>2025-02-05 06:13:21 +0000
commit503bb10c5b1fafe01ebfb6b320902be2e8671c69 (patch)
tree99f78defd020790a5dc1340a1da8df121794d918 /components/canvas/webxr.rs
parentfdbfecf7dd30e2feb0bca468b9326c5e61e91b49 (diff)
downloadservo-503bb10c5b1fafe01ebfb6b320902be2e8671c69.tar.gz
servo-503bb10c5b1fafe01ebfb6b320902be2e8671c69.zip
Use surfman with glow bindings (#34328)
* Use glowing surfman Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> * Port https://github.com/servo/webxr/pull/255 Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> * fixups rebase Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> * fmt Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> * Update surfman Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> * Fix stale TODO Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com> --------- Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Diffstat (limited to 'components/canvas/webxr.rs')
-rw-r--r--components/canvas/webxr.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/components/canvas/webxr.rs b/components/canvas/webxr.rs
index 791e1394061..a5deb312183 100644
--- a/components/canvas/webxr.rs
+++ b/components/canvas/webxr.rs
@@ -3,6 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use std::collections::HashMap;
+use std::num::NonZeroU32;
use canvas_traits::webgl::{
webgl_channel, WebGLContextId, WebGLMsg, WebGLSender, WebXRCommand, WebXRLayerManagerId,
@@ -25,7 +26,7 @@ use crate::webgl_thread::{GLContextData, WebGLThread};
pub(crate) struct WebXRBridge {
factory_receiver: crossbeam_channel::Receiver<WebXRLayerManagerFactory<WebXRSurfman>>,
managers: HashMap<WebXRLayerManagerId, Box<dyn WebXRLayerManagerAPI<WebXRSurfman>>>,
- next_manager_id: u32,
+ next_manager_id: NonZeroU32,
}
impl WebXRBridge {
@@ -34,7 +35,7 @@ impl WebXRBridge {
factory_receiver, ..
} = init;
let managers = HashMap::new();
- let next_manager_id = 1;
+ let next_manager_id = NonZeroU32::MIN;
WebXRBridge {
factory_receiver,
managers,
@@ -55,8 +56,11 @@ impl WebXRBridge {
.recv()
.map_err(|_| WebXRError::CommunicationError)?;
let manager = factory.build(device, contexts)?;
- let manager_id = unsafe { WebXRLayerManagerId::new(self.next_manager_id) };
- self.next_manager_id += 1;
+ let manager_id = WebXRLayerManagerId::new(self.next_manager_id);
+ self.next_manager_id = self
+ .next_manager_id
+ .checked_add(1)
+ .expect("next_manager_id should not overflow");
self.managers.insert(manager_id, manager);
Ok(manager_id)
}