One more correction - I hope this is the last one. Stefan
Stefan Weil schrieb: > I'm sorry for sending a wrong patch. Here is a corrected version. > Thank you, Thiemo, for your hint. > > Stefan > > Stefan Weil schrieb: >> Removing dumb_display_init introduced a bug for -nographic mode. >> QEMU crashs when dpy_update (or dpy_resize) is called, because >> the corresponding function pointers are zero. >> >> The patch adds dumb_display_init again (and declares it static >> because it is only used locally in vl.c). >> >> Stefan >> >> >> Thiemo Seufer schrieb: >>> CVSROOT: /sources/qemu >>> Module name: qemu >>> Changes by: Thiemo Seufer <ths> 07/06/08 01:57:57 >>> >>> Modified files: >>> . : vl.c vl.h >>> >>> Log message: >>> Don't refresh a graphical screen when it isn't displayed, by Herve >>> Poussineau. >>> >>> CVSWeb URLs: >>> http://cvs.savannah.gnu.org/viewcvs/qemu/vl.c?cvsroot=qemu&r1=1.304&r2=1.305 >>> http://cvs.savannah.gnu.org/viewcvs/qemu/vl.h?cvsroot=qemu&r1=1.249&r2=1.2
Index: vl.c =================================================================== RCS file: /sources/qemu/qemu/vl.c,v retrieving revision 1.306 diff -u -b -B -r1.306 vl.c --- vl.c 10 Jun 2007 19:21:04 -0000 1.306 +++ vl.c 11 Jun 2007 21:03:29 -0000 @@ -4482,6 +4482,34 @@ } /***********************************************************/ +/* dumb display */ + +static void dumb_update(DisplayState *ds, int x, int y, int w, int h) +{ +} + +static void dumb_resize(DisplayState *ds, int w, int h) +{ +} + +static void dumb_refresh(DisplayState *ds) +{ +#if defined(CONFIG_SDL) + vga_hw_update(); +#endif +} + +static void dumb_display_init(DisplayState *ds) +{ + ds->data = NULL; + ds->linesize = 0; + ds->depth = 0; + ds->dpy_update = dumb_update; + ds->dpy_resize = dumb_resize; + ds->dpy_refresh = dumb_refresh; +} + +/***********************************************************/ /* I/O handling */ #define MAX_IO_HANDLERS 64 @@ -7877,7 +7905,8 @@ /* terminal init */ memset(&display_state, 0, sizeof(display_state)); if (nographic) { - /* nothing to do */ + /* nearly nothing to do */ + dumb_display_init(ds); } else if (vnc_display != NULL) { vnc_display_init(ds, vnc_display); } else {