vga: stop direct access to DisplaySurface fields.
authorGerd Hoffmann <kraxel@redhat.com>
Wed, 10 Oct 2012 11:05:05 +0000 (13:05 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 1 Nov 2012 13:00:04 +0000 (14:00 +0100)
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
hw/vga.c

index f31dbdd652f85f234f8006f1ea3c124431c148f9..1188463208d9b2c913396af47d6d99f8711e82e0 100644 (file)
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -1709,8 +1709,13 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
         s->last_depth = depth;
         full_update = 1;
     } else if (is_buffer_shared(s->ds->surface) &&
-               (full_update || s->ds->surface->data != s->vram_ptr + (s->start_addr * 4))) {
-        s->ds->surface->data = s->vram_ptr + (s->start_addr * 4);
+               (full_update || ds_get_data(s->ds) != s->vram_ptr
+                + (s->start_addr * 4))) {
+        qemu_free_displaysurface(s->ds);
+        s->ds->surface = qemu_create_displaysurface_from(disp_width,
+                height, depth,
+                s->line_offset,
+                s->vram_ptr + (s->start_addr * 4));
         dpy_gfx_setdata(s->ds);
     }