do not queue draw functions if we are already drawing
This commit is contained in:
@@ -3,6 +3,7 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"esdi/tui/internal/services"
|
"esdi/tui/internal/services"
|
||||||
"esdi/tui/internal/views"
|
"esdi/tui/internal/views"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
)
|
)
|
||||||
@@ -63,10 +64,20 @@ func (sc *StreamingCtrl) registerHooks() {
|
|||||||
func (sc *StreamingCtrl) Start() {
|
func (sc *StreamingCtrl) Start() {
|
||||||
stream := sc.TelemServ.StartStream()
|
stream := sc.TelemServ.StartStream()
|
||||||
|
|
||||||
|
var isDrawing atomic.Bool
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for msg := range stream {
|
for msg := range stream {
|
||||||
|
if isDrawing.Load() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
isDrawing.Store(true)
|
||||||
|
|
||||||
sc.App.QueueUpdateDraw(func() {
|
sc.App.QueueUpdateDraw(func() {
|
||||||
sc.StreamView.Update(msg)
|
sc.Messages <- "got data\n"
|
||||||
|
sc.StreamView.Update(&msg)
|
||||||
|
isDrawing.Store(false)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|||||||
Reference in New Issue
Block a user