declare rows inside pState.flush
Vladimir Bauer
3 years ago
| 36 | 36 | hm heapManager |
| 37 | 37 | dropS, dropD chan struct{} |
| 38 | 38 | refreshCh chan time.Time |
| 39 | rows []io.Reader | |
| 40 | 39 | |
| 41 | 40 | // following are provided/overrided by user |
| 42 | 41 | refreshRate time.Duration |
| 71 | 70 | dropS: make(chan struct{}), |
| 72 | 71 | dropD: make(chan struct{}), |
| 73 | 72 | refreshCh: make(chan time.Time), |
| 74 | rows: make([]io.Reader, 32), | |
| 75 | 73 | refreshRate: defaultRefreshRate, |
| 76 | 74 | popPriority: math.MinInt32, |
| 77 | 75 | queueBars: make(map[*Bar]*Bar), |
| 320 | 318 | defer wg.Wait() // waiting for all s.hm.push to complete |
| 321 | 319 | |
| 322 | 320 | var popCount int |
| 321 | var rows []io.Reader | |
| 323 | 322 | |
| 324 | 323 | iter := make(chan *Bar) |
| 325 | 324 | s.hm.drain(iter, s.dropD) |
| 326 | s.rows = s.rows[:0] | |
| 327 | 325 | |
| 328 | 326 | for b := range iter { |
| 329 | 327 | frame := <-b.frameCh |
| 334 | 332 | } |
| 335 | 333 | var usedRows int |
| 336 | 334 | for i := len(frame.rows) - 1; i >= 0; i-- { |
| 337 | if row := frame.rows[i]; len(s.rows) < height { | |
| 338 | s.rows = append(s.rows, row) | |
| 335 | if row := frame.rows[i]; len(rows) < height { | |
| 336 | rows = append(rows, row) | |
| 339 | 337 | usedRows++ |
| 340 | 338 | } else { |
| 341 | 339 | _, _ = io.Copy(io.Discard, row) |
| 375 | 373 | }(b) |
| 376 | 374 | } |
| 377 | 375 | |
| 378 | for i := len(s.rows) - 1; i >= 0; i-- { | |
| 379 | _, err := cw.ReadFrom(s.rows[i]) | |
| 376 | for i := len(rows) - 1; i >= 0; i-- { | |
| 377 | _, err := cw.ReadFrom(rows[i]) | |
| 380 | 378 | if err != nil { |
| 381 | 379 | return err |
| 382 | 380 | } |
| 383 | 381 | } |
| 384 | 382 | |
| 385 | return cw.Flush(len(s.rows) - popCount) | |
| 383 | return cw.Flush(len(rows) - popCount) | |
| 386 | 384 | } |
| 387 | 385 | |
| 388 | 386 | func (s *pState) makeBarState(total int64, filler BarFiller, options ...BarOption) *bState { |