Commit 740733bb939963e77dacda0367eb807dea1c4faf
1 parent
4fdcd8d4
Don't refresh a graphical screen when it isn't displayed, by Herve Poussineau.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2961 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
11 additions
and
35 deletions
vl.c
| @@ -153,7 +153,6 @@ int ram_size; | @@ -153,7 +153,6 @@ int ram_size; | ||
| 153 | int pit_min_timer_count = 0; | 153 | int pit_min_timer_count = 0; |
| 154 | int nb_nics; | 154 | int nb_nics; |
| 155 | NICInfo nd_table[MAX_NICS]; | 155 | NICInfo nd_table[MAX_NICS]; |
| 156 | -QEMUTimer *gui_timer; | ||
| 157 | int vm_running; | 156 | int vm_running; |
| 158 | int rtc_utc = 1; | 157 | int rtc_utc = 1; |
| 159 | int cirrus_vga_enabled = 1; | 158 | int cirrus_vga_enabled = 1; |
| @@ -4481,32 +4480,6 @@ void pcmcia_info(void) | @@ -4481,32 +4480,6 @@ void pcmcia_info(void) | ||
| 4481 | } | 4480 | } |
| 4482 | 4481 | ||
| 4483 | /***********************************************************/ | 4482 | /***********************************************************/ |
| 4484 | -/* dumb display */ | ||
| 4485 | - | ||
| 4486 | -static void dumb_update(DisplayState *ds, int x, int y, int w, int h) | ||
| 4487 | -{ | ||
| 4488 | -} | ||
| 4489 | - | ||
| 4490 | -static void dumb_resize(DisplayState *ds, int w, int h) | ||
| 4491 | -{ | ||
| 4492 | -} | ||
| 4493 | - | ||
| 4494 | -static void dumb_refresh(DisplayState *ds) | ||
| 4495 | -{ | ||
| 4496 | - vga_hw_update(); | ||
| 4497 | -} | ||
| 4498 | - | ||
| 4499 | -void dumb_display_init(DisplayState *ds) | ||
| 4500 | -{ | ||
| 4501 | - ds->data = NULL; | ||
| 4502 | - ds->linesize = 0; | ||
| 4503 | - ds->depth = 0; | ||
| 4504 | - ds->dpy_update = dumb_update; | ||
| 4505 | - ds->dpy_resize = dumb_resize; | ||
| 4506 | - ds->dpy_refresh = dumb_refresh; | ||
| 4507 | -} | ||
| 4508 | - | ||
| 4509 | -/***********************************************************/ | ||
| 4510 | /* I/O handling */ | 4483 | /* I/O handling */ |
| 4511 | 4484 | ||
| 4512 | #define MAX_IO_HANDLERS 64 | 4485 | #define MAX_IO_HANDLERS 64 |
| @@ -6198,8 +6171,9 @@ QEMUMachine *find_machine(const char *name) | @@ -6198,8 +6171,9 @@ QEMUMachine *find_machine(const char *name) | ||
| 6198 | 6171 | ||
| 6199 | void gui_update(void *opaque) | 6172 | void gui_update(void *opaque) |
| 6200 | { | 6173 | { |
| 6201 | - display_state.dpy_refresh(&display_state); | ||
| 6202 | - qemu_mod_timer(gui_timer, GUI_REFRESH_INTERVAL + qemu_get_clock(rt_clock)); | 6174 | + DisplayState *ds = opaque; |
| 6175 | + ds->dpy_refresh(ds); | ||
| 6176 | + qemu_mod_timer(ds->gui_timer, GUI_REFRESH_INTERVAL + qemu_get_clock(rt_clock)); | ||
| 6203 | } | 6177 | } |
| 6204 | 6178 | ||
| 6205 | struct vm_change_state_entry { | 6179 | struct vm_change_state_entry { |
| @@ -7899,17 +7873,16 @@ int main(int argc, char **argv) | @@ -7899,17 +7873,16 @@ int main(int argc, char **argv) | ||
| 7899 | init_ioports(); | 7873 | init_ioports(); |
| 7900 | 7874 | ||
| 7901 | /* terminal init */ | 7875 | /* terminal init */ |
| 7876 | + memset(&display_state, 0, sizeof(display_state)); | ||
| 7902 | if (nographic) { | 7877 | if (nographic) { |
| 7903 | - dumb_display_init(ds); | 7878 | + /* nothing to do */ |
| 7904 | } else if (vnc_display != NULL) { | 7879 | } else if (vnc_display != NULL) { |
| 7905 | - vnc_display_init(ds, vnc_display); | 7880 | + vnc_display_init(ds, vnc_display); |
| 7906 | } else { | 7881 | } else { |
| 7907 | #if defined(CONFIG_SDL) | 7882 | #if defined(CONFIG_SDL) |
| 7908 | sdl_display_init(ds, full_screen, no_frame); | 7883 | sdl_display_init(ds, full_screen, no_frame); |
| 7909 | #elif defined(CONFIG_COCOA) | 7884 | #elif defined(CONFIG_COCOA) |
| 7910 | cocoa_display_init(ds, full_screen); | 7885 | cocoa_display_init(ds, full_screen); |
| 7911 | -#else | ||
| 7912 | - dumb_display_init(ds); | ||
| 7913 | #endif | 7886 | #endif |
| 7914 | } | 7887 | } |
| 7915 | 7888 | ||
| @@ -7977,8 +7950,10 @@ int main(int argc, char **argv) | @@ -7977,8 +7950,10 @@ int main(int argc, char **argv) | ||
| 7977 | } | 7950 | } |
| 7978 | } | 7951 | } |
| 7979 | 7952 | ||
| 7980 | - gui_timer = qemu_new_timer(rt_clock, gui_update, NULL); | ||
| 7981 | - qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock)); | 7953 | + if (display_state.dpy_refresh) { |
| 7954 | + display_state.gui_timer = qemu_new_timer(rt_clock, gui_update, &display_state); | ||
| 7955 | + qemu_mod_timer(display_state.gui_timer, qemu_get_clock(rt_clock)); | ||
| 7956 | + } | ||
| 7982 | 7957 | ||
| 7983 | #ifdef CONFIG_GDBSTUB | 7958 | #ifdef CONFIG_GDBSTUB |
| 7984 | if (use_gdbstub) { | 7959 | if (use_gdbstub) { |
vl.h
| @@ -914,6 +914,7 @@ struct DisplayState { | @@ -914,6 +914,7 @@ struct DisplayState { | ||
| 914 | int width; | 914 | int width; |
| 915 | int height; | 915 | int height; |
| 916 | void *opaque; | 916 | void *opaque; |
| 917 | + QEMUTimer *gui_timer; | ||
| 917 | 918 | ||
| 918 | void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); | 919 | void (*dpy_update)(struct DisplayState *s, int x, int y, int w, int h); |
| 919 | void (*dpy_resize)(struct DisplayState *s, int w, int h); | 920 | void (*dpy_resize)(struct DisplayState *s, int w, int h); |