Handle case when OfflineAudioContext doesn't receive all the buffers

This commit is contained in:
Manish Goregaokar 2018-10-10 15:00:04 -07:00
parent 304e09732e
commit ceb2cd2279

View file

@ -151,10 +151,14 @@ impl OfflineAudioContextMethods for OfflineAudioContext {
task!(resolve: move || { task!(resolve: move || {
let this = this.root(); let this = this.root();
let processed_audio = processed_audio.lock().unwrap(); let processed_audio = processed_audio.lock().unwrap();
let processed_audio: Vec<_> = processed_audio let mut processed_audio: Vec<_> = processed_audio
.chunks(this.length as usize) .chunks(this.length as usize)
.map(|channel| channel.to_vec()) .map(|channel| channel.to_vec())
.collect(); .collect();
// it can end up being empty if the task failed
if processed_audio.len() != this.length as usize {
processed_audio.resize(this.length as usize, Vec::new())
}
let buffer = AudioBuffer::new( let buffer = AudioBuffer::new(
&this.global().as_window(), &this.global().as_window(),
this.channel_count, this.channel_count,