From Ryan Kawicki, added removal of TXPArchive from ReaderWriterTXP when the TXPNode destructs to fix memory consumption issue relating to leaving unused archives in memory.

This commit is contained in:
Robert Osfield
2010-02-02 11:16:10 +00:00
parent 2d91b15489
commit 3a2cd32ea5
3 changed files with 27 additions and 1 deletions

View File

@@ -4,6 +4,8 @@
#include <osg/Timer>
#include <osg/MatrixTransform>
#include <osgUtil/CullVisitor>
#include <osgDB/Registry>
#include <osgDB/ReaderWriter>
#include <iostream>
#include <vector>
@@ -13,7 +15,7 @@
#include "TileMapper.h"
#include "TXPNode.h"
#include "TXPPagedLOD.h"
#include "ReaderWriterTXP.h"
using namespace txp;
@@ -78,6 +80,22 @@ _originY(txpNode._originY)
TXPNode::~TXPNode()
{
if (_archive.get())
{
if (osgDB::ReaderWriter * rw =
osgDB::Registry::instance()->getReaderWriterForExtension("txp"))
{
if (ReaderWriterTXP * rwTXP =
dynamic_cast< ReaderWriterTXP * >(rw))
{
const int id = _archive->getId();
if (!rwTXP->removeArchive(id))
{
TXPNodeERROR("Failed to remove archive ") << id << std::endl;
}
}
}
}
}
TXPArchive* TXPNode::getArchive()