Patchwork qxl: make sure we don't have a stale ds_mirror hanging around

login
register
mail settings
Submitter Gerd Hoffmann
Date Nov. 1, 2012, 12:24 p.m.
Message ID <1351772695-30404-1-git-send-email-kraxel@redhat.com>
Download mbox | patch
Permalink /patch/196184/
State New
Headers show

Comments

Gerd Hoffmann - Nov. 1, 2012, 12:24 p.m.
ui/spice-display.c uses ds_mirror to figure which screen areas did
actually change.  This is active when the qxl card is in vga mode or a
non-qxl gfx card is used.  A display resize invalidates ds_mirror, and
it is handled by simply simply freeing ds_mirror.  The next screen
update it will be re-allocated as needed.

With qxl there is another possible code path which can invalidate
ds_mirror:  leave vga mode and re-enter vga mode.  Make sure we free
ds_mirror here too.

https://bugzilla.redhat.com/show_bug.cgi?id=865767

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/qxl.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index dfb221a..f25c89d 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -1070,6 +1070,8 @@  static void qxl_enter_vga_mode(PCIQXLDevice *d)
     qemu_spice_create_host_primary(&d->ssd);
     d->mode = QXL_MODE_VGA;
     memset(&d->ssd.dirty, 0, sizeof(d->ssd.dirty));
+    g_free(d->ssd.ds_mirror);
+    d->ssd.ds_mirror = NULL;
     vga_dirty_log_start(&d->vga);
 }