X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FOpenGL_Windows.cpp;h=a37cdda07b671cc376182fc44b44374f951f3e86;hb=055013bac06c70d04b46bc2e66bde847bdada1d4;hp=226025a7a7a9dba7a193da91fc4cf2ad112cc088;hpb=2a33aa48d0529a058becd257e744d6a5fef301c6;p=lugaru.git diff --git a/Source/OpenGL_Windows.cpp b/Source/OpenGL_Windows.cpp index 226025a..a37cdda 100644 --- a/Source/OpenGL_Windows.cpp +++ b/Source/OpenGL_Windows.cpp @@ -470,6 +470,7 @@ static inline int clamp_sdl_mouse_button(Uint8 button) static void sdlEventProc(const SDL_Event &e, Game &game) { int val; + bool skipkey = false; SDLMod mod; switch(e.type) @@ -508,6 +509,7 @@ static void sdlEventProc(const SDL_Event &e, Game &game) { if (e.key.keysym.mod & KMOD_CTRL) { + skipkey = true; SDL_GrabMode mode = SDL_GRAB_ON; if ((SDL_GetVideoSurface()->flags & SDL_FULLSCREEN) == 0) { @@ -518,23 +520,16 @@ static void sdlEventProc(const SDL_Event &e, Game &game) } } - #if (defined(__APPLE__) && defined(__MACH__)) - if (e.key.keysym.sym == SDLK_q) - { - if (e.key.keysym.mod & KMOD_META) - { - gDone=true; - } - } - #endif - else if (e.key.keysym.sym == SDLK_RETURN) { if (e.key.keysym.mod & KMOD_ALT) + { + skipkey = true; SDL_WM_ToggleFullScreen(SDL_GetVideoSurface()); + } } - if (e.key.keysym.sym < SDLK_LAST) + if ((!skipkey) && (e.key.keysym.sym < SDLK_LAST)) { if (KeyTable[e.key.keysym.sym] != 0xffff) SetKey(KeyTable[e.key.keysym.sym]); @@ -545,6 +540,8 @@ static void sdlEventProc(const SDL_Event &e, Game &game) SetKey(MAC_CONTROL_KEY); if (mod & KMOD_ALT) SetKey(MAC_OPTION_KEY); + if (mod & KMOD_META) + SetKey(MAC_COMMAND_KEY); if (mod & KMOD_SHIFT) SetKey(MAC_SHIFT_KEY); if (mod & KMOD_CAPS) @@ -936,6 +933,8 @@ Boolean SetUp (Game & game) SDL_ShowCursor(0); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + if (SDL_SetVideoMode(kContextWidth, kContextHeight, 0, sdlflags) == NULL) { fprintf(stderr, "SDL_SetVideoMode() failed: %s\n", SDL_GetError()); @@ -955,6 +954,14 @@ Boolean SetUp (Game & game) } } + int dblbuf = 0; + if ((SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER, &dblbuf) == -1) || (!dblbuf)) + { + fprintf(stderr, "Failed to get double buffered GL context!\n"); + SDL_Quit(); + return false; + } + if (!lookup_all_glsyms()) { SDL_Quit();