aboutsummaryrefslogtreecommitdiff
path: root/player.go
diff options
context:
space:
mode:
Diffstat (limited to 'player.go')
-rw-r--r--player.go23
1 files changed, 19 insertions, 4 deletions
diff --git a/player.go b/player.go
index 3cee6b4..b4a9dc6 100644
--- a/player.go
+++ b/player.go
@@ -3,6 +3,7 @@ package main
import (
"io"
"os/exec"
+ "sync"
"syscall"
"muhq.space/go/wrms/llog"
@@ -110,10 +111,24 @@ func (player *Player) Pause() {
}
}
-func (player *Player) Search(pattern string) []Song {
- results := []Song{}
+func (player *Player) Search(pattern string) chan []Song {
+ var wg sync.WaitGroup
+ wg.Add(len(player.Backends))
+
+ ch := make(chan []Song)
+
for _, backend := range player.Backends {
- results = append(results, backend.Search(pattern)...)
+ backend := backend
+ go func() {
+ ch <- backend.Search(pattern)
+ wg.Done()
+ }()
}
- return results
+
+ go func() {
+ wg.Wait()
+ close(ch)
+ }()
+
+ return ch
}