fennec
Loading...
Searching...
No Matches
window_manager.h
Go to the documentation of this file.
1// =====================================================================================================================
2// fennec, a free and open source game engine
3// Copyright © 2025 Medusa Slockbower
4//
5// This program is free software: you can redistribute it and/or modify
6// it under the terms of the GNU General Public License as published by
7// the Free Software Foundation, either version 3 of the License, or
8// (at your option) any later version.
9//
10// This program is distributed in the hope that it will be useful,
11// but WITHOUT ANY WARRANTY; without even the implied warranty of
12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13// GNU General Public License for more details.
14//
15// You should have received a copy of the GNU General Public License
16// along with this program. If not, see <https://www.gnu.org/licenses/>.
17// =====================================================================================================================
18
30
31
32#ifndef FENNEC_PLATFORM_WINDOWMANAGER_H
33#define FENNEC_PLATFORM_WINDOWMANAGER_H
34
35#include <fennec/platform/interface/fwd.h>
36
37#include <fennec/memory/pointers.h>
40
41namespace fennec
42{
43
44class window_manager {
45// Definitions =========================================================================================================
46private:
47 using server_t = unique_ptr<display_server>;
48 using window_t = unique_ptr<window>;
49 using window_pool_t = object_pool<window_t>;
50
51
52// Constructors & Destructor ===========================================================================================
53public:
54 window_manager(platform* platform);
55 ~window_manager();
56
57 window_manager(const window_manager&) = delete;
58
59
60// Thread-Specific Functions ===========================================================================================
61
62 void initialize();
63 void shutdown();
64 void dispatch();
65
66
67// Thread-Safe Functions ===============================================================================================
68
69
70
71private:
72 thread::id _thread;
73 platform* _platform;
74 server_t _display;
75 window_pool_t _windows;
76};
77
78} // fennec
79
80#endif // FENNEC_PLATFORM_WINDOWMANAGER_H
A header containing the definition for a pool of objects associated by ids.