diff --git a/source/glest_game/graphics/renderer.cpp b/source/glest_game/graphics/renderer.cpp index 74f1e176..dfa105af 100644 --- a/source/glest_game/graphics/renderer.cpp +++ b/source/glest_game/graphics/renderer.cpp @@ -149,6 +149,7 @@ Renderer::Renderer() { this->allowRenderUnitTitles = false; this->menu = NULL; this->game = NULL; + list2d = 0; showDebugUI = false; showDebugUILevel = debugui_fps; modelRenderer = NULL; @@ -445,13 +446,24 @@ void Renderer::end() { mapSurfaceData.clear(); //delete resources - modelManager[rsGlobal]->end(); - textureManager[rsGlobal]->end(); - fontManager[rsGlobal]->end(); - particleManager[rsGlobal]->end(); + if(modelManager[rsGlobal]) { + modelManager[rsGlobal]->end(); + } + if(textureManager[rsGlobal]) { + textureManager[rsGlobal]->end(); + } + if(fontManager[rsGlobal]) { + fontManager[rsGlobal]->end(); + } + if(particleManager[rsGlobal]) { + particleManager[rsGlobal]->end(); + } //delete 2d list - glDeleteLists(list2d, 1); + if(list2d > 0) { + glDeleteLists(list2d, 1); + list2d = 0; + } } void Renderer::endGame() { diff --git a/source/glest_game/main/main.cpp b/source/glest_game/main/main.cpp index 65834ea8..11044393 100644 --- a/source/glest_game/main/main.cpp +++ b/source/glest_game/main/main.cpp @@ -168,6 +168,7 @@ void fatal(const char *s, ...) // failure exit program = NULL; // END + SDL_Quit(); exit(EXIT_FAILURE); } @@ -413,6 +414,7 @@ public: //printf("In [%s::%s Line: %d] [%s] gameInitialized = %d\n",__FILE__,__FUNCTION__,__LINE__,msg,gameInitialized); cleanupProcessObjects(); + SDL_Quit(); exit(-1); } @@ -437,6 +439,7 @@ public: // END cleanupProcessObjects(); + SDL_Quit(); exit(-1); } @@ -1814,8 +1817,8 @@ __try { #endif int result = glestMain(argc, argv); - cleanupProcessObjects(); + SDL_Quit(); return result; #ifdef WIN32_STACK_TRACE diff --git a/source/shared_lib/include/platform/sdl/platform_main.h b/source/shared_lib/include/platform/sdl/platform_main.h index 4625b850..73f36640 100644 --- a/source/shared_lib/include/platform/sdl/platform_main.h +++ b/source/shared_lib/include/platform/sdl/platform_main.h @@ -21,7 +21,6 @@ std::cerr << "Couldn't initialize SDL: " << SDL_GetError() << "\n"; \ return 1; \ } \ - atexit(SDL_Quit); \ SDL_EnableUNICODE(1); \ int result = X(argc, argv); \ return result; \ diff --git a/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp b/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp index fcfad3c3..4413c81a 100644 --- a/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp +++ b/source/shared_lib/sources/graphics/gl/model_renderer_gl.cpp @@ -61,7 +61,7 @@ void ModelRendererGl::begin(bool renderNormals, bool renderTextures, bool render glEnable(GL_POLYGON_OFFSET_FILL); //glEnable(GL_POLYGON_OFFSET_LINE); //glEnable(GL_POLYGON_OFFSET_POINT); - glPolygonOffset(1.0f, 1.0f); + glPolygonOffset(0.005f, 0.0f); glEnableClientState(GL_VERTEX_ARRAY);