diff --git a/bar.go b/bar.go index 3cbdab0..fe17e6f 100644 --- a/bar.go +++ b/bar.go @@ -83,7 +83,7 @@ char rune till int64 } - renderedState struct { + bFrame struct { bar *Bar reader io.Reader toComplete bool @@ -295,8 +295,8 @@ } } -func (b *Bar) render(debugOut io.Writer, tw int, pSyncer, aSyncer *widthSyncer) <-chan *renderedState { - ch := make(chan *renderedState, 1) +func (b *Bar) render(debugOut io.Writer, tw int, pSyncer, aSyncer *widthSyncer) <-chan *bFrame { + ch := make(chan *bFrame, 1) go func() { select { @@ -313,7 +313,7 @@ r = strings.NewReader(fmt.Sprintf(fmt.Sprintf("%%.%ds\n", tw), s.panicMsg)) fmt.Fprintf(debugOut, "%s %s bar id %02d %v\n", "[mpb]", time.Now(), s.id, s.panicMsg) } - ch <- &renderedState{b, r, s.toComplete} + ch <- &bFrame{b, r, s.toComplete} }() r = s.draw(tw, pSyncer, aSyncer) }: @@ -325,7 +325,7 @@ } else { r = s.draw(tw, pSyncer, aSyncer) } - ch <- &renderedState{b, r, s.toComplete} + ch <- &bFrame{b, r, s.toComplete} } }() diff --git a/progress.go b/progress.go index 081c5ba..fbc39a9 100644 --- a/progress.go +++ b/progress.go @@ -210,20 +210,20 @@ }) for _, ch := range s.renderByPriority(tw, pSyncer, aSyncer) { - rs := <-ch - _, err = s.cw.ReadFrom(rs.reader) - if !rs.bar.completed && rs.toComplete { - rs.bar.completed = true - if rs.bar.removeOnComplete { - s.heapUpdated = heap.Remove(s.bHeap, rs.bar.index) != nil - } - if replacementBar, ok := s.waitBars[rs.bar]; ok { + bf := <-ch + _, err = s.cw.ReadFrom(bf.reader) + if !bf.bar.completed && bf.toComplete { + bf.bar.completed = true + if bf.bar.removeOnComplete { + s.heapUpdated = heap.Remove(s.bHeap, bf.bar.index) != nil + } + if replacementBar, ok := s.waitBars[bf.bar]; ok { heap.Push(s.bHeap, replacementBar) s.heapUpdated = true - delete(s.waitBars, rs.bar) + delete(s.waitBars, bf.bar) } defer func() { - s.shutdownPending = append(s.shutdownPending, rs.bar) + s.shutdownPending = append(s.shutdownPending, bf.bar) }() } } @@ -243,8 +243,8 @@ return } -func (s *pState) renderByPriority(tw int, pSyncer, aSyncer *widthSyncer) []<-chan *renderedState { - pp := make([]<-chan *renderedState, 0, s.bHeap.Len()) +func (s *pState) renderByPriority(tw int, pSyncer, aSyncer *widthSyncer) []<-chan *bFrame { + pp := make([]<-chan *bFrame, 0, s.bHeap.Len()) for s.bHeap.Len() > 0 { b := heap.Pop(s.bHeap).(*Bar) defer heap.Push(s.bHeap, b)