X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FOpenGL_Windows.cpp;h=24fcd87d438d3178344cd36115804321db913e89;hb=82780a8852d09fa443add4565cebef4f6faefd4a;hp=9b0dfad415062b579e7d2ea87ae9aab4160344ed;hpb=c33352410441ce5656f7c65eea696b5f799fefeb;p=lugaru.git diff --git a/Source/OpenGL_Windows.cpp b/Source/OpenGL_Windows.cpp index 9b0dfad..24fcd87 100644 --- a/Source/OpenGL_Windows.cpp +++ b/Source/OpenGL_Windows.cpp @@ -227,7 +227,7 @@ Game * pgame = 0; static int _argc = 0; static char **_argv = NULL; -static bool cmdline(const char *cmd) +bool cmdline(const char *cmd) { for (int i = 1; i < _argc; i++) { @@ -457,6 +457,8 @@ static inline int clamp_sdl_mouse_button(Uint8 button) static void sdlEventProc(const SDL_Event &e, Game &game) { int val; + SDLMod mod; + switch(e.type) { case SDL_MOUSEMOTION: @@ -529,13 +531,14 @@ static void sdlEventProc(const SDL_Event &e, Game &game) SetKey(KeyTable[e.key.keysym.sym]); } - if (e.key.keysym.mod & KMOD_CTRL) + mod = SDL_GetModState(); + if (mod & KMOD_CTRL) SetKey(MAC_CONTROL_KEY); - if (e.key.keysym.mod & KMOD_ALT) + if (mod & KMOD_ALT) SetKey(MAC_OPTION_KEY); - if (e.key.keysym.mod & KMOD_SHIFT) + if (mod & KMOD_SHIFT) SetKey(MAC_SHIFT_KEY); - if (e.key.keysym.mod & KMOD_CAPS) + if (mod & KMOD_CAPS) SetKey(MAC_CAPS_LOCK_KEY); return; @@ -547,13 +550,14 @@ static void sdlEventProc(const SDL_Event &e, Game &game) ClearKey(KeyTable[e.key.keysym.sym]); } - if (e.key.keysym.mod & KMOD_CTRL) + mod = SDL_GetModState(); + if ((mod & KMOD_CTRL) == 0) ClearKey(MAC_CONTROL_KEY); - if (e.key.keysym.mod & KMOD_ALT) + if ((mod & KMOD_ALT) == 0) ClearKey(MAC_OPTION_KEY); - if (e.key.keysym.mod & KMOD_SHIFT) + if ((mod & KMOD_SHIFT) == 0) ClearKey(MAC_SHIFT_KEY); - if (e.key.keysym.mod & KMOD_CAPS) + if ((mod & KMOD_CAPS) == 0) ClearKey(MAC_CAPS_LOCK_KEY); return; } @@ -1298,6 +1302,10 @@ void CleanUp (void) // the context is destroyed and libGL unloaded by SDL_Quit(). pglDeleteTextures = glDeleteTextures_doNothing; + #if PLATFORM_LINUX + _exit(0); // !!! FIXME: hack...crashes on exit! + #endif + #elif (defined WIN32) if (hRC) { @@ -2362,7 +2370,7 @@ int main(int argc, char **argv) extern int channels[100]; extern FSOUND_SAMPLE * samp[100]; - extern FSOUND_STREAM * strm[10]; + extern FSOUND_STREAM * strm[20]; extern "C" void PlaySoundEx(int chan, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused) {