From f1e48fffe3c224ee81cdc1f85dbd0179b202d457 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 8 Sep 2017 19:38:59 +0300 Subject: Split SDL_WaitEventTimeout/SDL_PollEvent into lower level SDL function calls. --- src/eventsmanager.cpp | 5 +++-- src/sdlshared.h | 1 - src/utils/sdl2helper.cpp | 11 +++++++++++ src/utils/sdl2helper.h | 4 ++++ src/utils/sdlhelper.cpp | 10 ++++++++++ src/utils/sdlhelper.h | 4 ++++ 6 files changed, 32 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/eventsmanager.cpp b/src/eventsmanager.cpp index 2db3e8869..efd300f9c 100644 --- a/src/eventsmanager.cpp +++ b/src/eventsmanager.cpp @@ -44,6 +44,7 @@ #endif // USE_SDL2 #include "utils/process.h" +#include "utils/sdlhelper.h" #include "debug.h" @@ -137,7 +138,7 @@ bool EventsManager::handleEvents() const { SDL_Event event; // Handle SDL events - while (SDL_WaitEventTimeout(&event, 0)) + while (SDL::PollEvent(&event)) { if (!handleCommonEvents(event)) { @@ -187,7 +188,7 @@ void EventsManager::handleGameEvents() const // Events SDL_Event event; - while (SDL_WaitEventTimeout(&event, 0)) + while (SDL::PollEvent(&event)) { if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP) game->updateHistory(event); diff --git a/src/sdlshared.h b/src/sdlshared.h index 2dec6aada..71273d82f 100644 --- a/src/sdlshared.h +++ b/src/sdlshared.h @@ -59,7 +59,6 @@ #define SDL_Window SDL_Surface #define SDL_JoystickNameForIndex SDL_JoystickName #define SurfaceImageHelper SDLImageHelper -#define SDL_WaitEventTimeout(event, time) SDL_PollEvent(event) #define SDL_GLContext (void*) #endif // USE_SDL2 diff --git a/src/utils/sdl2helper.cpp b/src/utils/sdl2helper.cpp index 7648ccc2b..da5b15e41 100644 --- a/src/utils/sdl2helper.cpp +++ b/src/utils/sdl2helper.cpp @@ -30,6 +30,7 @@ PRAGMA48(GCC diagnostic push) PRAGMA48(GCC diagnostic ignored "-Wshadow") +#include #include PRAGMA48(GCC diagnostic pop) @@ -194,4 +195,14 @@ void SDL::WaitThread(SDL_Thread *const thread) SDL_WaitThread(thread, nullptr); } +bool SDL::PollEvent(SDL_Event *event) +{ + SDL_PumpEvents(); + return SDL_PeepEvents(event, + 1, + SDL_GETEVENT, + SDL_FIRSTEVENT, + SDL_LASTEVENT) > 0; +} + #endif // USE_SDL2 diff --git a/src/utils/sdl2helper.h b/src/utils/sdl2helper.h index 089bbbfab..d1b474d50 100644 --- a/src/utils/sdl2helper.h +++ b/src/utils/sdl2helper.h @@ -31,6 +31,8 @@ PRAGMA48(GCC diagnostic ignored "-Wshadow") #include PRAGMA48(GCC diagnostic pop) +union SDL_Event; + struct SDL_Surface; struct SDL_SysWMinfo; struct SDL_Window; @@ -65,6 +67,8 @@ namespace SDL void initLogger(); void WaitThread(SDL_Thread *const thread); + + bool PollEvent(SDL_Event *event); } // namespace SDL #endif // USE_SDL2 diff --git a/src/utils/sdlhelper.cpp b/src/utils/sdlhelper.cpp index 324779898..2e3576578 100644 --- a/src/utils/sdlhelper.cpp +++ b/src/utils/sdlhelper.cpp @@ -33,6 +33,7 @@ PRAGMA48(GCC diagnostic push) PRAGMA48(GCC diagnostic ignored "-Wshadow") +#include #include #include PRAGMA48(GCC diagnostic pop) @@ -192,4 +193,13 @@ void SDL::WaitThread(SDL_Thread *const thread) SDL_WaitThread(thread, nullptr); } +bool SDL::PollEvent(SDL_Event *event) +{ + SDL_PumpEvents(); + return SDL_PeepEvents(event, + 1, + SDL_GETEVENT, + SDL_ALLEVENTS) > 0; +} + #endif // USE_SDL2 diff --git a/src/utils/sdlhelper.h b/src/utils/sdlhelper.h index abb3934cb..67a979da3 100644 --- a/src/utils/sdlhelper.h +++ b/src/utils/sdlhelper.h @@ -35,6 +35,8 @@ PRAGMA48(GCC diagnostic ignored "-Wshadow") #include PRAGMA48(GCC diagnostic pop) +union SDL_Event; + struct SDL_Surface; struct SDL_SysWMinfo; @@ -71,6 +73,8 @@ namespace SDL void initLogger(); void WaitThread(SDL_Thread *const thread); + + bool PollEvent(SDL_Event *event); } // namespace SDL #endif // USE_SDL2 -- cgit v1.2.3-70-g09d2