Codebase list golang-github-vbauerster-mpb / 6217b5b
allow bar completion without render calls Vladimir Bauer 3 years ago
2 changed file(s) with 25 addition(s) and 16 deletion(s). Raw diff Collapse all Expand all
4242 triggerComplete bool
4343 dropOnComplete bool
4444 noPop bool
45 forceAutoRefresh bool
4546 aDecorators []decor.Decorator
4647 pDecorators []decor.Decorator
4748 averageDecorators []decor.AverageDecorator
184185 if s.current >= s.total {
185186 s.current = s.total
186187 s.completed = true
187 b.forceRefresh(s.refreshCh)
188 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
188189 } else {
189190 s.triggerComplete = true
190191 }
212213 if triggerCompleteNow {
213214 s.current = s.total
214215 s.completed = true
215 b.forceRefresh(s.refreshCh)
216 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
216217 }
217218 }:
218219 case <-b.done:
230231 if s.triggerComplete && s.current >= s.total {
231232 s.current = s.total
232233 s.completed = true
233 b.forceRefresh(s.refreshCh)
234 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
234235 }
235236 }:
236237 case <-b.done:
252253 if s.triggerComplete && s.current >= s.total {
253254 s.current = s.total
254255 s.completed = true
255 b.forceRefresh(s.refreshCh)
256 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
256257 }
257258 }:
258259 case <-b.done:
280281 if s.triggerComplete && s.current >= s.total {
281282 s.current = s.total
282283 s.completed = true
283 b.forceRefresh(s.refreshCh)
284 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
284285 }
285286 }:
286287 case <-b.done:
310311 if s.triggerComplete && s.current >= s.total {
311312 s.current = s.total
312313 s.completed = true
313 b.forceRefresh(s.refreshCh)
314 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
314315 }
315316 }:
316317 case <-b.done:
348349 }
349350 s.aborted = true
350351 s.dropOnComplete = drop
351 b.forceRefresh(s.refreshCh)
352 b.forceRefresh(s.forceAutoRefresh, s.refreshCh)
352353 }:
353354 case <-b.done:
354355 }
447448 }
448449 }
449450
450 func (b *Bar) forceRefresh(refreshCh chan<- time.Time) {
451 go b.forceRefreshImpl(refreshCh)
451 func (b *Bar) forceRefresh(force bool, refreshCh chan<- time.Time) {
452 if force {
453 go b.forceRefreshImpl(refreshCh)
454 } else {
455 b.cancel()
456 }
452457 }
453458
454459 func (b *Bar) forceRefreshImpl(refreshCh chan<- time.Time) {
8787
8888 cw := cwriter.New(s.output)
8989 if (cw.IsTerminal() || s.forceAutoRefresh) && !s.manualRefresh {
90 s.forceAutoRefresh = true
9091 go s.autoRefresh(s.renderDelay != nil)
92 } else {
93 s.forceAutoRefresh = false
9194 }
9295
9396 p := &Progress{
246249 }
247250 case <-p.done:
248251 update := make(chan bool)
249 for err == nil {
252 for s.forceAutoRefresh && err == nil {
250253 s.hm.state(update)
251254 if <-update {
252255 err = render()
381384
382385 func (s *pState) makeBarState(total int64, filler BarFiller, options ...BarOption) *bState {
383386 bs := &bState{
384 id: s.idCount,
385 priority: s.idCount,
386 reqWidth: s.reqWidth,
387 total: total,
388 filler: filler,
389 refreshCh: s.refreshCh,
387 id: s.idCount,
388 priority: s.idCount,
389 reqWidth: s.reqWidth,
390 total: total,
391 filler: filler,
392 refreshCh: s.refreshCh,
393 forceAutoRefresh: s.forceAutoRefresh,
390394 }
391395
392396 if total > 0 {