Move viewports to being per-session, not per-frame

This commit is contained in:
Manish Goregaokar 2020-05-14 11:18:34 -07:00
parent eaad692c0b
commit 794624b42b
5 changed files with 44 additions and 23 deletions

View file

@ -21,6 +21,7 @@ pub struct XRView {
reflector_: Reflector,
session: Dom<XRSession>,
eye: XREye,
viewport_index: usize,
#[ignore_malloc_size_of = "mozjs"]
proj: Heap<*mut JSObject>,
#[ignore_malloc_size_of = "defined in rust-webxr"]
@ -33,27 +34,26 @@ impl XRView {
session: &XRSession,
transform: &XRRigidTransform,
eye: XREye,
viewport_index: usize,
view: View<ApiSpace>,
) -> XRView {
XRView {
reflector_: Reflector::new(),
session: Dom::from_ref(session),
eye,
viewport_index,
proj: Heap::default(),
view,
transform: Dom::from_ref(transform),
}
}
pub fn view(&self) -> &View<ApiSpace> {
&self.view
}
pub fn new<V: Copy>(
global: &GlobalScope,
session: &XRSession,
view: &View<V>,
eye: XREye,
viewport_index: usize,
pose: &ApiViewerPose,
) -> DomRoot<XRView> {
// XXXManishearth compute and cache projection matrices on the Display
@ -70,6 +70,7 @@ impl XRView {
session,
&transform,
eye,
viewport_index,
view.cast_unit(),
)),
global,
@ -79,6 +80,10 @@ impl XRView {
pub fn session(&self) -> &XRSession {
&self.session
}
pub fn viewport_index(&self) -> usize {
self.viewport_index
}
}
impl XRViewMethods for XRView {