From e2011ebed72d891ccddfa5863e370ceb5ba8267c Mon Sep 17 00:00:00 2001 From: hhvn Date: Sat, 30 Dec 2023 15:00:19 +0000 Subject: make bar.Cleanup() actually work --- bar/bar.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'bar') diff --git a/bar/bar.go b/bar/bar.go index 9ecef15..0fd930a 100644 --- a/bar/bar.go +++ b/bar/bar.go @@ -163,10 +163,12 @@ type handle struct { Err chan error } -var cleanup chan bool - var Handle handle +// Store the state for when bar.Cleanup() is called +// This is a bit hacky but I don't really see any alternative +var finalstate *bspc.State = nil + func init() { var state *bspc.State state = nil @@ -175,7 +177,6 @@ func init() { Handle.Destroy = make(chan int) Handle.NewState = make(chan *bspc.State) Handle.Err = make(chan error) - cleanup = make(chan bool) go func() { defer func() { @@ -217,16 +218,12 @@ func init() { Handle.Err <- fmt.Errorf("Couldn't create window: %s\n", err) return } - case <- cleanup: - for _, b := range bars { - go b.destroy(state) - } - return case <- status.Updated: for _, b := range bars { go b.draw(state) } case state = <- Handle.NewState: + finalstate = state for _, b := range bars { go b.draw(state) } @@ -256,5 +253,9 @@ func create(state *bspc.State, id int) (error) { } func Cleanup() { - cleanup <- true + if finalstate != nil { + for _, b := range bars { + b.destroy(finalstate) + } + } } -- cgit v1.2.3