diff --git a/bar.go b/bar.go index 599dec1..03ed3d2 100644 --- a/bar.go +++ b/bar.go @@ -62,6 +62,7 @@ shutdown int rmOnComplete bool noPop bool + done bool err error } @@ -415,6 +416,7 @@ } func (b *Bar) render(tw int) { + var done bool fn := func(s *bState) { var rows []io.Reader stat := newStatistics(tw, s) @@ -436,6 +438,7 @@ shutdown: s.shutdown, rmOnComplete: s.rmOnComplete, noPop: s.noPop, + done: done, } if s.completed || s.aborted { // post increment makes sure OnComplete decorators are rendered @@ -446,6 +449,7 @@ select { case b.operateState <- fn: case <-b.done: + done = true fn(b.bs) } } diff --git a/progress.go b/progress.go index f65fea7..1e3b41b 100644 --- a/progress.go +++ b/progress.go @@ -337,7 +337,7 @@ _, _ = io.Copy(io.Discard, row) } } - if frame.shutdown != 0 { + if frame.shutdown != 0 && !frame.done { if qb, ok := s.queueBars[b]; ok { b.cancel() delete(s.queueBars, b)