|
@@ -297,6 +297,7 @@ class Manager {
|
|
var count = driver.getProcessedBuffers(s.handle);
|
|
var count = driver.getProcessedBuffers(s.handle);
|
|
for (i in 0...count) {
|
|
for (i in 0...count) {
|
|
var b = unqueueBuffer(s);
|
|
var b = unqueueBuffer(s);
|
|
|
|
+ if( b == null ) continue;
|
|
lastBuffer = b;
|
|
lastBuffer = b;
|
|
if (b.isEnd) {
|
|
if (b.isEnd) {
|
|
c.sound = b.sound;
|
|
c.sound = b.sound;
|
|
@@ -594,6 +595,7 @@ class Manager {
|
|
|
|
|
|
function unqueueBuffer(s : Source) {
|
|
function unqueueBuffer(s : Source) {
|
|
var b = s.buffers.shift();
|
|
var b = s.buffers.shift();
|
|
|
|
+ if( b == null ) return null; // some drivers (xbo) might wrongly report ended buffer after source stop, let's ignore
|
|
driver.unqueueBuffer(s.handle, b.handle);
|
|
driver.unqueueBuffer(s.handle, b.handle);
|
|
if (b.isStream) freeStreamBuffers.unshift(b);
|
|
if (b.isStream) freeStreamBuffers.unshift(b);
|
|
else if (--b.refs == 0) b.lastStop = haxe.Timer.stamp();
|
|
else if (--b.refs == 0) b.lastStop = haxe.Timer.stamp();
|