do not render frames, while window minimized

This commit is contained in:
Dmitry Sergeev
2026-08-22 22:24:18 +03:00
parent 1f8ca90566
commit 98804c0f25
+16
View File
@@ -94,6 +94,7 @@ func cbytes(s string) *byte {
} }
func main() { func main() {
var errMinimized = errors.New("Window minimized")
// TODO: remove flags defaults // TODO: remove flags defaults
mxlDomain := flag.String("d", "/dev/shm/mxl", "MXL domain") mxlDomain := flag.String("d", "/dev/shm/mxl", "MXL domain")
mxlVideoFlowID := flag.String("v", "5fbec3b1-1b0f-417d-9059-8b94a47197ed", "MXL video flow UUID") mxlVideoFlowID := flag.String("v", "5fbec3b1-1b0f-417d-9059-8b94a47197ed", "MXL video flow UUID")
@@ -368,6 +369,9 @@ func main() {
if h > int32(caps.MaxImageExtent.Height) { if h > int32(caps.MaxImageExtent.Height) {
h = int32(caps.MaxImageExtent.Height) h = int32(caps.MaxImageExtent.Height)
} }
if w == 0 || h == 0 {
return errMinimized
}
vkExtent = vk.Extent2D{Width: uint32(w), Height: uint32(h)} vkExtent = vk.Extent2D{Width: uint32(w), Height: uint32(h)}
vkSwapchain, err = vkDevice.CreateSwapchain(vk.SwapchainConfig{ vkSwapchain, err = vkDevice.CreateSwapchain(vk.SwapchainConfig{
@@ -534,6 +538,10 @@ func main() {
} }
if resized { if resized {
if err := recreateSwapChain(); err != nil { if err := recreateSwapChain(); err != nil {
if errors.Is(err, errMinimized) {
resized = true
continue
}
panic(err) panic(err)
} }
resized = false resized = false
@@ -542,6 +550,10 @@ func main() {
imageIndex, r := vkDevice.AcquireNextImage(vkSwapchain, imageAvailable, ^uint64(0)) imageIndex, r := vkDevice.AcquireNextImage(vkSwapchain, imageAvailable, ^uint64(0))
if r == vk.ErrorOutOfDateKHR || r == vk.SuboptimalKHR { if r == vk.ErrorOutOfDateKHR || r == vk.SuboptimalKHR {
if err := recreateSwapChain(); err != nil { if err := recreateSwapChain(); err != nil {
if errors.Is(err, errMinimized) {
resized = true
continue
}
panic(err) panic(err)
} }
continue continue
@@ -643,6 +655,10 @@ func main() {
r = vkQueue.Present(vkSwapchain, imageIndex, renderFinished) r = vkQueue.Present(vkSwapchain, imageIndex, renderFinished)
if r == vk.ErrorOutOfDateKHR || r == vk.SuboptimalKHR { if r == vk.ErrorOutOfDateKHR || r == vk.SuboptimalKHR {
if err := recreateSwapChain(); err != nil { if err := recreateSwapChain(); err != nil {
if errors.Is(err, errMinimized) {
resized = true
continue
}
panic(err) panic(err)
} }
continue continue