- Started setting up a thread safe window manager

- Created thread & atomic structures
This commit is contained in:
2025-12-17 01:11:28 -05:00
parent 520a0e1363
commit aee4e340dd
41 changed files with 2179 additions and 428 deletions

View File

@@ -29,25 +29,22 @@ platform::platform() {
}
void platform::initialize() {
if (wmanager) {
return;
}
logger::log(format("Initializing platform {}", get_type().name()));
display_server::entrylist_t display_servers = display_server::get_type_list();
while (not display_servers.empty()) {
display_server::entry it = display_servers.front();
display_servers.pop();
unique_ptr<display_server> server = unique_ptr(it.ctor(this));
server->connect();
if (server->connected()) {
logger::log(format("Selected {} for the display server.", server->get_type().name()));
display = move(server);
break;
}
}
// Setup Window Manager
wmanager = make_unique<window_manager>(this);
wmanager->initialize();
}
void platform::shutdown() {
display.reset();
// Cleanup Window Manager
wmanager->shutdown();
wmanager.reset();
}
}

View File

@@ -29,14 +29,20 @@
///
#include <fennec/platform/interface/window.h>
#include <fennec/platform/interface/display_server.h>
#include <fennec/renderers/interface/gfxsurface.h>
#include <fennec/platform/interface/display_server.h>
namespace fennec
{
window* window::get_parent() const {
return server->get_window(cfg.parent);
window::window(display_server* server, const config& conf, window* parent)
: server(server), parent(parent)
, cfg(conf), state(), root(nullptr) {
state.mode = conf.mode;
}
window::~window() {
}
void window::begin_frame() {