Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix some WebAudio WPTs #21506

Merged
merged 3 commits into from Sep 25, 2018
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

Use buffer_set flag for AudioBufferSourceNode buffer setter

  • Loading branch information
ferjm committed Sep 25, 2018
commit bbc35659002cf18659d31f4e6b30ef0f8b632129
@@ -29,6 +29,7 @@ use std::f32;
pub struct AudioBufferSourceNode {
source_node: AudioScheduledSourceNode,
buffer: MutNullableDom<AudioBuffer>,
buffer_set: Cell<bool>,
playback_rate: Dom<AudioParam>,
detune: Dom<AudioParam>,
loop_enabled: Cell<bool>,
@@ -75,6 +76,7 @@ impl AudioBufferSourceNode {
let node = AudioBufferSourceNode {
source_node,
buffer: Default::default(),
buffer_set: Cell::new(false),
playback_rate: Dom::from_ref(&playback_rate),
detune: Dom::from_ref(&detune),
loop_enabled: Cell::new(options.loop_),
@@ -122,12 +124,19 @@ impl AudioBufferSourceNodeMethods for AudioBufferSourceNode {

// https://webaudio.github.io/web-audio-api/#dom-audiobuffersourcenode-buffer
fn SetBuffer(&self, new_buffer: Option<&AudioBuffer>) -> Fallible<()> {
if new_buffer.is_some() && self.buffer.get().is_some() {
return Err(Error::InvalidState);
if new_buffer.is_some() {
if self.buffer_set.get() {
// Step 2.
return Err(Error::InvalidState);
}
// Step 3.
self.buffer_set.set(true);
}

// Step 4.
self.buffer.set(new_buffer);

// Step 5.
if self.source_node.started() {
if let Some(buffer) = self.buffer.get() {
let buffer = buffer.acquire_contents();
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.