From e7d5cf920e6aa9e067bbec40734c5e6a568819e2 Mon Sep 17 00:00:00 2001 From: Jiga228 Date: Sun, 5 Oct 2025 14:25:01 +0700 Subject: [PATCH] Move destroy window and glfw to CoreInstnace from render engine --- Core/Core/CoreInstance.cpp | 17 ++++++++++++----- Core/Core/RenderEngine.cpp | 4 ---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Core/Core/CoreInstance.cpp b/Core/Core/CoreInstance.cpp index e6fb345..fdb8fe0 100644 --- a/Core/Core/CoreInstance.cpp +++ b/Core/Core/CoreInstance.cpp @@ -63,14 +63,18 @@ CoreInstance::CoreInstance() window_ = glfwCreateWindow(800, 600, main_config_.game_name.c_str(), nullptr, nullptr); if (window_ == nullptr) { - glfwTerminate(); - throw std::runtime_error("Fail create window"); + std::cout << "[!] Init render engine: Fail create window\n"; + return; + } + try { + render_engine_ = new RenderEngine(*this, window_); + } catch (const std::exception& e) + { + std::cout << "[!] Init render engine: " << e.what() << '\n'; + throw; } - render_engine_ = new RenderEngine(*this, window_); game_ = GameFactory(*this); - if (game_ == nullptr) - throw std::runtime_error("Fail create game instance!"); } CoreInstance::~CoreInstance() @@ -81,6 +85,9 @@ CoreInstance::~CoreInstance() delete render_engine_; delete game_; + + glfwDestroyWindow(window_); + glfwTerminate(); } void CoreInstance::start() diff --git a/Core/Core/RenderEngine.cpp b/Core/Core/RenderEngine.cpp index d4c4d5c..ccc8ec1 100644 --- a/Core/Core/RenderEngine.cpp +++ b/Core/Core/RenderEngine.cpp @@ -972,10 +972,6 @@ RenderEngine::~RenderEngine() if (instance_ != VK_NULL_HANDLE) vkDestroyInstance(instance_, nullptr); - - if (window_ != nullptr) - glfwDestroyWindow(window_); - glfwTerminate(); } void RenderEngine::start()