diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2018-07-07 11:11:43 -0700 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2018-07-30 14:21:43 +0200 |
commit | f3bc183dba86fc26bb5807747ba867ec39e6b0f9 (patch) | |
tree | 46c361a40a7ab4ede3ad2523b7a2cedce7993a2d /components/script/dom/audionode.rs | |
parent | 23f7a736222588bd5c443a077b1e0fdddbb48ae6 (diff) | |
download | servo-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.rs | 37 |
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(()) } |