Browse Source

Merge pull request #13710 from meatwallace/fix-detached-audio-buffer

AudioLoader: Clone buffer prior to decoding to allow reuse
Mr.doob 7 years ago
parent
commit
55d516a4b6
1 changed files with 5 additions and 2 deletions
  1. 5 2
      src/loaders/AudioLoader.js

+ 5 - 2
src/loaders/AudioLoader.js

@@ -20,9 +20,12 @@ Object.assign( AudioLoader.prototype, {
 		loader.setResponseType( 'arraybuffer' );
 		loader.load( url, function ( buffer ) {
 
-			var context = AudioContext.getContext();
+			// Create a copy of the buffer. The `decodeAudioData` method
+			// detaches the buffer when complete, preventing reuse.
+			var bufferCopy = buffer.slice( 0 );
 
-			context.decodeAudioData( buffer, function ( audioBuffer ) {
+			var context = AudioContext.getContext();
+			context.decodeAudioData( bufferCopy, function ( audioBuffer ) {
 
 				onLoad( audioBuffer );