diff --git a/input.c b/input.c index a018c8147..1bf7f9ba5 100644 --- a/input.c +++ b/input.c @@ -139,14 +139,15 @@ static int closeInputDevices(lua_State *L) { static int waitForInput(lua_State *L) { int usecs = luaL_optint(L, 1, -1); // we check for <0 later + int secs = luaL_optint(L, 2, 0); #ifndef EMULATE_READER fd_set fds; struct timeval timeout; int i, num, nfds; - timeout.tv_sec = (usecs/1000000); - timeout.tv_usec = (usecs%1000000); + timeout.tv_sec = secs; + timeout.tv_usec = usecs; nfds = 0; @@ -196,11 +197,11 @@ static int waitForInput(lua_State *L) { if (usecs < 0) SDL_WaitEvent(&event); else { - while (SDL_GetTicks()-ticks <= usecs/1000) { + while (SDL_GetTicks()-ticks <= secs * 1000 + usecs/1000) { if (SDL_PollEvent(&event)) break; SDL_Delay(10); } - if (SDL_GetTicks()-ticks > usecs/1000) + if (SDL_GetTicks()-ticks > secs * 1000 + usecs/1000) return luaL_error(L, "Waiting for input failed: timeout\n"); } switch(event.type) {