qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] Slowdown SDL while minimized


From: Samuel Thibault
Subject: [Qemu-devel] [PATCH] Slowdown SDL while minimized
Date: Tue, 11 Mar 2008 11:12:51 +0000
User-agent: Mutt/1.5.12-2006-07-14

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.

Index: console.h
===================================================================
RCS file: /sources/qemu/qemu/console.h,v
retrieving revision 1.2
diff -u -p -r1.2 console.h
--- console.h   10 Feb 2008 16:33:13 -0000      1.2
+++ console.h   11 Mar 2008 11:05:08 -0000
@@ -71,6 +71,7 @@
     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);
Index: sdl.c
===================================================================
RCS file: /sources/qemu/qemu/sdl.c,v
retrieving revision 1.46
--- sdl.c       10 Mar 2008 19:34:27 -0000      1.46
+++ sdl.c       11 Mar 2008 11:05:08 -0000
@@ -506,6 +506,15 @@
                 !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;
Index: vl.c
===================================================================
RCS file: /sources/qemu/qemu/vl.c,v
retrieving revision 1.410
--- vl.c        10 Mar 2008 19:34:27 -0000      1.410
+++ vl.c        11 Mar 2008 11:05:09 -0000
@@ -7208,7 +7200,11 @@
 {
     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 {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]