Texture renderer memory leak

Hi,



A leak in the TextureRenderer classes (at least in LWJGLTextureRenderer):

[java]

public void cleanup() {

if (!isSupported) {

return;

}



if (fboID > 0) {

IntBuffer id = BufferUtils.createIntBuffer(1);

id.put(fboID);

id.rewind();

EXTFramebufferObject.glDeleteFramebuffersEXT(id);

}



if (fboIDMS > 0) {

IntBuffer id = BufferUtils.createIntBuffer(1);

id.put(fboIDMS);

id.rewind();

EXTFramebufferObject.glDeleteFramebuffersEXT(id);

}

}

[/java]



Render buffers are not deleted.

The code should be:

[java]

public void cleanup() {

if (!isSupported) {

return;

}



if (fboID > 0) {

IntBuffer id = BufferUtils.createIntBuffer(1);

id.put(fboID);

id.rewind();

EXTFramebufferObject.glDeleteFramebuffersEXT(id);

fboID = 0;

}



if (fboIDMS > 0) {

IntBuffer id = BufferUtils.createIntBuffer(1);

id.put(fboIDMS);

id.rewind();

EXTFramebufferObject.glDeleteFramebuffersEXT(id);

fboIDMS = 0;

}



if (colorRBID > 0) {

IntBuffer id = BufferUtils.createIntBuffer(1);

id.put(colorRBID);

id.rewind();

EXTFramebufferObject.glDeleteRenderbuffersEXT(id);

colorRBID = 0;

}



if (depthRBID > 0) {

IntBuffer id = BufferUtils.createIntBuffer(1);

id.put(depthRBID);

id.rewind();

EXTFramebufferObject.glDeleteRenderbuffersEXT(id);

depthRBID = 0;

}

}



[/java]



:slight_smile:

Hm? What does changing the parameter to 0 change?

Changing the parameter to 0 after the glDelete avoid possibles extra glDelete calls if cleanUp() is called several times but it’s just a coding design detail on my personnal version of LWJGLTextureRenderer…

The important change in this code is the add of glDeleteRenderbuffersEXT() to release the render buffers.