diff options
author | Josh Matthews <josh@joshmatthews.net> | 2020-02-27 16:41:35 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2020-03-09 17:50:54 -0400 |
commit | fbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc (patch) | |
tree | ef5491416055e5f39910d6b84aa5cdeb0e410171 /components/script | |
parent | b062f514953c326ad8d1753de715bbb24ee68625 (diff) | |
download | servo-fbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc.tar.gz servo-fbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc.zip |
Integrate swapchain surface provider changes into webgl and webxr implementations.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/webglframebuffer.rs | 8 | ||||
-rw-r--r-- | components/script/dom/webglrenderingcontext.rs | 4 | ||||
-rw-r--r-- | components/script/dom/xrsession.rs | 6 |
3 files changed, 13 insertions, 5 deletions
diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs index c285145d994..2d6fcf9122d 100644 --- a/components/script/dom/webglframebuffer.rs +++ b/components/script/dom/webglframebuffer.rs @@ -142,9 +142,11 @@ impl WebGLFramebuffer { size: Size2D<i32, Viewport>, ) -> Option<(WebXRSwapChainId, DomRoot<Self>)> { let (sender, receiver) = webgl_channel().unwrap(); - let _ = context - .webgl_sender() - .send_create_webxr_swap_chain(size.to_untyped(), sender); + let _ = context.webgl_sender().send_create_webxr_swap_chain( + size.to_untyped(), + sender, + session.session_id(), + ); let swap_chain_id = receiver.recv().unwrap()?; let framebuffer_id = WebGLFramebufferId::Opaque(WebGLOpaqueFramebufferId::WebXR(swap_chain_id)); diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs index ca5c08b25e3..65134a631e1 100644 --- a/components/script/dom/webglrenderingcontext.rs +++ b/components/script/dom/webglrenderingcontext.rs @@ -81,6 +81,7 @@ use std::cell::Cell; use std::cmp; use std::ptr::{self, NonNull}; use std::rc::Rc; +use webxr_api::SessionId; use webxr_api::SwapChainId as WebXRSwapChainId; // From the GLES 2.0.25 spec, page 85: @@ -4576,8 +4577,9 @@ impl WebGLMessageSender { &self, size: Size2D<i32>, sender: WebGLSender<Option<WebXRSwapChainId>>, + id: SessionId, ) -> WebGLSendResult { - self.wake_after_send(|| self.sender.send_create_webxr_swap_chain(size, sender)) + self.wake_after_send(|| self.sender.send_create_webxr_swap_chain(size, sender, id)) } pub fn send_resize( diff --git a/components/script/dom/xrsession.rs b/components/script/dom/xrsession.rs index ec51c910a17..ecb78615897 100644 --- a/components/script/dom/xrsession.rs +++ b/components/script/dom/xrsession.rs @@ -51,7 +51,7 @@ use std::mem; use std::rc::Rc; use webxr_api::{ self, util, Display, EnvironmentBlendMode, Event as XREvent, Frame, SelectEvent, SelectKind, - Session, View, Viewer, Visibility, + Session, SessionId, View, Viewer, Visibility, }; #[dom_struct] @@ -462,6 +462,10 @@ impl XRSession { viewport: Rect::from_size(size.to_i32()), } } + + pub fn session_id(&self) -> SessionId { + self.session.borrow().id() + } } impl XRSessionMethods for XRSession { |