--- sdl.c.orig 2008-12-24 15:24:58.000000000 +0100 +++ sdl.c 2009-01-06 23:53:26.282639309 +0100 @@ -356,6 +356,7 @@ SDL_Event ev1, *ev = &ev1; int mod_state; int buttonstate = SDL_GetMouseState(NULL, NULL); + int moved = 0; if (last_vm_running != vm_running) { last_vm_running = vm_running; @@ -484,6 +485,7 @@ absolute_enabled) { sdl_send_mouse_event(ev->motion.xrel, ev->motion.yrel, 0, ev->motion.x, ev->motion.y, ev->motion.state); + moved = 1; } break; case SDL_MOUSEBUTTONDOWN: @@ -536,6 +538,10 @@ break; } } + if (moved && ds->gui_timer_interval == 0) + ds->gui_timer_interval = 10; + else if (!moved && ds->gui_timer_interval == 10) + ds->gui_timer_interval = 0; } static void sdl_fill(DisplayState *ds, int x, int y, int w, int h, uint32_t c)