Skip to contentSkip to conversation

qemu vl.c vl.h

Qemu-devel In review Thiemo Seufer 3 participants 4 messages Jun 8, 2007 – Jun 11, 2007

lore
Share & tools
lore
#1 lore raw

PATCH 1/1 qemu vl.c vl.h

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

Quoted 7 lines · Thiemo Seufer

CVSROOT: /sources/qemu
Module name: qemu
Changes by: Thiemo Seufer <ths> 07/06/08 01:57:57

Modified files:
. : vl.c vl.h

Quoted 7 lines

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.250

Index: vl.c
===================================================================
RCS file: /sources/qemu/qemu/vl.c,v
retrieving revision 1.306

vl.c +12 -1
diff -u -b -B -r1.306 vl.c
@@ -4481,6 +4481,16 @@
                     "Empty");
 }
 
+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 */
 
@@ -4804,7 +4814,8 @@
 int64_t qemu_fseek(QEMUFile *f, int64_t pos, int whence)
 {
     if (whence == SEEK_SET) {
-        /* nothing to do */
+        /* nearly nothing to do */
+        dumb_display_init(ds);
     } else if (whence == SEEK_CUR) {
         pos += qemu_ftell(f);
     } else {
#2 lore raw

I'm sorry for sending a wrong patch. Here is a corrected version. Thank you, Thiemo, for your hint.

Stefan

Quoted 4 lines · Stefan Weil

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.

Quoted 21 lines

The patch adds dumb_display_init again (and declares it static because it is only used locally in vl.c).

Stefan

Quoted 14 lines · Thiemo Seufer

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.25

Index: vl.c
===================================================================
RCS file: /sources/qemu/qemu/vl.c,v
retrieving revision 1.306

vl.c +12 -1
diff -u -b -B -r1.306 vl.c
@@ -4481,6 +4481,16 @@
                     "Empty");
 }
 
+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 */
 
@@ -7877,7 +7887,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 {
#3 lore raw

One more correction - I hope this is the last one.

Stefan

Quoted 31 lines · Stefan Weil

I'm sorry for sending a wrong patch. Here is a corrected version. Thank you, Thiemo, for your hint.

Stefan

Quoted 25 lines · Stefan Weil

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

Quoted 14 lines · Thiemo Seufer

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

vl.c +30 -1
diff -u -b -B -r1.306 vl.c
@@ -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 {