aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2020-02-27 16:41:35 -0500
committerJosh Matthews <josh@joshmatthews.net>2020-03-09 17:50:54 -0400
commitfbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc (patch)
treeef5491416055e5f39910d6b84aa5cdeb0e410171 /components/script
parentb062f514953c326ad8d1753de715bbb24ee68625 (diff)
downloadservo-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.rs8
-rw-r--r--components/script/dom/webglrenderingcontext.rs4
-rw-r--r--components/script/dom/xrsession.rs6
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 {