Skip to content

Commit eccaa77

Browse files
committed
So, you do not want to flush the buffers
1 parent a24de64 commit eccaa77

File tree

1 file changed

+10
-18
lines changed

1 file changed

+10
-18
lines changed

source/lime/_internal/backend/native/NativeAudioSource.hx

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -501,41 +501,33 @@ class NativeAudioSource {
501501
}
502502

503503
static function streamUpdate(_:Int) {
504-
final acquired = streamMutex.tryAcquire();
504+
if (!streamMutex.tryAcquire()) return;
505505

506506
var i = queuedStreamSources.length, source:NativeAudioSource;
507507
while (i-- > 0) streamSources.push(queuedStreamSources[i]);
508508
queuedStreamSources.resize(0);
509509

510510
i = streamSources.length;
511511
while (i-- > 0) {
512-
if ((source = streamSources[i]).streamRemove) {
513-
if (acquired) source.removeStream();
514-
else continue;
515-
}
516-
else if (source.source == null) {
517-
if (acquired) source.removeStream();
518-
else source.stopStream();
519-
}
512+
if ((source = streamSources[i]).streamRemove || source.source == null) source.removeStream();
520513
else {
521-
if (acquired) source.skipBuffers(AL.getSourcei(source.source, AL.BUFFERS_PROCESSED));
514+
source.skipBuffers(AL.getSourcei(source.source, AL.BUFFERS_PROCESSED));
522515
source.flushBuffers();
523516
if (AL.getSourcei(source.source, AL.SOURCE_STATE) == AL.STOPPED) {
524517
AL.sourcePlay(source.source);
525518
source.updateCompleteTimer();
526519
}
520+
if (source,streamEnded && source.requestBuffers == source.queuedBuffers) source.removeStream();
527521
}
528522
}
529523

530-
if (acquired) {
531-
streamMutex.release();
532-
if (streamSources.length == 0) {
533-
Application.current.onUpdate.remove(streamUpdate);
534-
if (threadRunning) streamThread.sendMessage(0);
535-
}
536-
else if (threadRunning || (threadRunning = (streamThread = Thread.create(streamThreadRun)) != null))
537-
streamThread.sendMessage(streamSources.length);
524+
streamMutex.release();
525+
if (streamSources.length == 0) {
526+
Application.current.onUpdate.remove(streamUpdate);
527+
if (threadRunning) streamThread.sendMessage(0);
538528
}
529+
else if (threadRunning || (threadRunning = (streamThread = Thread.create(streamThreadRun)) != null))
530+
streamThread.sendMessage(streamSources.length);
539531
}
540532

541533
function removeStream() {

0 commit comments

Comments
 (0)