X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2Fmain.cpp;h=c50e893b67ef572a4457bd61fcc4dcd3d36167b6;hb=599983e84cffd250055557d78b4d8b4af84cb092;hp=09f6960be03b6dfd8ca9b4100984c542001d433a;hpb=ff29f47f799d99cec7c2a6aa2cf818da2b931fc5;p=lugaru.git diff --git a/Source/main.cpp b/Source/main.cpp index 09f6960..c50e893 100644 --- a/Source/main.cpp +++ b/Source/main.cpp @@ -42,7 +42,6 @@ using namespace Game; #endif extern float multiplier; -extern float sps; extern float realmultiplier; extern int slomo; extern bool cellophane; @@ -64,59 +63,6 @@ set> resolutions; // statics/globals (internal only) ------------------------------------------ -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4273) -#endif - -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -#define GL_FUNC(ret,fn,params,call,rt) \ - extern "C" { \ - static ret (GLAPIENTRY *p##fn) params = NULL; \ - ret GLAPIENTRY fn params { rt p##fn call; } \ - } -#include "glstubs.h" -#undef GL_FUNC -#endif // __MINGW32__ - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -static bool lookup_glsym(const char *funcname, void **func) -{ - *func = SDL_GL_GetProcAddress(funcname); - if (*func == NULL) { - fprintf(stderr, "Failed to find OpenGL symbol \"%s\"\n", funcname); - return false; - } - return true; -} - -static bool lookup_all_glsyms(void) -{ - bool retval = true; -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -#define GL_FUNC(ret,fn,params,call,rt) \ - if (!lookup_glsym(#fn, (void **) &p##fn)) retval = false; -#include "glstubs.h" -#undef GL_FUNC -#endif // __MINGW32__ - return retval; -} - -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -static void GLAPIENTRY glDeleteTextures_doNothing(GLsizei n, const GLuint *textures) -{ - // no-op. -} -#endif // __MINGW32__ - -#ifdef MessageBox -#undef MessageBox -#endif -#define MessageBox(hwnd,text,title,flags) STUBBED("msgbox") - // Menu defs int kContextWidth; @@ -243,9 +189,6 @@ bool SetUp () fprintf(stderr, "Failed to load config, creating default\n"); SaveSettings(); } - if (kBitsPerPixel != 32 && kBitsPerPixel != 16) { - kBitsPerPixel = 16; - } if (SDL_GL_LoadLibrary(NULL) == -1) { fprintf(stderr, "SDL_GL_LoadLibrary() failed: %s\n", SDL_GetError()); @@ -327,12 +270,6 @@ bool SetUp () SDL_GL_MakeCurrent(sdlwindow, glctx); - if (!lookup_all_glsyms()) { - fprintf(stderr, "Missing required OpenGL functions.\n"); - SDL_Quit(); - return false; - } - int dblbuf = 0; if ((SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER, &dblbuf) == -1) || (!dblbuf)) { @@ -521,16 +458,9 @@ void CleanUp (void) { LOGFUNC; - SDL_Quit(); -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -#define GL_FUNC(ret,fn,params,call,rt) p##fn = NULL; -#include "glstubs.h" -#undef GL_FUNC - // cheat here...static destructors are calling glDeleteTexture() after - // the context is destroyed and libGL unloaded by SDL_Quit(). - pglDeleteTextures = glDeleteTextures_doNothing; -#endif // __MINGW32__ + delete[] commandLineOptionsBuffer; + SDL_Quit(); } // -------------------------------------------------------------------------- @@ -655,6 +585,7 @@ const option::Descriptor usage[] = }; option::Option commandLineOptions[commandLineOptionsNumber]; +option::Option* commandLineOptionsBuffer; int main(int argc, char **argv) { @@ -664,21 +595,24 @@ int main(int argc, char **argv) std::cerr << "Found incorrect command line option number" << std::endl; return 1; } - option::Option buffer[stats.buffer_max]; - option::Parser parse(true, usage, argc, argv, commandLineOptions, buffer); + commandLineOptionsBuffer = new option::Option[stats.buffer_max]; + option::Parser parse(true, usage, argc, argv, commandLineOptions, commandLineOptionsBuffer); if (parse.error()) { + delete[] commandLineOptionsBuffer; return 1; } if (commandLineOptions[HELP]) { option::printUsage(std::cout, usage); + delete[] commandLineOptionsBuffer; return 0; } if (option::Option* opt = commandLineOptions[UNKNOWN]) { std::cerr << "Unknown option: " << opt->name << "\n"; option::printUsage(std::cerr, usage); + delete[] commandLineOptionsBuffer; return 1; } @@ -693,8 +627,10 @@ int main(int argc, char **argv) { newGame(); - if (!SetUp ()) + if (!SetUp ()) { + delete[] commandLineOptionsBuffer; return 42; + } bool gameDone = false; bool gameFocused = true; @@ -746,7 +682,7 @@ int main(int argc, char **argv) LOG(e); - MessageBox(g_windowHandle, error.what(), "ERROR", MB_OK | MB_ICONEXCLAMATION); + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Exception catched", error.what(), NULL); return -1; }