From 262d742204a3b0d9f2ffccf9c0399d3b01592a1f Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Fri, 16 Nov 2012 08:22:23 +0800 Subject: [PATCH] add back waitForInput timeout for emulator --- input.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/input.c b/input.c index 57c27eaf4..77c20a454 100644 --- a/input.c +++ b/input.c @@ -227,8 +227,8 @@ static int closeInputDevices(lua_State *L) { static int waitForInput(lua_State *L) { struct input_event input; int n; -#ifndef EMULATE_READER int usecs = luaL_optint(L, 1, -1); // we check for <0 later +#ifndef EMULATE_READER fd_set fds; struct timeval timeout; int i, num, nfds; @@ -293,7 +293,17 @@ static int waitForInput(lua_State *L) { return 1; } - SDL_WaitEvent(&event); + int ticks = SDL_GetTicks(); + if (usecs < 0) + SDL_WaitEvent(&event); + else { + while (SDL_GetTicks()-ticks <= usecs/1000) { + if (SDL_PollEvent(&event)) break; + SDL_Delay(10); + } + if (SDL_GetTicks()-ticks > usecs/1000) + return luaL_error(L, "Waiting for input failed: timeout\n"); + } switch(event.type) { case SDL_KEYDOWN: genEmuEvent(L, inputfds[0], EV_KEY, event.key.keysym.scancode, 1);