add video lifecycle controls

This commit is contained in:
Dmitry Sergeev
2026-08-27 21:59:11 +03:00
parent 461793b181
commit 1571e2700c
2 changed files with 65 additions and 15 deletions
+58 -8
View File
@@ -385,6 +385,7 @@ func main() {
audioStr string = args.AudioFlowId
showStats bool = true
)
videoActive := useVideoSlot
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
@@ -481,22 +482,32 @@ func main() {
return fmt.Errorf("reopen: no flow specified")
}
doReconnect := func() {
if useVideoSlot {
config := playback.FeedConfig{
Domain: domainStr,
UUID: videoStr,
Active: videoStr != "",
}
// GUI is the only sender. Replace an older pending command
enqueueVideoConfig := func(config playback.FeedConfig) {
select {
case <-videoCommands:
default:
}
select {
case videoCommands <- config:
default:
}
}
doReconnect := func() {
if useVideoSlot {
videoActive = videoStr != ""
config := playback.FeedConfig{}
if videoStr != "" {
config = playback.FeedConfig{
Domain: domainStr,
UUID: videoStr,
Active: true,
}
}
enqueueVideoConfig(config)
return
}
select {
@@ -848,6 +859,45 @@ func main() {
if cimgui.Button("Connect") {
doReconnect()
}
if useVideoSlot && videoActive {
cimgui.SameLine()
if cimgui.Button("Stop video") {
videoActive = false
enqueueVideoConfig(
playback.FeedConfig{
Domain: domainStr,
UUID: videoStr,
Active: false,
})
}
}
if useVideoSlot && !videoActive && videoStr != "" {
cimgui.SameLine()
if cimgui.Button("Resume video") {
videoActive = true
enqueueVideoConfig(playback.FeedConfig{
Domain: domainStr,
UUID: videoStr,
Active: true,
})
}
}
if useVideoSlot && videoStr != "" {
if cimgui.Button("Remove video") {
videoActive = false
videoStr = ""
enqueueVideoConfig(playback.FeedConfig{})
}
}
if useVideoSlot {
if videoActive {
cimgui.Text("Video state: active")
} else if videoStr != "" {
cimgui.Text("Video state: stopped")
} else {
cimgui.Text("Video state: not configured")
}
}
cimgui.End()
gui.EndFrame()
lastFrame = time.Now()
+2 -2
View File
@@ -14,7 +14,7 @@ Size=200,200
Collapsed=0
[Window][Connection]
Pos=388,158
Size=523,141
Pos=421,219
Size=518,191
Collapsed=0