#include "window.h" #include namespace Donut { static bool s_glfw_initialized = false; static uint32_t s_glfw_window_count = 0; Window::Window(const std::string& title, int width, int height) : m_title(title), m_width(width), m_height(height) { if (!s_glfw_initialized) { glfwInit(); s_glfw_initialized = true; } m_window = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr); glfwMakeContextCurrent(m_window); s_glfw_window_count++; } Window::~Window() { glfwDestroyWindow(m_window); s_glfw_window_count--; if (s_glfw_window_count == 0) { glfwTerminate(); s_glfw_initialized = false; } } void Window::on_update() const { glfwPollEvents(); glfwSwapBuffers(m_window); } bool Window::should_close() const { return glfwWindowShouldClose(m_window); } }