aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorberryboy2012 <berryboy2012@users.noreply.github.com>2023-02-19 21:24:11 +0800
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2023-02-19 14:03:35 -0700
commitb794befb5d9569ee63f00edb716c608d7a3437cf (patch)
treefb48c6f20a07dc522566d6708cbbeb973e51e379
parenta2304cb131353df94812e8a0c537a101e82bf831 (diff)
downloadusermoji-b794befb5d9569ee63f00edb716c608d7a3437cf.tar.xz
Fixed cube.cpp crashing on Windows when minimized.
-rw-r--r--cube/cube.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/cube/cube.cpp b/cube/cube.cpp
index ff24b5d4..141de207 100644
--- a/cube/cube.cpp
+++ b/cube/cube.cpp
@@ -416,6 +416,7 @@ struct Demo {
bool use_break = false;
bool suppress_popups = false;
bool force_errors = false;
+ bool is_minimized = false;
uint32_t current_buffer = 0;
};
@@ -576,8 +577,9 @@ void Demo::cleanup() {
prepared = false;
auto result = device.waitIdle();
VERIFY(result == vk::Result::eSuccess);
-
- destroy_swapchain_related_resources();
+ if (!is_minimized){
+ destroy_swapchain_related_resources();
+ }
// Wait for fences from present operations
for (uint32_t i = 0; i < FRAME_LAG; i++) {
device.destroyFence(fences[i]);
@@ -1558,6 +1560,10 @@ void Demo::prepare() {
prepare_init_cmd();
prepare_buffers();
+ if (is_minimized) {
+ prepared = false;
+ return;
+ }
prepare_depth();
prepare_textures();
prepare_cube_data_buffers();
@@ -1640,6 +1646,12 @@ void Demo::prepare_buffers() {
height = surfCapabilities.currentExtent.height;
}
+ if (width==0||height==0){
+ is_minimized = true;
+ return;
+ } else {
+ is_minimized = false;
+ }
// The FIFO present mode is guaranteed by the spec to be supported
// and to have no tearing. It's a great default present mode to use.
vk::PresentModeKHR swapchainPresentMode = vk::PresentModeKHR::eFifo;
@@ -2341,6 +2353,9 @@ void Demo::destroy_swapchain_related_resources() {
void Demo::resize() {
// Don't react to resize until after first initialization.
if (!prepared) {
+ if(is_minimized) {
+ prepare();
+ }
return;
}