Fix exit crash when built for GLES2 on Linux (#5118)

This commit is contained in:
Icenowy Zheng 2024-06-27 05:06:53 +08:00 committed by GitHub
parent 118cde2498
commit 41a7b804a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 3 deletions

View File

@ -18,6 +18,7 @@
#include <stdlib.h>
#include "SIrrCreationParameters.h"
#include "COpenGLExtensionHandler.h"
#include "COGLES2Driver.h"
#include "guiengine/engine.hpp"
#include "ge_main.hpp"
@ -240,6 +241,12 @@ CIrrDeviceSDL::~CIrrDeviceSDL()
irr::video::COpenGLExtensionHandler* h = dynamic_cast<irr::video::COpenGLExtensionHandler*>(VideoDriver);
if (h)
h->clearGLExtensions();
#endif
#ifdef _IRR_COMPILE_WITH_OGLES2_
irr::video::COGLES2Driver* es2 = dynamic_cast<irr::video::COGLES2Driver*>(VideoDriver);
if (es2) {
es2->cleanUp();
}
#endif
GE::GEVulkanDriver* gevk = dynamic_cast<GE::GEVulkanDriver*>(VideoDriver);
if (gevk)

View File

@ -122,9 +122,7 @@ namespace video
//! destructor
COGLES2Driver::~COGLES2Driver()
{
deleteMaterialRenders();
delete MaterialRenderer2D;
deleteAllTextures();
cleanUp();
if (BridgeCalls)
delete BridgeCalls;

View File

@ -48,6 +48,7 @@ namespace irr
#include "EDriverFeatures.h"
#include "fast_atof.h"
#include "COGLES2ExtensionHandler.h"
#include "COGLES2Renderer2D.h"
class ContextManagerEGL;
@ -397,6 +398,15 @@ namespace video
ContextManagerEGL* getEGLContext() {return EglContext;}
#endif
void cleanUp() {
deleteMaterialRenders();
if (MaterialRenderer2D) {
delete MaterialRenderer2D;
MaterialRenderer2D = NULL;
}
deleteAllTextures();
}
private:
// Bridge calls.
COGLES2CallBridge* BridgeCalls;