diff --git a/bar.go b/bar.go index 0f993cf..9c13624 100644 --- a/bar.go +++ b/bar.go @@ -247,7 +247,8 @@ if isClosed(b.done) { return b.state } - ch := make(chan state, 1) + // ch := make(chan state, 1) + ch := make(chan state) b.stateReqCh <- ch return <-ch } @@ -358,6 +359,9 @@ } func draw(s *state, termWidth int, ws *widthSync) []byte { + if len(s.prependFuncs) != len(ws.listen) { + return []byte{} + } if termWidth <= 0 { termWidth = s.width } diff --git a/progress.go b/progress.go index 28da56a..8b9794d 100644 --- a/progress.go +++ b/progress.go @@ -297,7 +297,7 @@ for i := 0; i < numBars; i++ { resultCh <- result } - // close(resultCh) + close(resultCh) }(listenCh, prepWidthSync.result[i]) } @@ -307,7 +307,10 @@ wg.Add(numBars) for i := 0; i < numBars; i++ { go func() { - defer recoverIfPanic() + // defer recoverIfPanic() + defer func() { + wg.Done() + }() drawer(ibars, ibbCh, prepWidthSync) }() } @@ -315,9 +318,6 @@ wg.Wait() close(ibbCh) close(stopWidthListen) - for _, ch := range prepWidthSync.result { - close(ch) - } for _, ch := range prepWidthSync.listen { close(ch) }