Browse Source

Fix a crash on quit if a non-default shader is active when quitting.

--HG--
branch : minor
Alex Szpakowski 8 years ago
parent
commit
1b3745b58b
1 changed files with 8 additions and 4 deletions
  1. 8 4
      src/modules/graphics/Graphics.cpp

+ 8 - 4
src/modules/graphics/Graphics.cpp

@@ -128,10 +128,10 @@ Graphics::Graphics()
 
 Graphics::~Graphics()
 {
-	states.clear();
-
-	defaultFont.set(nullptr);
-
+	// Clean up standard shaders before the active shader. If we do it after,
+	// the active shader may try to activate a standard shader when deactivating
+	// itself, which will cause problems since it calls Graphics methods in the
+	// Graphics destructor.
 	for (int i = 0; i < Shader::STANDARD_MAX_ENUM; i++)
 	{
 		if (Shader::standardShaders[i])
@@ -141,6 +141,10 @@ Graphics::~Graphics()
 		}
 	}
 
+	states.clear();
+
+	defaultFont.set(nullptr);
+
 	delete streamBufferState.vb[0];
 	delete streamBufferState.vb[1];
 	delete streamBufferState.indexBuffer;