Codebase list golang-github-vbauerster-mpb / 97cf368
frame.shutdown=true max 2 times Vladimir Bauer 3 years ago
2 changed file(s) with 14 addition(s) and 12 deletion(s). Raw diff Collapse all Expand all
6060
6161 type renderFrame struct {
6262 rows []io.Reader
63 shutdown int
63 shutdown bool
6464 err error
6565 }
6666
400400 }
401401
402402 func (b *Bar) render(tw int) {
403 var done bool
403404 fn := func(s *bState) {
404405 var rows []io.Reader
405406 stat := newStatistics(tw, s)
418419 }
419420 frame := &renderFrame{rows: rows}
420421 if s.completed || s.aborted {
421 s.shutdown++
422 frame.shutdown = s.shutdown
422 frame.shutdown = !done || s.shutdown == 1
423423 b.cancel()
424424 }
425425 b.frameCh <- frame
427427 select {
428428 case b.operateState <- fn:
429429 case <-b.done:
430 done = true
430431 fn(b.bs)
431432 }
432433 }
341341 }()
342342 }
343343 }
344 if frame.shutdown != 0 {
344 if frame.shutdown {
345345 b.Wait() // waiting for b.done, so it's safe to read b.bs
346 drop := b.bs.dropOnComplete
347346 if qb, ok := s.queueBars[b]; ok {
348347 delete(s.queueBars, b)
349348 qb.priority = b.priority
350349 s.pool = append(s.pool, qb)
351 drop = true
352 } else if s.popCompleted && !b.bs.noPop {
353 switch frame.shutdown {
350 s.heapUpdated = true
351 continue
352 }
353 if s.popCompleted && !b.bs.noPop {
354 switch b.bs.shutdown++; b.bs.shutdown {
354355 case 1:
355356 b.priority = s.popPriority
356357 s.popPriority++
357 drop = false
358358 default:
359 if drop {
359 if b.bs.dropOnComplete {
360360 popCount += usedRows
361 s.heapUpdated = true
362 continue
361363 }
362364 }
363 }
364 if drop {
365 } else if b.bs.dropOnComplete {
365366 s.heapUpdated = true
366367 continue
367368 }