aboutsummaryrefslogtreecommitdiff
path: root/player.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-05-21 14:44:33 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2023-05-21 14:44:33 +0200
commitd4dbb47ac776471eb8a9f91a97da40b9b6621a74 (patch)
treeea6dc9824b3bc821d6618fe41472050277f6d25b /player.go
parentf638d3975225b895e7b0a8fb79c6c6de288a732a (diff)
downloadWRMS-d4dbb47ac776471eb8a9f91a97da40b9b6621a74.tar.gz
WRMS-d4dbb47ac776471eb8a9f91a97da40b9b6621a74.zip
paralyze searching
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
}