From 69fdbb8f454c1e37883e0c9c41e16deecd90f3a4 Mon Sep 17 00:00:00 2001 From: Benau Date: Fri, 14 Apr 2023 09:56:06 +0800 Subject: [PATCH] Add missing exception handling in shader loading threads --- lib/graphics_engine/src/ge_vulkan_shader_manager.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/graphics_engine/src/ge_vulkan_shader_manager.cpp b/lib/graphics_engine/src/ge_vulkan_shader_manager.cpp index dfff09c0a..9ddcd68b8 100644 --- a/lib/graphics_engine/src/ge_vulkan_shader_manager.cpp +++ b/lib/graphics_engine/src/ge_vulkan_shader_manager.cpp @@ -126,7 +126,14 @@ void GEVulkanShaderManager::loadAllShaders() GEVulkanCommandLoader::addMultiThreadingCommand( [pair, kind, filename]() { - pair->second = loadShader(kind, filename); + try + { + pair->second = loadShader(kind, filename); + } + catch (std::exception& e) + { + printf("%s", e.what()); + } pair->first.unlock(); }); } @@ -272,6 +279,8 @@ VkShaderModule GEVulkanShaderManager::getShader(const std::string& filename) auto it = g_shaders.at(filename); it->first.lock(); it->first.unlock(); + if (it->second == VK_NULL_HANDLE) + throw std::runtime_error(std::string("Missing shader ") + filename); return it->second; } // getShader