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

Message ID 1351772695-30404-1-git-send-email-kraxel@redhat.com
State New
Headers show

Commit Message

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.


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


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)
     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;