Codebase list golang-github-vbauerster-mpb / fdefae9
address issue #136 again instead blocking renderReq, discard any output until delayRC fires. Vladimir Bauer 2 years ago
1 changed file(s) with 6 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
261261 func (p *Progress) serve(s *pState, cw *cwriter.Writer) {
262262 defer p.pwg.Done()
263263 var err error
264 var renderReq <-chan time.Time
264 w := cwriter.New(io.Discard)
265 renderReq := s.renderReq
265266
266267 for {
267268 select {
268269 case op := <-p.operateState:
269270 op(s)
270271 case fn := <-p.interceptIO:
271 fn(cw)
272 fn(w)
272273 case <-s.delayRC:
273 renderReq = s.renderReq
274 w, cw = cw, nil
274275 s.delayRC = nil
275276 case <-renderReq:
276 err = s.render(cw)
277 err = s.render(w)
277278 if err != nil {
278279 go func() {
279280 for {
292293 for s.autoRefresh && err == nil {
293294 s.hm.state(update)
294295 if <-update {
295 err = s.render(cw)
296 err = s.render(w)
296297 } else {
297298 break
298299 }