Added Head/Tail methods for queue
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
fcac047a8d
commit
8254100fb5
|
@ -688,7 +688,7 @@ func TestQueue(t *testing.T) {
|
|||
return
|
||||
}
|
||||
|
||||
q.Add(source, func(q *audio.Queue, entry *audio.QueueEntry) {
|
||||
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) {
|
||||
|
|
|
@ -138,7 +138,36 @@ func (q *Queue) getFilterChain(source Source) Source {
|
|||
}
|
||||
}
|
||||
|
||||
func (q *Queue) Add(source Source, startPlayback func(q *Queue, entry *QueueEntry), endPlayback func(q *Queue, entry *QueueEntry)) (identifier QueueIdentifier) {
|
||||
func (q *Queue) AddHead(source Source, startPlayback func(q *Queue, entry *QueueEntry), endPlayback 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,
|
||||
}}, q.queue[1:]...)...)
|
||||
} else {
|
||||
q.queue = append(q.queue, &QueueEntry{
|
||||
Identifier: identifier,
|
||||
Source: q.getFilterChain(splicedOutput),
|
||||
cancel: cancel,
|
||||
StartCallback: startPlayback,
|
||||
EndCallback: endPlayback,
|
||||
})
|
||||
}
|
||||
q.identifierCounter++
|
||||
q.lock.Unlock()
|
||||
q.sendInterrupt()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (q *Queue) AddTail(source Source, startPlayback func(q *Queue, entry *QueueEntry), endPlayback func(q *Queue, entry *QueueEntry)) (identifier QueueIdentifier) {
|
||||
q.lock.Lock()
|
||||
|
||||
splicedOutput, cancel := q.spliceSources(source)
|
||||
|
|
Loading…
Reference in a new issue