Added callbacks to AddHead / AddTail
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
DataHoarder 2022-03-02 11:40:49 +01:00
parent 0d8d4f40bb
commit f29e715be1
2 changed files with 25 additions and 22 deletions

View file

@ -690,14 +690,14 @@ func TestQueue(t *testing.T) {
q.AddTail(source, func(q *audio.Queue, entry *audio.QueueEntry) {
t.Logf("Started playback of %d %s\n", entry.Identifier, fullPath)
}, func(q *audio.Queue, entry *audio.QueueEntry) {
t.Logf("Finished playback of %d %s: output %d samples\n", entry.Identifier, fullPath, entry.ReadSamples)
}, func(q *audio.Queue, entry *audio.QueueEntry) {
fp.Close()
if len(q.GetQueue()) == 0 {
t.Log("Finished playback, closing\n")
q.Close()
}
t.Logf("Finished playback of %d %s: output %d samples\n", entry.Identifier, fullPath, entry.ReadSamples)
fp.Close()
})
}
}
@ -717,7 +717,7 @@ func TestQueue(t *testing.T) {
if result.Channels != 2 {
t.Errorf("Wrong Channel Count %d != %d", result.SampleRate, 2)
}
if sink.SamplesRead != 437731779 {
t.Errorf("Wrong Sample Count %d != %d", sink.SamplesRead, 437731779)
if sink.SamplesRead != 470828559 {
t.Errorf("Wrong Sample Count %d != %d", sink.SamplesRead, 470828559)
}
}

View file

@ -137,26 +137,28 @@ func (q *Queue) getFilterChain(source Source) Source {
}
}
func (q *Queue) AddHead(source Source, startPlayback func(q *Queue, entry *QueueEntry), endPlayback func(q *Queue, entry *QueueEntry)) (identifier QueueIdentifier) {
func (q *Queue) AddHead(source Source, startCallback func(q *Queue, entry *QueueEntry), endCallback func(q *Queue, entry *QueueEntry), removeCallback func(q *Queue, entry *QueueEntry)) (identifier QueueIdentifier) {
q.lock.Lock()
splicedOutput, cancel := q.spliceSources(source)
identifier = q.identifierCounter
if len(q.queue) > 0 {
q.queue = append(q.queue[:1], append([]*QueueEntry{&QueueEntry{
Identifier: identifier,
Source: q.getFilterChain(splicedOutput),
cancel: cancel,
StartCallback: startPlayback,
EndCallback: endPlayback,
Identifier: identifier,
Source: q.getFilterChain(splicedOutput),
cancel: cancel,
StartCallback: startCallback,
EndCallback: endCallback,
RemoveCallback: removeCallback,
}}, q.queue[1:]...)...)
} else {
q.queue = append(q.queue, &QueueEntry{
Identifier: identifier,
Source: q.getFilterChain(splicedOutput),
cancel: cancel,
StartCallback: startPlayback,
EndCallback: endPlayback,
Identifier: identifier,
Source: q.getFilterChain(splicedOutput),
cancel: cancel,
StartCallback: startCallback,
EndCallback: endCallback,
RemoveCallback: removeCallback,
})
}
q.identifierCounter++
@ -166,17 +168,18 @@ func (q *Queue) AddHead(source Source, startPlayback func(q *Queue, entry *Queue
return
}
func (q *Queue) AddTail(source Source, startPlayback func(q *Queue, entry *QueueEntry), endPlayback func(q *Queue, entry *QueueEntry)) (identifier QueueIdentifier) {
func (q *Queue) AddTail(source Source, startCallback func(q *Queue, entry *QueueEntry), endCallback func(q *Queue, entry *QueueEntry), removeCallback func(q *Queue, entry *QueueEntry)) (identifier QueueIdentifier) {
q.lock.Lock()
splicedOutput, cancel := q.spliceSources(source)
identifier = q.identifierCounter
q.queue = append(q.queue, &QueueEntry{
Identifier: identifier,
Source: q.getFilterChain(splicedOutput),
cancel: cancel,
StartCallback: startPlayback,
EndCallback: endPlayback,
Identifier: identifier,
Source: q.getFilterChain(splicedOutput),
cancel: cancel,
StartCallback: startCallback,
EndCallback: endCallback,
RemoveCallback: removeCallback,
})
q.identifierCounter++
q.lock.Unlock()