=== modified file 'plugins/opengl/include/opengl/shadercache.h' --- plugins/opengl/include/opengl/shadercache.h 2013-01-09 10:45:16 +0000 +++ plugins/opengl/include/opengl/shadercache.h 2013-09-26 16:42:06 +0000 @@ -72,6 +72,7 @@ std::string name; std::string vertexShader; std::string fragmentShader; + bool deleteAfterUse; }; class PrivateShaderCache; === modified file 'plugins/opengl/src/paint.cpp' --- plugins/opengl/src/paint.cpp 2013-06-28 01:10:57 +0000 +++ plugins/opengl/src/paint.cpp 2013-09-26 16:42:06 +0000 @@ -1279,6 +1279,12 @@ priv->vertexBuffer->render (transform, attrib); #endif + for (std::list::const_iterator it = priv->shaders.begin(); it != priv->shaders.end(); ++it) { + if ((*it)->deleteAfterUse) { + delete *it; + } + } + priv->shaders.clear (); texture->disable (); === modified file 'plugins/opengl/src/privatevertexbuffer.h' --- plugins/opengl/src/privatevertexbuffer.h 2012-07-25 09:46:54 +0000 +++ plugins/opengl/src/privatevertexbuffer.h 2013-09-26 16:42:17 +0000 @@ -42,6 +42,7 @@ { public: void virtual set(GLProgram* program) = 0; + virtual ~AbstractUniform() { } }; template < typename T, int C > === modified file 'plugins/opengl/src/shadercache.cpp' --- plugins/opengl/src/shadercache.cpp 2013-01-09 10:45:16 +0000 +++ plugins/opengl/src/shadercache.cpp 2013-09-26 16:42:06 +0000 @@ -130,6 +130,7 @@ shaderData.name = params.id (); shaderData.fragmentShader = createFragmentShader (params); shaderData.vertexShader = createVertexShader (params); + shaderData.deleteAfterUse = false; std::pair ret = shaderMap.insert(std::pair(params,shaderData)); === modified file 'plugins/opengl/src/vertexbuffer.cpp' --- plugins/opengl/src/vertexbuffer.cpp 2013-03-31 19:27:26 +0000 +++ plugins/opengl/src/vertexbuffer.cpp 2013-09-26 16:42:06 +0000 @@ -88,6 +88,11 @@ priv->maxVertices = -1; priv->normalData.clear (); priv->colorData.clear (); + + for (unsigned i = 0; i < priv->uniforms.size(); i++) { + delete priv->uniforms[i]; + } + priv->uniforms.clear (); priv->nTextures = 0; === modified file 'plugins/opengl/src/window.cpp' --- plugins/opengl/src/window.cpp 2013-06-10 08:57:12 +0000 +++ plugins/opengl/src/window.cpp 2013-09-26 16:42:06 +0000 @@ -366,6 +366,7 @@ data->name = name; data->vertexShader = vertex_shader; data->fragmentShader = fragment_shader; + data->deleteAfterUse = true; priv->shaders.push_back(data); }