Fix Battery widget panic (#100)

This commit is contained in:
Caleb Bassi 2019-01-30 15:20:09 -08:00
parent daf06909db
commit c5e9511157
7 changed files with 24 additions and 32 deletions

View File

@ -8,38 +8,30 @@ import (
"sync"
"time"
ui "github.com/cjbassi/gotop/src/termui"
"github.com/distatus/battery"
ui "github.com/cjbassi/gotop/src/termui"
)
type Batt struct {
*ui.LineGraph
Count int // number of batteries
interval time.Duration
}
func NewBatt(renderLock *sync.RWMutex, horizontalScale int) *Batt {
batts, err := battery.GetAll()
self := &Batt{
LineGraph: ui.NewLineGraph(),
Count: len(batts),
interval: time.Minute,
}
self.Title = "Battery Status"
self.Title = " Battery Status "
self.HorizontalScale = horizontalScale
if err != nil {
log.Printf("failed to get battery info from system: %v", err)
}
for i, b := range batts {
pc := math.Abs(b.Current/b.Full) * 100.0
self.Data[mkId(i)] = []float64{pc}
}
// intentional duplicate
self.update()
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
renderLock.RLock()
self.update()
renderLock.RUnlock()
@ -57,6 +49,7 @@ func (self *Batt) update() {
batts, err := battery.GetAll()
if err != nil {
log.Printf("failed to get battery info from system: %v", err)
return
}
for i, b := range batts {
n := mkId(i)

View File

@ -6,8 +6,9 @@ import (
"sync"
"time"
ui "github.com/cjbassi/gotop/src/termui"
psCPU "github.com/shirou/gopsutil/cpu"
ui "github.com/cjbassi/gotop/src/termui"
)
type CPU struct {
@ -64,8 +65,7 @@ func NewCPU(renderLock *sync.RWMutex, interval time.Duration, horizontalScale in
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
self.update()
}
}()

View File

@ -8,9 +8,10 @@ import (
"sync"
"time"
psDisk "github.com/shirou/gopsutil/disk"
ui "github.com/cjbassi/gotop/src/termui"
"github.com/cjbassi/gotop/src/utils"
psDisk "github.com/shirou/gopsutil/disk"
)
type Partition struct {
@ -44,8 +45,7 @@ func NewDisk(renderLock *sync.RWMutex) *Disk {
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
renderLock.RLock()
self.update()
renderLock.RUnlock()

View File

@ -6,9 +6,10 @@ import (
"sync"
"time"
psMem "github.com/shirou/gopsutil/mem"
ui "github.com/cjbassi/gotop/src/termui"
"github.com/cjbassi/gotop/src/utils"
psMem "github.com/shirou/gopsutil/mem"
)
type Mem struct {
@ -29,8 +30,7 @@ func NewMem(renderLock *sync.RWMutex, interval time.Duration, horizontalScale in
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
renderLock.RLock()
self.update()
renderLock.RUnlock()

View File

@ -6,14 +6,16 @@ import (
"sync"
"time"
psNet "github.com/shirou/gopsutil/net"
ui "github.com/cjbassi/gotop/src/termui"
"github.com/cjbassi/gotop/src/utils"
psNet "github.com/shirou/gopsutil/net"
)
type Net struct {
*ui.Sparklines
interval time.Duration
// used to calculate recent network activity
prevRecvTotal uint64
prevSentTotal uint64
@ -21,10 +23,10 @@ type Net struct {
func NewNet(renderLock *sync.RWMutex) *Net {
recv := ui.NewSparkline()
recv.Data = []int{0}
recv.Data = []int{}
sent := ui.NewSparkline()
sent.Data = []int{0}
sent.Data = []int{}
spark := ui.NewSparklines(recv, sent)
self := &Net{
@ -36,8 +38,7 @@ func NewNet(renderLock *sync.RWMutex) *Net {
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
renderLock.RLock()
self.update()
renderLock.RUnlock()

View File

@ -65,8 +65,7 @@ func NewProc(renderLock *sync.RWMutex) *Proc {
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
renderLock.RLock()
self.update()
renderLock.RUnlock()

View File

@ -40,8 +40,7 @@ func NewTemp(renderLock *sync.RWMutex, fahrenheit bool) *Temp {
self.update()
go func() {
ticker := time.NewTicker(self.interval)
for range ticker.C {
for range time.NewTicker(self.interval).C {
renderLock.RLock()
self.update()
renderLock.RUnlock()