| 55 | 55 |
Accumulator []chan int
|
| 56 | 56 |
Distributor []chan int
|
| 57 | 57 |
}
|
| 58 | |
toRenderSnapshot struct {
|
| 59 | |
bar *Bar
|
| 60 | |
pipe <-chan *toRenderReader
|
|
58 |
barRendering struct {
|
|
59 |
bar *Bar
|
|
60 |
ready <-chan *renderedReader
|
| 61 | 61 |
}
|
| 62 | 62 |
)
|
| 63 | 63 |
|
|
| 200 | 200 |
close(timeout)
|
| 201 | 201 |
})
|
| 202 | 202 |
|
| 203 | |
for _, trs := range s.renderByPriority(tw, pSyncer, aSyncer) {
|
| 204 | |
r := <-trs.pipe
|
|
203 |
for _, br := range s.renderByPriority(tw, pSyncer, aSyncer) {
|
|
204 |
r := <-br.ready
|
| 205 | 205 |
_, err = s.cw.ReadFrom(r)
|
| 206 | |
if !trs.bar.completed && r.toComplete {
|
| 207 | |
trs.bar.completed = true
|
| 208 | |
close(trs.bar.shutdown)
|
|
206 |
if !br.bar.completed && r.toComplete {
|
|
207 |
br.bar.completed = true
|
|
208 |
close(br.bar.shutdown)
|
| 209 | 209 |
}
|
| 210 | 210 |
if r.toRemove {
|
| 211 | |
s.heapUpdated = heap.Remove(s.bHeap, trs.bar.index) != nil
|
|
211 |
s.heapUpdated = heap.Remove(s.bHeap, br.bar.index) != nil
|
| 212 | 212 |
}
|
| 213 | 213 |
}
|
| 214 | 214 |
|
|
| 222 | 222 |
return
|
| 223 | 223 |
}
|
| 224 | 224 |
|
| 225 | |
func (s *pState) renderByPriority(tw int, pSyncer, aSyncer *widthSyncer) []*toRenderSnapshot {
|
| 226 | |
slice := make([]*toRenderSnapshot, 0, s.bHeap.Len())
|
|
225 |
func (s *pState) renderByPriority(tw int, pSyncer, aSyncer *widthSyncer) []*barRendering {
|
|
226 |
slice := make([]*barRendering, 0, s.bHeap.Len())
|
| 227 | 227 |
for s.bHeap.Len() > 0 {
|
| 228 | 228 |
b := heap.Pop(s.bHeap).(*Bar)
|
| 229 | 229 |
defer heap.Push(s.bHeap, b)
|
| 230 | |
slice = append(slice, &toRenderSnapshot{
|
| 231 | |
bar: b,
|
| 232 | |
pipe: b.render(tw, pSyncer, aSyncer),
|
|
230 |
slice = append(slice, &barRendering{
|
|
231 |
bar: b,
|
|
232 |
ready: b.render(tw, pSyncer, aSyncer),
|
| 233 | 233 |
})
|
| 234 | 234 |
}
|
| 235 | 235 |
return slice
|