diff --git a/project/src/backend/sdl/SDLApplication.cpp b/project/src/backend/sdl/SDLApplication.cpp index d72be4646..1c6d2abdb 100644 --- a/project/src/backend/sdl/SDLApplication.cpp +++ b/project/src/backend/sdl/SDLApplication.cpp @@ -721,7 +721,7 @@ namespace lime { #if (!defined (IPHONE) && !defined (EMSCRIPTEN)) - if (active && (firstTime || SDL_WaitEvent (&event))) { + if (active && (firstTime || WaitEvent (&event))) { firstTime = false; @@ -796,6 +796,25 @@ namespace lime { } + int SDLApplication::WaitEvent (SDL_Event *event) { + + for(;;) { + + SDL_PumpEvents (); + + switch (SDL_PeepEvents (event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)) { + + case -1: return 0; + case 1: return 1; + default: SDL_Delay (1); + + } + + } + + } + + Application* CreateApplication () { return new SDLApplication (); diff --git a/project/src/backend/sdl/SDLApplication.h b/project/src/backend/sdl/SDLApplication.h index d9e7baa2d..db1152d9e 100644 --- a/project/src/backend/sdl/SDLApplication.h +++ b/project/src/backend/sdl/SDLApplication.h @@ -46,6 +46,7 @@ namespace lime { void ProcessTextEvent (SDL_Event* event); void ProcessTouchEvent (SDL_Event* event); void ProcessWindowEvent (SDL_Event* event); + int WaitEvent (SDL_Event* event); static void UpdateFrame (); static void UpdateFrame (void*);