From 20364c67bd253b04d2202ef04122afd742821fbb Mon Sep 17 00:00:00 2001 From: rude Date: Wed, 16 Mar 2011 23:23:20 +0100 Subject: [PATCH] Added love.event.clear, because why not. (Issue #202). --- src/modules/event/sdl/Event.cpp | 10 ++++++++++ src/modules/event/sdl/Event.h | 5 +++++ src/modules/event/sdl/wrap_Event.cpp | 7 +++++++ src/modules/event/sdl/wrap_Event.h | 1 + 4 files changed, 23 insertions(+) diff --git a/src/modules/event/sdl/Event.cpp b/src/modules/event/sdl/Event.cpp index b5e369abe..32881af3d 100644 --- a/src/modules/event/sdl/Event.cpp +++ b/src/modules/event/sdl/Event.cpp @@ -73,6 +73,16 @@ namespace sdl return ok && (SDL_PushEvent(&e) == 0); } + void Event::clear() + { + static SDL_Event e; + + while(SDL_PollEvent(&e)) + { + // Do nothing with 'e' ... + } + } + bool Event::convert(SDL_Event & e, Message & m) { switch(e.type) diff --git a/src/modules/event/sdl/Event.h b/src/modules/event/sdl/Event.h index 1502bc57e..01a91051c 100644 --- a/src/modules/event/sdl/Event.h +++ b/src/modules/event/sdl/Event.h @@ -74,6 +74,11 @@ namespace sdl **/ bool push(Message & message); + /** + * Clears the event queue. + */ + void clear(); + private: bool convert(SDL_Event & e, Message & m); diff --git a/src/modules/event/sdl/wrap_Event.cpp b/src/modules/event/sdl/wrap_Event.cpp index 77b4e6fe5..b9c494bd4 100644 --- a/src/modules/event/sdl/wrap_Event.cpp +++ b/src/modules/event/sdl/wrap_Event.cpp @@ -177,12 +177,19 @@ namespace sdl return 1; } + int w_clear(lua_State * L) + { + instance->clear(); + return 0; + } + // List of functions to wrap. static const luaL_Reg functions[] = { { "pump", w_pump }, { "poll", w_poll }, { "wait", w_wait }, { "push", w_push }, + { "clear", w_clear }, { 0, 0 } }; diff --git a/src/modules/event/sdl/wrap_Event.h b/src/modules/event/sdl/wrap_Event.h index 107a0ace9..d06401edb 100644 --- a/src/modules/event/sdl/wrap_Event.h +++ b/src/modules/event/sdl/wrap_Event.h @@ -35,6 +35,7 @@ namespace sdl int w_poll(lua_State * L); int w_wait(lua_State * L); int w_push(lua_State * L); + int w_clear(lua_State * L); extern "C" LOVE_EXPORT int luaopen_love_event(lua_State * L);