This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-changelog] [qemu-xen-3.3-testing] fix vnc screen corruption bugs an

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [qemu-xen-3.3-testing] fix vnc screen corruption bugs and viewer exits
From: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Date: Tue, 4 Aug 2009 08:00:16 -0700
Delivery-date: Tue, 04 Aug 2009 08:00:24 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
commit f3115dc6719e4d21c426b9395b2b30e7062b97cf
Author: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Date:   Tue Aug 4 15:53:20 2009 +0100

    fix vnc screen corruption bugs and viewer exits
    I have been having problems with display corruption using raw
    I have also been having issues with the vncviewer client exiting with
    "rect too big".
    These problems appear when there are rapid changes to the framebuffer
    contents. [I've been using "find /" in my tests to generate a lot of text
    The root cause of both problems appears to be the changing of
    the underlying framebuffer data during the creation of the update.
    [Hextile makes multiple passes over the data and gets badly
    confused if the data changes..]
    The attached patch pulls the pixel data from the "stable" old_data
    buffer rather than directly from the (changing) display surface.
    Submitted-by: Andrew Thomas <andrew.thomas@xxxxxxxxxx>
    Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
    (cherry picked from commit 99a5a9155284ab47eda2be738be0115aa97ce0ff)
    cherry picked from commit 55fab1884cf0eae44f06ce97d15c20ca29b8fba2
 vnc.c        |    2 +-
 vnchextile.h |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/vnc.c b/vnc.c
index 01e22e5..4a8f526 100644
--- a/vnc.c
+++ b/vnc.c
@@ -525,7 +525,7 @@ static void send_framebuffer_update_raw(VncState *vs, int 
x, int y, int w, int h
     vnc_framebuffer_update(vs, x, y, w, h, 0);
-    row = vs->ds->data + y * vs->ds->linesize + x * vs->depth;
+    row = vs->old_data + y * vs->ds->linesize + x * vs->depth;
     for (i = 0; i < h; i++) {
        vs->write_pixels(vs, row, w * vs->depth);
        row += vs->ds->linesize;
diff --git a/vnchextile.h b/vnchextile.h
index 29b7484..b921ff6 100644
--- a/vnchextile.h
+++ b/vnchextile.h
@@ -13,7 +13,7 @@ static void CONCAT(send_hextile_tile_, NAME)(VncState *vs,
                                              void *last_fg_,
                                              int *has_bg, int *has_fg)
-    uint8_t *row = (vs->ds->data + y * vs->ds->linesize + x * vs->depth);
+    uint8_t *row = (vs->old_data + y * vs->ds->linesize + x * vs->depth);
     pixel_t *irow = (pixel_t *)row;
     int j, i;
     pixel_t *last_bg = (pixel_t *)last_bg_;
generated by git-patchbot for /home/xen/git/qemu-xen-3.3-testing.git

Xen-changelog mailing list

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [qemu-xen-3.3-testing] fix vnc screen corruption bugs and viewer exits, Ian Jackson <=