aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/gamepad.rs
diff options
context:
space:
mode:
authorImanol Fernandez <mortimergoro@gmail.com>2017-07-05 22:38:37 +0200
committerImanol Fernandez <mortimergoro@gmail.com>2017-07-05 22:38:37 +0200
commite936eac831e4dd3abefc940903480d8594f31419 (patch)
tree65f051f8a1be961bdd959fe54b982ffcb7903dec /components/script/dom/gamepad.rs
parentfe4ee6de2efe60948bb5cadaabd53e326209ca07 (diff)
downloadservo-e936eac831e4dd3abefc940903480d8594f31419.tar.gz
servo-e936eac831e4dd3abefc940903480d8594f31419.zip
GC Fixes
Diffstat (limited to 'components/script/dom/gamepad.rs')
-rw-r--r--components/script/dom/gamepad.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/components/script/dom/gamepad.rs b/components/script/dom/gamepad.rs
index cb0c20ac50e..a7f65050941 100644
--- a/components/script/dom/gamepad.rs
+++ b/components/script/dom/gamepad.rs
@@ -20,6 +20,7 @@ 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]
@@ -86,9 +87,13 @@ impl Gamepad {
data.display_id),
global,
GamepadBinding::Wrap);
+
+ let cx = global.get_cx();
+ rooted!(in (cx) let mut array = ptr::null_mut());
unsafe {
- let _ = Float64Array::create(global.get_cx(), CreateWith::Slice(&state.axes), gamepad.axes.handle_mut());
+ let _ = Float64Array::create(cx, CreateWith::Slice(&state.axes), array.handle_mut());
}
+ gamepad.axes.set(array.get());
gamepad
}