diff --git a/lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp b/lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp index d71fce1fcd6..955b1694dd3 100644 --- a/lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp +++ b/lib/irrlicht/source/Irrlicht/CIrrDeviceSDL.cpp @@ -18,6 +18,7 @@ #include #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(VideoDriver); if (h) h->clearGLExtensions(); +#endif +#ifdef _IRR_COMPILE_WITH_OGLES2_ + irr::video::COGLES2Driver* es2 = dynamic_cast(VideoDriver); + if (es2) { + es2->cleanUp(); + } #endif GE::GEVulkanDriver* gevk = dynamic_cast(VideoDriver); if (gevk) diff --git a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp index dfc96b00ed0..68ee9a4dd9c 100644 --- a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp +++ b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp @@ -122,9 +122,7 @@ namespace video //! destructor COGLES2Driver::~COGLES2Driver() { - deleteMaterialRenders(); - delete MaterialRenderer2D; - deleteAllTextures(); + cleanUp(); if (BridgeCalls) delete BridgeCalls; diff --git a/lib/irrlicht/source/Irrlicht/COGLES2Driver.h b/lib/irrlicht/source/Irrlicht/COGLES2Driver.h index 0e8ccb635c1..eb1f9f7001f 100644 --- a/lib/irrlicht/source/Irrlicht/COGLES2Driver.h +++ b/lib/irrlicht/source/Irrlicht/COGLES2Driver.h @@ -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;