diff --git a/cmd/mxl-player/main.go b/cmd/mxl-player/main.go index d6ab880..79785ea 100644 --- a/cmd/mxl-player/main.go +++ b/cmd/mxl-player/main.go @@ -94,6 +94,7 @@ func cbytes(s string) *byte { } func main() { + var errMinimized = errors.New("Window minimized") // TODO: remove flags defaults mxlDomain := flag.String("d", "/dev/shm/mxl", "MXL domain") 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) { h = int32(caps.MaxImageExtent.Height) } + if w == 0 || h == 0 { + return errMinimized + } vkExtent = vk.Extent2D{Width: uint32(w), Height: uint32(h)} vkSwapchain, err = vkDevice.CreateSwapchain(vk.SwapchainConfig{ @@ -534,6 +538,10 @@ func main() { } if resized { if err := recreateSwapChain(); err != nil { + if errors.Is(err, errMinimized) { + resized = true + continue + } panic(err) } resized = false @@ -542,6 +550,10 @@ func main() { imageIndex, r := vkDevice.AcquireNextImage(vkSwapchain, imageAvailable, ^uint64(0)) if r == vk.ErrorOutOfDateKHR || r == vk.SuboptimalKHR { if err := recreateSwapChain(); err != nil { + if errors.Is(err, errMinimized) { + resized = true + continue + } panic(err) } continue @@ -643,6 +655,10 @@ func main() { r = vkQueue.Present(vkSwapchain, imageIndex, renderFinished) if r == vk.ErrorOutOfDateKHR || r == vk.SuboptimalKHR { if err := recreateSwapChain(); err != nil { + if errors.Is(err, errMinimized) { + resized = true + continue + } panic(err) } continue