mirror of
https://github.com/containers/podman.git
synced 2025-12-03 11:49:18 +08:00
vendor containers/image v1.4
This requires some additional changes to the dependencies since the progress-bar library has been changed to github.com/vbauerster/mpb. Please refer to the following link for the release notes: https://github.com/containers/image/releases/tag/v1.4 Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
70
vendor/github.com/vbauerster/mpb/progress_posix.go
generated
vendored
Normal file
70
vendor/github.com/vbauerster/mpb/progress_posix.go
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
// +build !windows
|
||||
|
||||
package mpb
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
func (p *Progress) serve(s *pState) {
|
||||
|
||||
var ticker *time.Ticker
|
||||
var refreshCh <-chan time.Time
|
||||
var winch chan os.Signal
|
||||
var resumeTimer *time.Timer
|
||||
var resumeEvent <-chan time.Time
|
||||
winchIdleDur := s.rr * 2
|
||||
|
||||
if s.manualRefreshCh == nil {
|
||||
ticker = time.NewTicker(s.rr)
|
||||
refreshCh = ticker.C
|
||||
winch = make(chan os.Signal, 2)
|
||||
signal.Notify(winch, syscall.SIGWINCH)
|
||||
} else {
|
||||
refreshCh = s.manualRefreshCh
|
||||
}
|
||||
|
||||
for {
|
||||
select {
|
||||
case op := <-p.operateState:
|
||||
op(s)
|
||||
case <-refreshCh:
|
||||
if s.zeroWait {
|
||||
if s.manualRefreshCh == nil {
|
||||
signal.Stop(winch)
|
||||
ticker.Stop()
|
||||
}
|
||||
if s.shutdownNotifier != nil {
|
||||
close(s.shutdownNotifier)
|
||||
}
|
||||
close(p.done)
|
||||
return
|
||||
}
|
||||
tw, err := s.cw.GetWidth()
|
||||
if err != nil {
|
||||
tw = s.width
|
||||
}
|
||||
s.render(tw)
|
||||
case <-winch:
|
||||
tw, err := s.cw.GetWidth()
|
||||
if err != nil {
|
||||
tw = s.width
|
||||
}
|
||||
s.render(tw - tw/8)
|
||||
if resumeTimer != nil && resumeTimer.Reset(winchIdleDur) {
|
||||
break
|
||||
}
|
||||
ticker.Stop()
|
||||
resumeTimer = time.NewTimer(winchIdleDur)
|
||||
resumeEvent = resumeTimer.C
|
||||
case <-resumeEvent:
|
||||
ticker = time.NewTicker(s.rr)
|
||||
refreshCh = ticker.C
|
||||
resumeEvent = nil
|
||||
resumeTimer = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user