X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FOpenGL_Windows.cpp;h=17766dbb66ead777eb92cc6700c692949ce4f1f6;hb=f415499bb932770841f668fb6dc1ea6c76cbf494;hp=30b0312670ba367bb8248a17105cc0dc19318be1;hpb=982282c738f6f48e0c1e8ad9156557b6930cbfa7;p=lugaru.git diff --git a/Source/OpenGL_Windows.cpp b/Source/OpenGL_Windows.cpp index 30b0312..17766db 100644 --- a/Source/OpenGL_Windows.cpp +++ b/Source/OpenGL_Windows.cpp @@ -142,23 +142,22 @@ typedef struct tagPOINT { #include "glstubs.h" #undef GL_FUNC -static bool lookup_glsym(const char *funcname, void **func, const char *libname) +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\" in \"%s\"\n", - funcname, libname); + fprintf(stderr, "Failed to find OpenGL symbol \"%s\"\n", funcname); return false; } return true; } -static bool lookup_all_glsyms(const char *libname) +static bool lookup_all_glsyms(void) { bool retval = true; #define GL_FUNC(ret,fn,params,call,rt) \ - if (!lookup_glsym(#fn, (void **) &p##fn, libname)) retval = false; + if (!lookup_glsym(#fn, (void **) &p##fn)) retval = false; #include "glstubs.h" #undef GL_FUNC return retval; @@ -873,16 +872,12 @@ Boolean SetUp (Game & game) return false; } - const char *libname = "libGL.so.1"; // !!! FIXME: Linux specific! - if (SDL_GL_LoadLibrary(libname) == -1) + if (SDL_GL_LoadLibrary(NULL) == -1) { - fprintf(stderr, "SDL_GL_LoadLibrary(\"%s\") failed: %s\n", - libname, SDL_GetError()); + fprintf(stderr, "SDL_GL_LoadLibrary() failed: %s\n", SDL_GetError()); + SDL_Quit(); return false; } - - if (!lookup_all_glsyms(libname)) - return false; } Uint32 sdlflags = SDL_OPENGL; @@ -891,9 +886,6 @@ Boolean SetUp (Game & game) SDL_WM_SetCaption("Lugaru", "lugaru"); - if (!cmdline("nomousegrab")) - SDL_WM_GrabInput(SDL_GRAB_ON); - SDL_ShowCursor(0); if (SDL_SetVideoMode(kContextWidth, kContextHeight, 0, sdlflags) == NULL) @@ -902,6 +894,14 @@ Boolean SetUp (Game & game) return false; } + if (!lookup_all_glsyms()) + { + SDL_Quit(); + return false; + } + + if (!cmdline("nomousegrab")) + SDL_WM_GrabInput(SDL_GRAB_ON); #elif (defined WIN32) //------------------------------------------------------------------ @@ -1393,7 +1393,34 @@ static bool try_launch_browser(const char *browser, const char *url) strcat(dst, " "); strcat(dst, url); } - return(system(buf) == 0); + + #define MAX_BROWSER_ARGS 512 + char *args[MAX_BROWSER_ARGS]; + char *path = NULL; + memset(args, '\0', sizeof (args)); + path = args[0] = strtok(buf, " "); + if (path == NULL) + return false; + + size_t i = 0; + for (i = 1; i < MAX_BROWSER_ARGS; i++) + { + args[i] = strtok(NULL, " "); + if (args[i] == NULL) + break; + } + + if (i == MAX_BROWSER_ARGS) + return false; + #undef MAX_BROWSER_ARGS + + //printf("calling execvp(\"%s\"", path); + //for (i = 0; args[i]; i++) + // printf(", \"%s\"", args[i]); + //printf("); ...\n\n\n"); + + execvp(path, args); + return(false); // exec shouldn't return unless there's an error. } #endif @@ -1643,7 +1670,11 @@ int main(int argc, char **argv) // if(game.registernow){ if(regnow) { + #if PLATFORM_LINUX // (this may not be necessary any more.) + launch_web_browser("http://www.wolfire.com/registerlinux.html"); + #else launch_web_browser("http://www.wolfire.com/registerpc.html"); + #endif } #if PLATFORM_LINUX // (this may not be necessary any more.) @@ -2649,10 +2680,6 @@ static bool load_png(const char *file_name, TGAImageRec &tex) if (!row_pointers) goto png_done; - retval = malloc(width * height * 4); - if (!retval) - goto png_done; - if (!hasalpha) { png_byte *dst = tex.data;