• Create Account

### #ActualShorty421

Posted 15 March 2012 - 02:25 AM

Hey guys, I have a program with a crazy memory leak (leaking ~20mb/s).
I've found the problem, but I can't seem to find a working alternative.

Basically, I have some code which runs on every third tick:

void Draw()
{
scenebmp.render(bmp, false); //render the current scene to a bitmap image
sceneSurface = new Surface(bmp); //create a new surface from updated bitmap image
window.BlitToScreen(sceneSurface); //send the new surface to the 'window' class to be blitted to the screen
}

'sceneSurface = new Surface(bmp);' is the line which is causing the leak. I have tried putting
sceneSurface.Dispose();
at the end of the code block, but it doesn't seem to have any effect.

What would be the best way to fix this?
Is there a way to update the Surface from a bitmap without creating a new Surface?

Thanks for any assistance.

EDIT: http://pastebin.com/3We9UdVz is the file which contains the problem
EDIT2: Solved by taking a different approach to rendering.

### #2Shorty421

Posted 15 March 2012 - 01:11 AM

Hey guys, I have a program with a crazy memory leak (leaking ~20mb/s).
I've found the problem, but I can't seem to find a working alternative.

Basically, I have some code which runs on every third tick:

void Draw()
{
scenebmp.render(bmp, false); //render the current scene to a bitmap image
sceneSurface = new Surface(bmp); //create a new surface from updated bitmap image
window.BlitToScreen(sceneSurface); //send the new surface to the 'window' class to be blitted to the screen
}

'sceneSurface = new Surface(bmp);' is the line which is causing the leak. I have tried putting
sceneSurface.Dispose();
at the end of the code block, but it doesn't seem to have any effect.

What would be the best way to fix this?
Is there a way to update the Surface from a bitmap without creating a new Surface?

Thanks for any assistance.

EDIT: http://pastebin.com/3We9UdVz is the file which contains the problem

### #1Shorty421

Posted 15 March 2012 - 12:39 AM

Hey guys, I have a program with a crazy memory leak (leaking ~20mb/s).
I've found the problem, but I can't seem to find a working alternative.

Basically, I have some code which runs on every third tick:

void Draw()
{
scenebmp.render(bmp, false); //render the current scene to a bitmap image
sceneSurface = new Surface(bmp); //create a new surface from updated bitmap image
window.BlitToScreen(sceneSurface); //send the new surface to the 'window' class to be blitted to the screen
}

'sceneSurface = new Surface(bmp);' is the line which is causing the leak. I have tried putting
sceneSurface.Dispose();
at the end of the code block, but it doesn't seem to have any effect.

What would be the best way to fix this?
Is there a way to update the Surface from a bitmap without creating a new Surface?

Thanks for any assistance.

PARTNERS