mirror of https://github.com/jetkvm/kvm.git
Compare commits
1 Commits
342d29441a
...
a2a8d99397
| Author | SHA1 | Date |
|---|---|---|
|
|
a2a8d99397 |
86
display.go
86
display.go
|
|
@ -1,7 +1,6 @@
|
||||||
package kvm
|
package kvm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -111,6 +110,12 @@ func clearDisplayState() {
|
||||||
currentScreen = "ui_Boot_Screen"
|
currentScreen = "ui_Boot_Screen"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
cloudBlinkLock sync.Mutex = sync.Mutex{}
|
||||||
|
cloudBlinkStopped bool
|
||||||
|
cloudBlinkTicker *time.Ticker
|
||||||
|
)
|
||||||
|
|
||||||
func updateDisplay() {
|
func updateDisplay() {
|
||||||
updateLabelIfChanged("ui_Home_Content_Ip", networkState.IPv4String())
|
updateLabelIfChanged("ui_Home_Content_Ip", networkState.IPv4String())
|
||||||
if usbState == "configured" {
|
if usbState == "configured" {
|
||||||
|
|
@ -147,81 +152,48 @@ func updateDisplay() {
|
||||||
stopCloudBlink()
|
stopCloudBlink()
|
||||||
case CloudConnectionStateConnecting:
|
case CloudConnectionStateConnecting:
|
||||||
_, _ = lvImgSetSrc("ui_Home_Header_Cloud_Status_Icon", "cloud.png")
|
_, _ = lvImgSetSrc("ui_Home_Header_Cloud_Status_Icon", "cloud.png")
|
||||||
restartCloudBlink()
|
startCloudBlink()
|
||||||
case CloudConnectionStateConnected:
|
case CloudConnectionStateConnected:
|
||||||
_, _ = lvImgSetSrc("ui_Home_Header_Cloud_Status_Icon", "cloud.png")
|
_, _ = lvImgSetSrc("ui_Home_Header_Cloud_Status_Icon", "cloud.png")
|
||||||
stopCloudBlink()
|
stopCloudBlink()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
func startCloudBlink() {
|
||||||
cloudBlinkInterval = 2 * time.Second
|
if cloudBlinkTicker == nil {
|
||||||
cloudBlinkDuration = 1 * time.Second
|
cloudBlinkTicker = time.NewTicker(2 * time.Second)
|
||||||
)
|
} else {
|
||||||
|
// do nothing if the blink isn't stopped
|
||||||
|
if cloudBlinkStopped {
|
||||||
|
cloudBlinkLock.Lock()
|
||||||
|
defer cloudBlinkLock.Unlock()
|
||||||
|
|
||||||
var (
|
cloudBlinkStopped = false
|
||||||
cloudBlinkTicker *time.Ticker
|
cloudBlinkTicker.Reset(2 * time.Second)
|
||||||
cloudBlinkCancel context.CancelFunc
|
}
|
||||||
cloudBlinkLock = sync.Mutex{}
|
}
|
||||||
)
|
|
||||||
|
|
||||||
func doCloudBlink(ctx context.Context) {
|
go func() {
|
||||||
for range cloudBlinkTicker.C {
|
for range cloudBlinkTicker.C {
|
||||||
if cloudConnectionState != CloudConnectionStateConnecting {
|
if cloudConnectionState != CloudConnectionStateConnecting {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
_, _ = lvObjFadeOut("ui_Home_Header_Cloud_Status_Icon", 1000)
|
||||||
_, _ = lvObjFadeOut("ui_Home_Header_Cloud_Status_Icon", uint32(cloudBlinkDuration.Milliseconds()))
|
time.Sleep(1000 * time.Millisecond)
|
||||||
|
_, _ = lvObjFadeIn("ui_Home_Header_Cloud_Status_Icon", 1000)
|
||||||
select {
|
time.Sleep(1000 * time.Millisecond)
|
||||||
case <-ctx.Done():
|
|
||||||
return
|
|
||||||
case <-time.After(cloudBlinkDuration):
|
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
_, _ = lvObjFadeIn("ui_Home_Header_Cloud_Status_Icon", uint32(cloudBlinkDuration.Milliseconds()))
|
|
||||||
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
return
|
|
||||||
case <-time.After(cloudBlinkDuration):
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func restartCloudBlink() {
|
|
||||||
stopCloudBlink()
|
|
||||||
startCloudBlink()
|
|
||||||
}
|
|
||||||
|
|
||||||
func startCloudBlink() {
|
|
||||||
cloudBlinkLock.Lock()
|
|
||||||
defer cloudBlinkLock.Unlock()
|
|
||||||
|
|
||||||
if cloudBlinkTicker == nil {
|
|
||||||
cloudBlinkTicker = time.NewTicker(cloudBlinkInterval)
|
|
||||||
} else {
|
|
||||||
cloudBlinkTicker.Reset(cloudBlinkInterval)
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
|
||||||
cloudBlinkCancel = cancel
|
|
||||||
|
|
||||||
go doCloudBlink(ctx)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func stopCloudBlink() {
|
func stopCloudBlink() {
|
||||||
cloudBlinkLock.Lock()
|
|
||||||
defer cloudBlinkLock.Unlock()
|
|
||||||
|
|
||||||
if cloudBlinkCancel != nil {
|
|
||||||
cloudBlinkCancel()
|
|
||||||
cloudBlinkCancel = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if cloudBlinkTicker != nil {
|
if cloudBlinkTicker != nil {
|
||||||
cloudBlinkTicker.Stop()
|
cloudBlinkTicker.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cloudBlinkLock.Lock()
|
||||||
|
defer cloudBlinkLock.Unlock()
|
||||||
|
cloudBlinkStopped = true
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
01db2bbcd0bad46c3e21eb3cc5687d15df2153c3d8e2d4665b37acb55f0b5a57
|
6dabd0e657dd099280d9173069687786a4a8c9c25cf7f9e7ce2f940cab67c521
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue