aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/gamepad.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/gamepad.rs')
-rw-r--r--components/script/dom/gamepad.rs38
1 files changed, 16 insertions, 22 deletions
diff --git a/components/script/dom/gamepad.rs b/components/script/dom/gamepad.rs
index f9f28fc8c51..cb0c20ac50e 100644
--- a/components/script/dom/gamepad.rs
+++ b/components/script/dom/gamepad.rs
@@ -20,7 +20,6 @@ use dom_struct::dom_struct;
use js::jsapi::{Heap, JSContext, JSObject};
use js::typedarray::{Float64Array, CreateWith};
use std::cell::Cell;
-use std::ptr;
use webvr_traits::{WebVRGamepadData, WebVRGamepadHand, WebVRGamepadState};
#[dom_struct]
@@ -47,7 +46,6 @@ impl Gamepad {
connected: bool,
timestamp: f64,
mapping_type: String,
- axes: *mut JSObject,
buttons: &GamepadButtonList,
pose: Option<&VRPose>,
hand: WebVRGamepadHand,
@@ -60,7 +58,7 @@ impl Gamepad {
connected: Cell::new(connected),
timestamp: Cell::new(timestamp),
mapping_type: mapping_type,
- axes: Heap::new(axes),
+ axes: Heap::default(),
buttons: JS::from_ref(buttons),
pose: pose.map(JS::from_ref),
hand: hand,
@@ -75,28 +73,24 @@ impl Gamepad {
state: &WebVRGamepadState) -> Root<Gamepad> {
let buttons = GamepadButtonList::new_from_vr(&global, &state.buttons);
let pose = VRPose::new(&global, &state.pose);
- let cx = global.get_cx();
- rooted!(in (cx) let mut axes = ptr::null_mut());
+
+ let gamepad = reflect_dom_object(box Gamepad::new_inherited(state.gamepad_id,
+ data.name.clone(),
+ index,
+ state.connected,
+ state.timestamp,
+ "".into(),
+ &buttons,
+ Some(&pose),
+ data.hand.clone(),
+ data.display_id),
+ global,
+ GamepadBinding::Wrap);
unsafe {
- let _ = Float64Array::create(cx,
- CreateWith::Slice(&state.axes),
- axes.handle_mut());
+ let _ = Float64Array::create(global.get_cx(), CreateWith::Slice(&state.axes), gamepad.axes.handle_mut());
}
- reflect_dom_object(box Gamepad::new_inherited(state.gamepad_id,
- data.name.clone(),
- index,
- state.connected,
- state.timestamp,
- "".into(),
- axes.get(),
- &buttons,
- Some(&pose),
- data.hand.clone(),
- data.display_id),
- global,
- GamepadBinding::Wrap)
-
+ gamepad
}
}