From 5ec564b2dd81104ede0ade9e8b25b804e82842be Mon Sep 17 00:00:00 2001
From: Tobias Frisch <tfrisch@uni-koblenz.de>
Date: Sun, 16 May 2021 19:43:21 +0200
Subject: [PATCH] Drop frames to avoid crash!

Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de>
---
 src/vkcv/Core.cpp | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp
index 70f0425f..c91dbf71 100644
--- a/src/vkcv/Core.cpp
+++ b/src/vkcv/Core.cpp
@@ -324,8 +324,17 @@ namespace vkcv
 		uint32_t swapchainImageIndex;
 		m_Context.getDevice().acquireNextImageKHR(m_swapchain.getSwapchain(), 0, nullptr, 
 			m_SyncResources.swapchainImageAcquired, &swapchainImageIndex, {});
-		const uint64_t timeoutPeriodNs = 1000;	// TODO: think if is adequate
-		m_Context.getDevice().waitForFences(m_SyncResources.swapchainImageAcquired, true, timeoutPeriodNs);
+		const uint64_t timeoutPeriodNs = 100000;	// TODO: think if is adequate
+		
+		
+		const auto& result = m_Context.getDevice().waitForFences(m_SyncResources.swapchainImageAcquired, true, timeoutPeriodNs);
+		
+		if (result == vk::Result::eTimeout) {
+			std::cerr << "Drop frame!" << std::endl;
+			m_CommandResources.commandBuffer.end();
+			return; // TODO: image gets dropped... ooops
+		}
+		
 		m_Context.getDevice().resetFences(m_SyncResources.swapchainImageAcquired);
 
 		const auto swapchainImages = m_Context.getDevice().getSwapchainImagesKHR(m_swapchain.getSwapchain());
-- 
GitLab