fix: Crash on Wayland when glfwTerminate() gets called more than once

This commit is contained in:
WerWolv
2025-06-28 13:48:48 +02:00
parent 2a8dd0873b
commit 288f8ee42f
2 changed files with 10 additions and 18 deletions

View File

@@ -11,6 +11,12 @@
namespace hex::init {
int runImHex() {
// Initialize GLFW
if (!glfwInit()) {
log::fatal("Failed to initialize GLFW!");
std::abort();
}
ON_SCOPE_EXIT { glfwTerminate(); };
bool shouldRestart = false;
do {
@@ -20,6 +26,7 @@
shouldRestart = true;
});
// Splash window
{
auto splashWindow = initializeImHex();
// Draw the splash window while tasks are running
@@ -29,19 +36,10 @@
handleFileOpenRequest();
}
// Main window
{
// Initialize GLFW
if (!glfwInit()) {
log::fatal("Failed to initialize GLFW!");
std::abort();
}
ON_SCOPE_EXIT { glfwTerminate(); };
// Main window
{
Window window;
window.loop();
}
Window window;
window.loop();
deinitializeImHex();
}

View File

@@ -425,11 +425,6 @@ namespace hex::init {
log::error("GLFW Error [{}] : {}", errorCode, desc);
});
if (!glfwInit()) {
log::fatal("Failed to initialize GLFW!");
std::exit(EXIT_FAILURE);
}
// Configure used OpenGL version
#if defined(OS_MACOS)
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
@@ -585,7 +580,6 @@ namespace hex::init {
void WindowSplash::exitGLFW() const {
glfwDestroyWindow(m_window);
glfwTerminate();
}
void WindowSplash::exitImGui() const {