Skip to content

Commit

Permalink
address issue #136
Browse files Browse the repository at this point in the history
enable renderReq only after delayRC has been fired
  • Loading branch information
vbauerster committed Dec 4, 2023
1 parent 76a2278 commit 4b59059
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions progress.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,17 @@ func NewWithContext(ctx context.Context, options ...ContainerOption) *Progress {
ctx = context.Background()
}
ctx, cancel := context.WithCancel(ctx)
delayRC := make(chan struct{}, 1)
delayRC <- struct{}{}
s := &pState{
ctx: ctx,
hm: make(heapManager),
dropS: make(chan struct{}),
dropD: make(chan struct{}),
renderReq: make(chan time.Time),
refreshRate: defaultRefreshRate,
popPriority: math.MinInt32,
refreshRate: defaultRefreshRate,
delayRC: delayRC,
queueBars: make(map[*Bar]*Bar),
output: os.Stdout,
debugOut: io.Discard,
Expand Down Expand Up @@ -260,14 +263,18 @@ func (p *Progress) serve(s *pState, cw *cwriter.Writer) {
defer p.pwg.Done()
render := func() error { return s.render(cw) }
var err error
var renderReq <-chan time.Time

for {
select {
case op := <-p.operateState:
op(s)
case fn := <-p.interceptIO:
fn(cw)
case <-s.renderReq:
case <-s.delayRC:
renderReq = s.renderReq
s.delayRC = nil
case <-renderReq:
e := render()
if e != nil {
p.cancel() // cancel all bars
Expand All @@ -294,9 +301,6 @@ func (p *Progress) serve(s *pState, cw *cwriter.Writer) {
}

func (s pState) autoRefreshListener(done chan struct{}) {
if s.delayRC != nil {
<-s.delayRC
}
ticker := time.NewTicker(s.refreshRate)
defer ticker.Stop()
for {
Expand Down

0 comments on commit 4b59059

Please sign in to comment.