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

Refactor GLFW initialization

parent 1649c93b
Branches master
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