From d4dbb47ac776471eb8a9f91a97da40b9b6621a74 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sun, 21 May 2023 14:44:33 +0200 Subject: paralyze searching --- player.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'player.go') 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 } -- cgit v1.2.3