|
@@ -83,7 +83,7 @@ function SamplePlayer (ac, source, options) {
|
|
// cache
|
|
// cache
|
|
var node
|
|
var node
|
|
for (var iterator in tracked) {
|
|
for (var iterator in tracked) {
|
|
- if (buffer === tracked[iterator].source.buffer) {
|
|
|
|
|
|
+ if (buffer === tracked[iterator].source.buffer && tracked[iterator].startTime + buffer.duration < when) {
|
|
node = resetNode(tracked[iterator], buffer, opts)
|
|
node = resetNode(tracked[iterator], buffer, opts)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -162,6 +162,7 @@ function SamplePlayer (ac, source, options) {
|
|
function track (name, node) {
|
|
function track (name, node) {
|
|
node.id = nextId++
|
|
node.id = nextId++
|
|
tracked[node.id] = node
|
|
tracked[node.id] = node
|
|
|
|
+ node.startTime = ac.currentTime
|
|
node.source.onended = function () {
|
|
node.source.onended = function () {
|
|
var now = ac.currentTime
|
|
var now = ac.currentTime
|
|
node.source.disconnect()
|
|
node.source.disconnect()
|