aquire and release

This commit is contained in:
2025-04-20 14:58:39 -05:00
parent c6fa731df0
commit d253ebb197
7 changed files with 78 additions and 45 deletions

View File

@@ -25,12 +25,42 @@ class WindowModule : public Archimedes::Module {
//interface for other modules
std::vector<Archimedes::Window*>& getWindow() { return windows; }
Archimedes::Window* aquireWindow() {
if(!window) {
window = new Archimedes::Window([this](Archimedes::Event* e){
app->emitEvent(e);
});
window->setRenderer(renderer);
if(!renderer->init()) {
std::cout << "Renderer init failed!\n";
std::abort();
}
}
windowRefs++;
return window;
}
void releaseWindow(Archimedes::Window* w) {
if(w == window && window != nullptr) {
if(--windowRefs == 0) {
delete window;
window = nullptr;
}
}
}
Archimedes::Renderer* getRenderer() { return renderer; }
private:
std::vector<Archimedes::Window*> windows;
int windowRefs = 0;
Archimedes::Window* window;
Archimedes::Renderer* renderer;
};