Skip to content
Snippets Groups Projects
Commit ee64a065 authored by n0F4x's avatar n0F4x
Browse files

Refactor GLFW initialization

parent e771735a
No related branches found
No related tags found
No related merge requests found
......@@ -3,21 +3,35 @@
#include <format>
#include <stdexcept>
[[nodiscard]]
static auto
create_window(const uint16_t width, const uint16_t height, const std::string& title)
-> GLFWwindow*
static auto init_glfw() -> void
{
if (const auto error_code{ glfwInit() }; error_code != GLFW_TRUE) {
if (const int success{ glfwInit() }; success != GLFW_TRUE) {
const char* description{};
const int error_code{ glfwGetError(&description) };
if (description == nullptr) {
throw std::runtime_error{
std::format("glfwInit failed with error code {}", error_code)
};
}
if (const auto result{ std::atexit(glfwTerminate) }; result != 0) {
throw std::runtime_error{ std::format(
"glfwInit failed with error code {} - '{}'", error_code, description
) };
}
if (const int result{ std::atexit(glfwTerminate) }; result != 0) {
throw std::runtime_error{
std::format("std::atexit(glfwTerminate) failed with error code {}", result)
std::format("std::atexit failed with error code {}", result)
};
}
}
[[nodiscard]]
static auto
create_window(const uint16_t width, const uint16_t height, const std::string& title)
-> GLFWwindow*
{
init_glfw();
glfwDefaultWindowHints();
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
......@@ -34,9 +48,7 @@ static auto
auto Window::vulkan_instance_extensions() -> std::span<const char* const>
{
static const std::vector s_extension_names{ []() -> std::vector<const char*> {
if (glfwInit() != GLFW_TRUE) {
return {};
}
init_glfw();
uint32_t count{};
const char** glfw_extension_names{ glfwGetRequiredInstanceExtensions(&count) };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment