aquire and release
This commit is contained in:
@@ -18,10 +18,9 @@ WindowModule::~WindowModule() {
|
||||
renderer->getCmdList().clear();
|
||||
delete renderer;
|
||||
}
|
||||
for(auto* w : windows) {
|
||||
if(w)
|
||||
delete w;
|
||||
}
|
||||
|
||||
if(window)
|
||||
delete window;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,37 +38,13 @@ void WindowModule::onLoad() {
|
||||
app->registerEvent(Archimedes::WindowFocusLostEvent());
|
||||
app->registerEvent(Archimedes::WindowMovedEvent());
|
||||
|
||||
windows.push_back(new Archimedes::Window([this](Archimedes::Event* e){
|
||||
app->emitEvent(e);
|
||||
}));
|
||||
|
||||
renderer = new Archimedes::Renderer();
|
||||
|
||||
for(auto* window : windows)
|
||||
window->setRenderer(renderer);
|
||||
|
||||
if(!renderer->init()) {
|
||||
std::cout << "Renderer init failed!\n";
|
||||
std::abort();
|
||||
}
|
||||
}
|
||||
|
||||
void WindowModule::run() {
|
||||
|
||||
for(auto* window : windows) {
|
||||
|
||||
if(window->shouldClose()) {
|
||||
app->end();
|
||||
}
|
||||
|
||||
for(auto e : window->getWindowImpl().data.eventList) {
|
||||
app->emitEvent(e);
|
||||
}
|
||||
|
||||
window->getWindowImpl().data.eventList.clear();
|
||||
|
||||
if(window)
|
||||
window->doFrame();
|
||||
}
|
||||
}
|
||||
|
||||
bool WindowModule::onEvent(const Archimedes::Event& e) {
|
||||
@@ -77,10 +52,10 @@ bool WindowModule::onEvent(const Archimedes::Event& e) {
|
||||
unsigned int type = app->getEventType(e);
|
||||
|
||||
if(type == app->getEventType(Archimedes::WindowResizeEvent())) {
|
||||
|
||||
window->getSize(renderer->w, renderer->h);
|
||||
return true;
|
||||
} else if(type == app->getEventType(Archimedes::WindowCloseEvent())) {
|
||||
|
||||
app->stopModule(name);
|
||||
return true;
|
||||
} else if(type == app->getEventType(Archimedes::WindowKeyPressedEvent())) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user