Browse Source

bugfix queueSound with BUFFER_STREAM_SPLIT enabled

ncannasse 7 năm trước cách đây
mục cha
commit
0d9ce96003
1 tập tin đã thay đổi với 5 bổ sung2 xóa
  1. 5 2
      hxd/snd/Manager.hx

+ 5 - 2
hxd/snd/Manager.hx

@@ -309,7 +309,9 @@ class Manager {
 					queueBuffer(s, b.sound, b.start + b.samples);
 					queueBuffer(s, b.sound, b.start + b.samples);
 				} else if (c.queue.length > 0) {
 				} else if (c.queue.length > 0) {
 					// queue next sound buffer
 					// queue next sound buffer
-					queueBuffer(s, c.queue.shift(), 0);
+					var snd = c.queue[0];
+					if( queueBuffer(s, snd, 0) )
+						c.queue.shift();
 				} else if (c.loop) {
 				} else if (c.loop) {
 					// requeue last played sound
 					// requeue last played sound
 					queueBuffer(s, b.sound, 0);
 					queueBuffer(s, b.sound, 0);
@@ -532,13 +534,14 @@ class Manager {
 
 
 			// wait until fully decoded
 			// wait until fully decoded
 			if( s.buffers.length > 0 && BUFFER_STREAM_SPLIT > 1 && !progressiveDecodeBuffer(s, snd, start) )
 			if( s.buffers.length > 0 && BUFFER_STREAM_SPLIT > 1 && !progressiveDecodeBuffer(s, snd, start) )
-				return;
+				return false;
 
 
 			// queue stream buffer
 			// queue stream buffer
 			b = getStreamBuffer(s, snd, sgroup, start);
 			b = getStreamBuffer(s, snd, sgroup, start);
 			driver.queueBuffer(s.handle, b.handle, 0, b.isEnd);
 			driver.queueBuffer(s.handle, b.handle, 0, b.isEnd);
 		}
 		}
 		s.buffers.push(b);
 		s.buffers.push(b);
+		return true;
 	}
 	}
 
 
 	function unqueueBuffer(s : Source) {
 	function unqueueBuffer(s : Source) {