Fixed window not properly disposing raylib and OpenGL when closing. (#59)

Closing the window with the X button will not close it immediately during the rendering of a frame, causing it to actually crash, but will set the engine in a pending state until it finishes the current frame.
This commit is contained in:
MaikelChan 2022-03-24 19:48:22 +01:00 committed by GitHub
parent 2722b688be
commit 3ab0c45bdb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 3 deletions

View File

@ -149,7 +149,7 @@ void OTRGame::draw() {
DrawTexture(titleTex, windowSize.x / 2 - titleTex.width / 2, titlebar.height / 2 - titleTex.height / 2, WHITE);
if (UIUtils::GuiIcon("Exit", windowSize.x - 36, titlebar.height / 2 - 10) && (extracting && currentStep.find("Done") != std::string::npos || !extracting)) {
CloseWindow();
closeRequested = true;
}
BeginMode3D(camera);

View File

@ -19,6 +19,8 @@ public:
void update();
void draw();
void exit();
inline bool CloseRequested() { return closeRequested; }
protected:
void LoadTexture(const std::string& name, const std::string& path) {
const Image tmp = LoadImage(path.c_str());
@ -32,6 +34,9 @@ protected:
SetTextureFilter(font.texture, TEXTURE_FILTER_POINT);
Fonts[name] = font;
}
private:
bool closeRequested = false;
};
extern OTRGame* Game;

View File

@ -17,7 +17,7 @@ void UpdateDrawFrame(void) {
}
int main() {
constexpr Vector2 windowSize = Vector2(400, 200);
constexpr Vector2 windowSize = Vector2(400, 200);
SetConfigFlags(FLAG_VSYNC_HINT);
SetConfigFlags(FLAG_WINDOW_HIGHDPI);
SetConfigFlags(FLAG_WINDOW_UNDECORATED);
@ -32,7 +32,7 @@ int main() {
Game = new OTRGame();
Game->preload();
Game->init();
while(!WindowShouldClose()) {
while(!WindowShouldClose() && !Game->CloseRequested()) {
UpdateDrawFrame();
}
CloseWindow();