@@ -93,6 +93,8 @@ class NativeAudioSource
9393
9494 private var standaloneBuffer : Bool ;
9595 private var buffer : ALBuffer ;
96+ private var standaloneDecoder : Bool ;
97+ private var decoder : AudioDecoder ;
9698 private var anglesArray : Array <Float >;
9799 private var loopPoints : Array <Int >;
98100
@@ -153,9 +155,9 @@ class NativeAudioSource
153155 mutex .acquire ();
154156
155157 samples = Int64 .toInt (parent .buffer .decoder .total ());
156- parent . decoder = parent .buffer .decoder .clone ();
157- parent . standaloneDecoder = parent . decoder != null ;
158- if (! parent . standaloneDecoder ) parent . decoder = parent .buffer .decoder ;
158+ decoder = parent .buffer .decoder .clone ();
159+ standaloneDecoder = decoder != null ;
160+ if (! standaloneDecoder ) decoder = parent .buffer .decoder ;
159161
160162 buffers = AL .genBuffers (STREAM_FLUSH_BUFFERS );
161163 bufferLen = (STREAM_BUFFER_SAMPLES * parent .buffer .channels ) * (parent .buffer .bitsPerSample >> 3 );
@@ -232,9 +234,9 @@ class NativeAudioSource
232234 internalQueuedBuffers = queuedBuffers = filledBuffers = 0 ;
233235 streamMutex .release ();
234236
235- if (parent . decoder != null && parent . standaloneDecoder ) parent . decoder .dispose ();
236- parent . decoder = null ;
237- parent . standaloneDecoder = false ;
237+ if (decoder != null && standaloneDecoder ) decoder .dispose ();
238+ decoder = null ;
239+ standaloneDecoder = false ;
238240 }
239241 else
240242 {
@@ -666,21 +668,21 @@ class NativeAudioSource
666668
667669 function readToBufferData (data : ArrayBufferView , currentPCM : Int ): Int
668670 {
669- if (parent . decoder .eof || currentPCM >= loopPoints [1 ])
671+ if (decoder .eof || currentPCM >= loopPoints [1 ])
670672 {
671- if (streamEnded = loops <= streamLoops || ! parent . decoder .seek (loopPoints [0 ])) return 0 ;
673+ if (streamEnded = loops <= streamLoops || ! decoder .seek (loopPoints [0 ])) return 0 ;
672674 streamLoops ++ ;
673675 }
674676
675677 var total = 0 , len : Int ;
676- while (! (streamEnded = parent . decoder .eof ))
678+ while (! (streamEnded = decoder .eof ))
677679 {
678680 if ((len = (loopPoints [1 ] - currentPCM ) * parent .buffer .channels * (parent .buffer .bitsPerSample >> 3 )) <= (currentPCM = bufferLen - total ))
679681 {
680- total + = parent . decoder .decode (data .buffer , total , len );
682+ total + = decoder .decode (data .buffer , total , len );
681683 if (loops > streamLoops )
682684 {
683- parent . decoder .seek (currentPCM = loopPoints [0 ]);
685+ decoder .seek (currentPCM = loopPoints [0 ]);
684686 streamLoops ++ ;
685687 }
686688 else
@@ -691,7 +693,7 @@ class NativeAudioSource
691693 }
692694 else
693695 {
694- return total + = parent . decoder .decode (data .buffer , total , currentPCM );
696+ return total + = decoder .decode (data .buffer , total , currentPCM );
695697 }
696698 }
697699 return total ;
@@ -702,7 +704,7 @@ class NativeAudioSource
702704 final max = STREAM_MAX_BUFFERS - 1 ;
703705 var i : Int , j : Int , data : ArrayBufferView , pcm : Int , decoded : Int ;
704706 while (n -- > 0 && ! (streamEnded = ! streaming ) &&
705- (decoded = readToBufferData (data = bufferViews [(i = max - filledBuffers ) < 0 ? 0 : i ], pcm = Int64 .toInt (parent . decoder .tell ()))) > 0 )
707+ (decoded = readToBufferData (data = bufferViews [(i = max - filledBuffers ) < 0 ? 0 : i ], pcm = Int64 .toInt (decoder .tell ()))) > 0 )
706708 {
707709 j = i ;
708710 while (i < max )
@@ -757,7 +759,7 @@ class NativeAudioSource
757759 force = streaming ;
758760 streaming = true ;
759761 internalQueuedBuffers = queuedBuffers = filledBuffers = streamLoops = nextBuffer = 0 ;
760- parent . decoder .seek (sample );
762+ decoder .seek (sample );
761763 fillBuffers (n );
762764 flushBuffers ();
763765 streaming = force ;
0 commit comments