aquire and release
This commit is contained in:
@@ -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;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user