forked from Leak_Technologies/VideoTools
Auto-start playback, guard view rebuilds, and clean window close
This commit is contained in:
parent
fc1e91bda6
commit
e727b8ea09
29
main.go
29
main.go
|
|
@ -599,7 +599,7 @@ func (s *appState) showPlayerView() {
|
||||||
if err != nil || r == nil {
|
if err != nil || r == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
path := r.URI().Path()
|
path := uriPath(r.URI())
|
||||||
r.Close()
|
r.Close()
|
||||||
go s.loadVideo(path)
|
go s.loadVideo(path)
|
||||||
}, s.window)
|
}, s.window)
|
||||||
|
|
@ -1989,10 +1989,6 @@ func runGUI() {
|
||||||
a.Settings().SetTheme(&ui.MonoTheme{})
|
a.Settings().SetTheme(&ui.MonoTheme{})
|
||||||
logging.Debug(logging.CatUI, "created fyne app: %#v", a)
|
logging.Debug(logging.CatUI, "created fyne app: %#v", a)
|
||||||
w := a.NewWindow("VT Player")
|
w := a.NewWindow("VT Player")
|
||||||
w.SetOnClosed(func() {
|
|
||||||
state.onClose()
|
|
||||||
a.Quit()
|
|
||||||
})
|
|
||||||
if icon := utils.LoadAppIcon(); icon != nil {
|
if icon := utils.LoadAppIcon(); icon != nil {
|
||||||
a.SetIcon(icon)
|
a.SetIcon(icon)
|
||||||
w.SetIcon(icon)
|
w.SetIcon(icon)
|
||||||
|
|
@ -2105,6 +2101,11 @@ func runGUI() {
|
||||||
|
|
||||||
// Stats update loop disabled in player-only mode to avoid view churn.
|
// Stats update loop disabled in player-only mode to avoid view churn.
|
||||||
|
|
||||||
|
w.SetOnClosed(func() {
|
||||||
|
state.onClose()
|
||||||
|
a.Quit()
|
||||||
|
})
|
||||||
|
|
||||||
w.ShowAndRun()
|
w.ShowAndRun()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3438,11 +3439,9 @@ func buildVideoPane(state *appState, min fyne.Size, src *videoSource, onCover fu
|
||||||
state.currentFrame = sourceFrame
|
state.currentFrame = sourceFrame
|
||||||
}
|
}
|
||||||
|
|
||||||
var img *canvas.Image
|
img := canvas.NewImageFromResource(nil)
|
||||||
if sourceFrame != "" {
|
if sourceFrame != "" {
|
||||||
img = canvas.NewImageFromFile(sourceFrame)
|
img = canvas.NewImageFromFile(sourceFrame)
|
||||||
} else {
|
|
||||||
img = canvas.NewImageFromResource(nil)
|
|
||||||
}
|
}
|
||||||
img.FillMode = canvas.ImageFillContain
|
img.FillMode = canvas.ImageFillContain
|
||||||
// Don't set rigid MinSize on image - it will scale to container
|
// Don't set rigid MinSize on image - it will scale to container
|
||||||
|
|
@ -3506,6 +3505,7 @@ func buildVideoPane(state *appState, min fyne.Size, src *videoSource, onCover fu
|
||||||
}
|
}
|
||||||
|
|
||||||
var controls fyne.CanvasObject
|
var controls fyne.CanvasObject
|
||||||
|
autoStarted := false
|
||||||
if usePlayer {
|
if usePlayer {
|
||||||
var volIcon *widget.Button
|
var volIcon *widget.Button
|
||||||
var updatingVolume bool
|
var updatingVolume bool
|
||||||
|
|
@ -3518,7 +3518,9 @@ func buildVideoPane(state *appState, min fyne.Size, src *videoSource, onCover fu
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
state.playSess.SetVolume(state.playerVolume)
|
state.playSess.SetVolume(state.playerVolume)
|
||||||
state.playerPaused = true
|
state.playerPaused = false
|
||||||
|
state.playSess.Play()
|
||||||
|
autoStarted = true
|
||||||
}
|
}
|
||||||
return state.playSess != nil
|
return state.playSess != nil
|
||||||
}
|
}
|
||||||
|
|
@ -3606,6 +3608,15 @@ func buildVideoPane(state *appState, min fyne.Size, src *videoSource, onCover fu
|
||||||
container.NewHBox(playBtn, fullBtn, coverBtn, importBtn, layout.NewSpacer(), volBox),
|
container.NewHBox(playBtn, fullBtn, coverBtn, importBtn, layout.NewSpacer(), volBox),
|
||||||
progress,
|
progress,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Auto-start playback once when view is built
|
||||||
|
if !autoStarted {
|
||||||
|
if ensureSession() {
|
||||||
|
state.playSess.Play()
|
||||||
|
state.playerPaused = false
|
||||||
|
fmt.Printf("▶ Auto-start playback\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
slider := widget.NewSlider(0, math.Max(1, float64(len(src.PreviewFrames)-1)))
|
slider := widget.NewSlider(0, math.Max(1, float64(len(src.PreviewFrames)-1)))
|
||||||
slider.Step = 1
|
slider.Step = 1
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user