mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Use JS_GetArrayBufferViewBuffer with JS_DetachArrayBuffer
This commit is contained in:
parent
b738d9a912
commit
a1fe48d721
1 changed files with 9 additions and 3 deletions
|
@ -11,8 +11,10 @@ use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
|
||||||
use dom::bindings::root::DomRoot;
|
use dom::bindings::root::DomRoot;
|
||||||
use dom::window::Window;
|
use dom::window::Window;
|
||||||
use dom_struct::dom_struct;
|
use dom_struct::dom_struct;
|
||||||
use js::jsapi::{DetachDataDisposition, Heap, JSAutoCompartment, JSContext, JSObject, JS_DetachArrayBuffer};
|
use js::jsapi::{DetachDataDisposition, Heap, JSAutoCompartment, JSContext, JSObject};
|
||||||
|
use js::jsapi::JS_GetArrayBufferViewBuffer;
|
||||||
use js::rust::CustomAutoRooterGuard;
|
use js::rust::CustomAutoRooterGuard;
|
||||||
|
use js::rust::wrappers::JS_DetachArrayBuffer;
|
||||||
use js::typedarray::{CreateWith, Float32Array};
|
use js::typedarray::{CreateWith, Float32Array};
|
||||||
use servo_media::audio::buffer_source_node::AudioBuffer as ServoMediaAudioBuffer;
|
use servo_media::audio::buffer_source_node::AudioBuffer as ServoMediaAudioBuffer;
|
||||||
use std::cmp::min;
|
use std::cmp::min;
|
||||||
|
@ -160,8 +162,12 @@ impl AudioBuffer {
|
||||||
typedarray!(in(cx) let array: Float32Array = channel.get());
|
typedarray!(in(cx) let array: Float32Array = channel.get());
|
||||||
if let Ok(array) = array {
|
if let Ok(array) = array {
|
||||||
let data = array.to_vec();
|
let data = array.to_vec();
|
||||||
let _ =
|
let mut is_shared = false;
|
||||||
JS_DetachArrayBuffer(cx, channel.handle(), DetachDataDisposition::KeepData);
|
rooted!(in (cx) let view_buffer =
|
||||||
|
JS_GetArrayBufferViewBuffer(cx, channel.handle(), &mut is_shared));
|
||||||
|
// This buffer is always created unshared
|
||||||
|
debug_assert!(!is_shared);
|
||||||
|
let _ = JS_DetachArrayBuffer(cx, view_buffer.handle(), DetachDataDisposition::KeepData);
|
||||||
data
|
data
|
||||||
} else {
|
} else {
|
||||||
return None;
|
return None;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue