Skip to content

Commit a1aa603

Browse files
committed
Fix stuffs that i forgot in NativeAudioSource
1 parent 06fd79b commit a1aa603

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,17 @@ class NativeAudioSource
6565
for (source in sources)
6666
{
6767
backend = source.__backend;
68-
if (backend != null && backend.loaded)
68+
if (backend != null && backend.loaded && !backend.playing)
6969
{
7070
if (!backend.prepared)
7171
{
7272
backend.prepare(backend.getCurrentTime());
73-
if (!backend.prepared) backend.timer = resetTimer(backend.timer, 0, backend.complete);
73+
if (!backend.prepared) continue;
7474
}
75-
else
76-
backend.prepared = false;
7775

76+
backend.prepared = false;
77+
backend.playing = true;
78+
backend.completed = false;
7879
alSources.push(backend.source);
7980

8081
if (backend.streamed && !backend.streamEnded) backend.resetStream();
@@ -323,15 +324,17 @@ class NativeAudioSource
323324
if (streamed)
324325
{
325326
streamMutex.acquire();
327+
326328
removeStream();
327329
queuedStreamAudios.remove(this);
328330
AL.sourceUnqueueBuffers(source, AL.getSourcei(source, AL.BUFFERS_QUEUED));
329331
internalQueuedBuffers = queuedBuffers = filledBuffers = 0;
330-
streamMutex.release();
331332

332333
if (decoder != null && standaloneDecoder) decoder.dispose();
333334
decoder = null;
334335
standaloneDecoder = false;
336+
337+
streamMutex.release();
335338
}
336339
else
337340
{
@@ -368,12 +371,13 @@ class NativeAudioSource
368371
if (prepared)
369372
{
370373
prepared = false;
374+
completed = false;
371375
if (streamed && !streamEnded) resetStream();
372376

373377
AL.sourcePlay(source);
374378
timer = resetTimer(timer, (loopPoints[1] - pauseSample) * 1000.0 / parent.buffer.sampleRate / getPitch(), complete);
375379
}
376-
else setCurrentTime(pauseSample * 1000.0 / parent.buffer.sampleRate);
380+
else setCurrentTime((pauseSample * 1000.0 / parent.buffer.sampleRate) - parent.offset);
377381
}
378382

379383
public function pause():Void
@@ -415,9 +419,9 @@ class NativeAudioSource
415419

416420
var remaining = (loopPoints[1] - sampleOffset) * 1000.0 / parent.buffer.sampleRate / getPitch();
417421
pauseSample = sampleOffset;
418-
prepared = remaining > 0;
422+
completed = remaining <= 0;
423+
prepared = !completed;
419424
playing = false;
420-
completed = false;
421425

422426
if (timer != null) timer.stop();
423427
if (prepared)

0 commit comments

Comments
 (0)