aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/audionode.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2018-07-07 11:11:43 -0700
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2018-07-30 14:21:43 +0200
commitf3bc183dba86fc26bb5807747ba867ec39e6b0f9 (patch)
tree46c361a40a7ab4ede3ad2523b7a2cedce7993a2d /components/script/dom/audionode.rs
parent23f7a736222588bd5c443a077b1e0fdddbb48ae6 (diff)
downloadservo-f3bc183dba86fc26bb5807747ba867ec39e6b0f9.tar.gz
servo-f3bc183dba86fc26bb5807747ba867ec39e6b0f9.zip
Add disconnect methods; cleanup DOM stuff (#2)
* Add disconnect methods * Use Dom, not DomRoot DomRoot will keep it permanently rooted, it should only be used in values not on the JS heap
Diffstat (limited to 'components/script/dom/audionode.rs')
-rw-r--r--components/script/dom/audionode.rs37
1 files changed, 21 insertions, 16 deletions
diff --git a/components/script/dom/audionode.rs b/components/script/dom/audionode.rs
index f3b26937497..a4b0dfecc34 100644
--- a/components/script/dom/audionode.rs
+++ b/components/script/dom/audionode.rs
@@ -6,7 +6,7 @@ use dom::baseaudiocontext::BaseAudioContext;
use dom::bindings::codegen::Bindings::AudioNodeBinding::{AudioNodeMethods, AudioNodeOptions};
use dom::bindings::codegen::Bindings::AudioNodeBinding::{ChannelCountMode, ChannelInterpretation};
use dom::bindings::error::{Error, ErrorResult, Fallible};
-use dom::bindings::root::DomRoot;
+use dom::bindings::root::{Dom, DomRoot};
use dom::audioparam::AudioParam;
use dom::eventtarget::EventTarget;
use dom_struct::dom_struct;
@@ -24,7 +24,7 @@ pub struct AudioNode {
eventtarget: EventTarget,
#[ignore_malloc_size_of = "servo_media"]
node_id: NodeId,
- context: DomRoot<BaseAudioContext>,
+ context: Dom<BaseAudioContext>,
number_of_inputs: u32,
number_of_outputs: u32,
channel_count: Cell<u32>,
@@ -45,7 +45,7 @@ impl AudioNode {
AudioNode {
eventtarget: EventTarget::new_inherited(),
node_id,
- context: DomRoot::from_ref(context),
+ context: Dom::from_ref(context),
number_of_inputs,
number_of_outputs,
channel_count: Cell::new(options.channelCount.unwrap_or(2)),
@@ -96,31 +96,36 @@ impl AudioNodeMethods for AudioNode {
// https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect
fn Disconnect(&self) -> ErrorResult {
- // TODO
+ self.context.audio_context_impl()
+ .disconnect_all_from(self.node_id());
Ok(())
}
- // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect
- fn Disconnect_(&self, _: u32) -> ErrorResult {
- // TODO
+ // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect-output
+ fn Disconnect_(&self, out: u32) -> ErrorResult {
+ self.context.audio_context_impl()
+ .disconnect_output(self.node_id().output(out));
Ok(())
}
- // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect
- fn Disconnect__(&self, _: &AudioNode) -> ErrorResult {
- // TODO
+ // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect-destinationnode
+ fn Disconnect__(&self, to: &AudioNode) -> ErrorResult {
+ self.context.audio_context_impl()
+ .disconnect_between(self.node_id(), to.node_id());
Ok(())
}
- // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect
- fn Disconnect___(&self, _: &AudioNode, _: u32) -> ErrorResult{
- // TODO
+ // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect-destinationnode-output
+ fn Disconnect___(&self, to: &AudioNode, out: u32) -> ErrorResult{
+ self.context.audio_context_impl()
+ .disconnect_output_between(self.node_id().output(out), to.node_id());
Ok(())
}
- // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect
- fn Disconnect____(&self, _: &AudioNode, _: u32, _: u32) -> ErrorResult {
- // TODO
+ // https://webaudio.github.io/web-audio-api/#dom-audionode-disconnect-destinationnode-output-input
+ fn Disconnect____(&self, to: &AudioNode, out: u32, inp: u32) -> ErrorResult {
+ self.context.audio_context_impl()
+ .disconnect_output_between_to(self.node_id().output(out), to.node_id().input(inp));
Ok(())
}