Codebase list golang-github-vbauerster-mpb / 7ad27ef
check hm.state after p.done Vladimir Bauer 3 years ago
1 changed file(s) with 19 addition(s) and 5 deletion(s). Raw diff Collapse all Expand all
246246 }
247247
248248 func (p *Progress) serve(s *pState, cw *cwriter.Writer) {
249 var err error
249250 render := func() error {
250251 return s.render(cw)
251252 }
261262 case fn := <-p.interceptIo:
262263 fn(cw)
263264 case <-refreshCh:
264 err := render()
265 e := render()
266 if e != nil {
267 p.cancel() // cancel all bars
268 render = func() error { return nil }
269 err = e
270 }
271 case <-p.done:
272 ch := make(chan bool)
273 for err == nil {
274 s.hm.state(ch)
275 isUnrenderedState := <-ch
276 if isUnrenderedState {
277 err = render()
278 } else {
279 break
280 }
281 }
265282 if err != nil {
266283 _, _ = fmt.Fprintln(s.debugOut, err.Error())
267 render = func() error { return nil }
268 p.cancel() // cancel all bars
269 }
270 case <-p.done:
284 }
271285 s.hm.end(s.shutdownNotifier)
272286 close(p.shutdown)
273287 return