aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/audiodestinationnode.rs4
-rw-r--r--components/script/dom/audionode.rs6
-rw-r--r--components/script/dom/audioscheduledsourcenode.rs3
-rw-r--r--components/script/dom/baseaudiocontext.rs5
4 files changed, 15 insertions, 3 deletions
diff --git a/components/script/dom/audiodestinationnode.rs b/components/script/dom/audiodestinationnode.rs
index 0d3b5798c87..83cfedb8584 100644
--- a/components/script/dom/audiodestinationnode.rs
+++ b/components/script/dom/audiodestinationnode.rs
@@ -21,7 +21,9 @@ impl AudioDestinationNode {
fn new_inherited(context: &BaseAudioContext,
options: &AudioNodeOptions) -> AudioDestinationNode {
AudioDestinationNode {
- node: AudioNode::new_inherited(AudioNodeType::DestinationNode, context, options, 1, 1),
+ node: AudioNode::new_inherited(AudioNodeType::DestinationNode,
+ Some(context.destination_node()),
+ context, options, 1, 1),
}
}
diff --git a/components/script/dom/audionode.rs b/components/script/dom/audionode.rs
index c0c6668106b..e8c03fbd625 100644
--- a/components/script/dom/audionode.rs
+++ b/components/script/dom/audionode.rs
@@ -34,13 +34,17 @@ pub struct AudioNode {
impl AudioNode {
pub fn new_inherited(node_type: AudioNodeType,
+ node_id: Option<NodeId>,
context: &BaseAudioContext,
options: &AudioNodeOptions,
number_of_inputs: u32,
number_of_outputs: u32) -> AudioNode {
+ let node_id = node_id.unwrap_or_else(|| {
+ context.audio_context_impl().create_node(node_type)
+ });
AudioNode {
reflector_: Reflector::new(),
- node_id: context.audio_context_impl().create_node(node_type),
+ node_id,
context: DomRoot::from_ref(context),
number_of_inputs,
number_of_outputs,
diff --git a/components/script/dom/audioscheduledsourcenode.rs b/components/script/dom/audioscheduledsourcenode.rs
index c6d495f90a1..6e430cf8fed 100644
--- a/components/script/dom/audioscheduledsourcenode.rs
+++ b/components/script/dom/audioscheduledsourcenode.rs
@@ -21,7 +21,8 @@ impl AudioScheduledSourceNode {
number_of_inputs: u32,
number_of_outputs: u32) -> AudioScheduledSourceNode {
AudioScheduledSourceNode {
- node: AudioNode::new_inherited(node_type, context, options, number_of_inputs, number_of_outputs),
+ node: AudioNode::new_inherited(node_type, None /* node_id */,
+ context, options, number_of_inputs, number_of_outputs),
}
}
}
diff --git a/components/script/dom/baseaudiocontext.rs b/components/script/dom/baseaudiocontext.rs
index 50092b81ebd..e0172b84d1c 100644
--- a/components/script/dom/baseaudiocontext.rs
+++ b/components/script/dom/baseaudiocontext.rs
@@ -24,6 +24,7 @@ use dom_struct::dom_struct;
use servo_media::ServoMedia;
use servo_media::audio::context::{AudioContext, ProcessingState};
use servo_media::audio::context::{OfflineAudioContextOptions, RealTimeAudioContextOptions};
+use servo_media::audio::graph::NodeId;
use std::cell::Cell;
use std::collections::VecDeque;
use std::mem;
@@ -96,6 +97,10 @@ impl BaseAudioContext {
&self.audio_context_impl
}
+ pub fn destination_node(&self) -> NodeId {
+ self.audio_context_impl.dest_node()
+ }
+
// https://webaudio.github.io/web-audio-api/#allowed-to-start
pub fn is_allowed_to_start(&self) -> bool {
self.state.get() == AudioContextState::Suspended