diff options
author | aurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-03-13 19:20:33 +0000 |
---|---|---|
committer | aurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162> | 2008-03-13 19:20:33 +0000 |
commit | f442e08b418785e13b1161edfa9e0c72cc324c41 (patch) | |
tree | 1d70820bd63eaeb9c97adb62dbfb65a100ef5438 | |
parent | 4c44bdcb704945980898a04c556d1377c267a3f1 (diff) |
Slowdown SDL while minimized
When SDL is invisible/minimized, there is no need to keep calling the
VGA refresh 33 times per second. This patch reduces in that case the
rate to 2 times per second, which should be responsive enough for the
un-minimizing event.
(Samuel Thibault)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4050 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r-- | console.h | 1 | ||||
-rw-r--r-- | sdl.c | 9 | ||||
-rw-r--r-- | vl.c | 6 |
3 files changed, 15 insertions, 1 deletions
@@ -71,6 +71,7 @@ struct DisplayState { int height; void *opaque; struct QEMUTimer *gui_timer; + uint64_t gui_timer_interval; void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); void (*dpy_resize)(struct DisplayState *s, int w, int h); @@ -510,6 +510,15 @@ static void sdl_refresh(DisplayState *ds) !ev->active.gain && !gui_fullscreen_initial_grab) { sdl_grab_end(); } + if (ev->active.state & SDL_APPACTIVE) { + if (ev->active.gain) { + /* Back to default interval */ + ds->gui_timer_interval = 0; + } else { + /* Sleeping interval */ + ds->gui_timer_interval = 500; + } + } break; default: break; @@ -7208,7 +7208,11 @@ static void gui_update(void *opaque) { DisplayState *ds = opaque; ds->dpy_refresh(ds); - qemu_mod_timer(ds->gui_timer, GUI_REFRESH_INTERVAL + qemu_get_clock(rt_clock)); + qemu_mod_timer(ds->gui_timer, + (ds->gui_timer_interval ? + ds->gui_timer_interval : + GUI_REFRESH_INTERVAL) + + qemu_get_clock(rt_clock)); } struct vm_change_state_entry { |