diff options
author | Samson <16504129+sagudev@users.noreply.github.com> | 2025-02-05 07:13:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-05 06:13:21 +0000 |
commit | 503bb10c5b1fafe01ebfb6b320902be2e8671c69 (patch) | |
tree | 99f78defd020790a5dc1340a1da8df121794d918 /components/canvas/webxr.rs | |
parent | fdbfecf7dd30e2feb0bca468b9326c5e61e91b49 (diff) | |
download | servo-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.rs | 12 |
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) } |