aboutsummaryrefslogtreecommitdiff
path: root/src/core/window_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/window_manager.h')
-rw-r--r--src/core/window_manager.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/window_manager.h b/src/core/window_manager.h
new file mode 100644
index 0000000..d3a915c
--- /dev/null
+++ b/src/core/window_manager.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "core/window.h"
+
+#include <memory>
+#include <vector>
+
+namespace Hsdbg
+{
+ class WindowManager
+ {
+ public:
+ WindowManager();
+ ~WindowManager();
+
+ WindowManager(const WindowManager&) = delete;
+ WindowManager(WindowManager&&) = delete;
+ auto operator=(const WindowManager&) -> WindowManager& = delete;
+ auto operator=(WindowManager&&) -> WindowManager& = delete;
+
+ static auto get() -> WindowManager&;
+
+ auto create_window(const WindowSpec& spec) -> Window&;
+ auto destroy_window(const Window& window) -> void;
+
+ auto poll_events() -> void;
+ auto wait_events(double timeout_seconds) -> void;
+
+ auto window_count() const -> size_t { return m_windows.size(); }
+
+ private:
+ static auto on_error(int code, const char* description) -> void;
+
+ static WindowManager* s_instance;
+
+ std::vector<std::unique_ptr<Window>> m_windows;
+ };
+}