summaryrefslogtreecommitdiff
path: root/internal/display/display.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/display/display.go')
-rw-r--r--internal/display/display.go16
1 files changed, 6 insertions, 10 deletions
diff --git a/internal/display/display.go b/internal/display/display.go
index 10a0b04..2d1c927 100644
--- a/internal/display/display.go
+++ b/internal/display/display.go
@@ -27,9 +27,6 @@ type runState struct {
extended bool
winW int32
winH int32
- lastNumBars int
- lastWinW int32
- lastWinH int32
prevCPU map[string]collector.CPULine
smoothedCPU map[string]*[9]float64
smoothedMem map[string]*struct{ ramUsed, swapUsed float64 }
@@ -50,7 +47,6 @@ func newRunState(cfg *config.Config, winW, winH int32) *runState {
extended: cfg.Extended,
winW: winW,
winH: winH,
- lastNumBars: -1,
prevCPU: make(map[string]collector.CPULine),
smoothedCPU: make(map[string]*[9]float64),
smoothedMem: make(map[string]*struct{ ramUsed, swapUsed float64 }),
@@ -238,12 +234,12 @@ func drawFrame(renderer *sdl.Renderer, src stats.Source, cfg *config.Config, sta
if barWidth < 1 {
barWidth = 1
}
- if numBars != state.lastNumBars || state.winW != state.lastWinW || state.winH != state.lastWinH {
- renderer.SetDrawColor(0, 0, 0, 255)
- renderer.Clear()
- state.lastNumBars = numBars
- state.lastWinW, state.lastWinH = state.winW, state.winH
- }
+ // Always clear the entire window before drawing. SDL2 uses double-buffering,
+ // so skipping clear leaves stale content in the back buffer. Additionally,
+ // integer division (winW / numBars) can leave remainder pixels at the right
+ // edge that no bar covers.
+ renderer.SetDrawColor(0, 0, 0, 255)
+ renderer.Clear()
drawBars(renderer, snap, cfg, state, barWidth)
}