It's been a tough week at my job and I didn't have much time for testing OD and finding bugs. I think I've found a way to bypass the memory eating problem I had. As suggested by paul424 here (thanks pal!) the issue was caused by the CullingQuad class defined in QuadTree.h. I looked in the the code for every line in which this class was used and in the end I figured out that if you comment this line:
- {l Code}: {l Select All Code}
tracingCullingQuad->moveEntryDelta(this,get2dPosition());
So I was wondering what is the CullingQuad class used for. I have no idea about graphics but I researched it a little and I understand its purpose is to track the position of the creatures in the map so they are not rendered in screen if the camera don't see them or if they are behind another object, like a wall. Then I found that Ogre seems to do this already without any modification. It has a pyramid that represents the field of view of the camera. Every object in that pyramid gets rendered, while those that are outside are not, thus saving rendering time. They call this a "frustum" (a pyramid that has had its top cut apparently? Sorry, English is not my mother language). I found some info here and here.
I haven't found any performance issues running the game this way. In fact my laptop has this nVidia Optimus technology (now pretty well supported in GNU/Linux thanks to the bumblebee project and primus, yeah Transformers, you know ) that switches between an Intel integrated card (mostly useless for games) and a more powerful nVidia chip. For OD I feel no difference between them as it runs perfectly smooth with the Intel chip.
Regards