From 7fd393b7efd92778aba5333dc1344aaac0ea2293 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Mon, 26 Mar 2012 18:18:27 +0000 Subject: [PATCH] sdl: on Windows, perform the input tick in the main drawing thread. --- src/platform/sdl/sdlinput.cpp | 22 ++++++++++++++++++++-- src/platform/sdl/sdlinput.h | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/platform/sdl/sdlinput.cpp b/src/platform/sdl/sdlinput.cpp index 1d0b153b..facd93e4 100644 --- a/src/platform/sdl/sdlinput.cpp +++ b/src/platform/sdl/sdlinput.cpp @@ -31,6 +31,8 @@ class SdlInputData friend class SdlInput; private: + void Tick(float deltams); + static ivec2 GetMousePos(); }; @@ -43,16 +45,32 @@ SdlInput::SdlInput() { #if defined USE_SDL SDL_Init(SDL_INIT_TIMER); +#endif m_gamegroup = GAMEGROUP_BEFORE; -#endif } void SdlInput::TickGame(float deltams) { -#if defined USE_SDL Entity::TickGame(deltams); +#if !defined _WIN32 + data->Tick(deltams); +#endif +} + +void SdlInput::TickDraw(float deltams) +{ + Entity::TickDraw(deltams); + +#if defined _WIN32 + data->Tick(deltams); +#endif +} + +void SdlInputData::Tick(float deltams) +{ +#if defined USE_SDL /* Handle mouse input */ ivec2 mouse = SdlInputData::GetMousePos();; Input::SetMousePos(mouse); diff --git a/src/platform/sdl/sdlinput.h b/src/platform/sdl/sdlinput.h index b2ff8b72..1c74f886 100644 --- a/src/platform/sdl/sdlinput.h +++ b/src/platform/sdl/sdlinput.h @@ -31,6 +31,7 @@ public: protected: virtual void TickGame(float deltams); + virtual void TickDraw(float deltams); private: SdlInputData *data;