- properly cleanup models in g3dviewer to fix shutdown bug
This commit is contained in:
parent
7f0b199929
commit
b1455c0e33
|
@ -1 +1 @@
|
|||
Subproject commit b1c0f0cc18cdd2311b581b44e7ae161317438c93
|
||||
Subproject commit 5517be4d27fd05ff4379b23c84fe8f6aed183f0b
|
|
@ -299,6 +299,9 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
|
|||
this->appPath = appPath;
|
||||
Properties::setApplicationPath(executable_path(appPath));
|
||||
|
||||
lastanim = 0;
|
||||
model= NULL;
|
||||
|
||||
Config &config = Config::getInstance();
|
||||
//getGlPlatformExtensions();
|
||||
|
||||
|
@ -313,8 +316,6 @@ MainWindow::MainWindow( std::pair<string,vector<string> > unitToLoad,
|
|||
glCanvas->SetCurrent();
|
||||
#endif
|
||||
|
||||
lastanim = 0;
|
||||
model= NULL;
|
||||
unitPath = unitToLoad;
|
||||
|
||||
if(modelPath != "") {
|
||||
|
@ -555,8 +556,9 @@ MainWindow::~MainWindow(){
|
|||
delete fileDialog;
|
||||
fileDialog = NULL;
|
||||
|
||||
delete model;
|
||||
model = NULL;
|
||||
//delete model;
|
||||
//model = NULL;
|
||||
if(renderer) renderer->end();
|
||||
|
||||
delete renderer;
|
||||
renderer = NULL;
|
||||
|
@ -742,7 +744,6 @@ void MainWindow::onClose(wxCloseEvent &event){
|
|||
particleSplashPathList.clear(); // as above
|
||||
|
||||
if(timer) timer->Stop();
|
||||
if(renderer) renderer->end();
|
||||
|
||||
unitParticleSystems.clear();
|
||||
unitParticleSystemTypes.clear();
|
||||
|
@ -752,8 +753,9 @@ void MainWindow::onClose(wxCloseEvent &event){
|
|||
splashParticleSystems.clear(); // as above
|
||||
splashParticleSystemTypes.clear();
|
||||
|
||||
delete model;
|
||||
model = NULL;
|
||||
//delete model;
|
||||
//model = NULL;
|
||||
if(renderer) renderer->end();
|
||||
|
||||
//printf("OnClose about to END\n");
|
||||
//fflush(stdout);
|
||||
|
@ -1112,7 +1114,9 @@ void MainWindow::onMenuFileClearAll(wxCommandEvent &event) {
|
|||
splashParticleSystems.clear(); // as above
|
||||
splashParticleSystemTypes.clear();
|
||||
|
||||
delete model;
|
||||
//delete model;
|
||||
//model = NULL;
|
||||
if(model != NULL && renderer != NULL) renderer->endModel(rsGlobal, model);
|
||||
model = NULL;
|
||||
|
||||
loadUnit("","");
|
||||
|
@ -1284,7 +1288,9 @@ void MainWindow::loadModel(string path) {
|
|||
//printf("Loading model [%s] %u of " MG_SIZE_T_SPECIFIER "\n",modelPath.c_str(),idx, this->modelPathList.size());
|
||||
|
||||
if(timer) timer->Stop();
|
||||
delete model;
|
||||
//delete model;
|
||||
if(model != NULL && renderer != NULL) renderer->endModel(rsGlobal, model);
|
||||
model = NULL;
|
||||
model = renderer? renderer->newModel(rsGlobal, modelPath): NULL;
|
||||
|
||||
statusbarText = getModelInfo();
|
||||
|
@ -1859,7 +1865,7 @@ void MainWindow::onTimer(wxTimerEvent &event) {
|
|||
string MainWindow::getModelInfo() {
|
||||
string str;
|
||||
|
||||
if(model!=NULL){
|
||||
if(model != NULL) {
|
||||
str+= "Meshes: "+intToStr(model->getMeshCount());
|
||||
str+= ", Vertices: "+intToStr(model->getVertexCount());
|
||||
str+= ", Triangles: "+intToStr(model->getTriangleCount());
|
||||
|
|
|
@ -200,6 +200,10 @@ Model * Renderer::newModel(ResourceScope rs,const string &path,bool deletePixMap
|
|||
return modelManager->newModel(path,deletePixMapAfterLoad,loadedFileList,sourceLoader);
|
||||
}
|
||||
|
||||
void Renderer::endModel(ResourceScope rs,Model *model) {
|
||||
modelManager->endModel(model);
|
||||
}
|
||||
|
||||
void Renderer::init() {
|
||||
assertGl();
|
||||
|
||||
|
|
|
@ -147,6 +147,7 @@ public:
|
|||
Texture2D * getNewTexture2D();
|
||||
|
||||
Model *newModel(ResourceScope rs,const string &path,bool deletePixMapAfterLoad=false,std::map<string,vector<pair<string, string> > > *loadedFileList=NULL, string *sourceLoader=NULL);
|
||||
void endModel(ResourceScope rs,Model *model);
|
||||
Texture2D *newTexture2D(ResourceScope rs) { return getNewTexture2D(); }
|
||||
|
||||
void initTextureManager();
|
||||
|
|
Loading…
Reference in New Issue