WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [qemu-xen-unstable] fix vnc screen corruption bugs and v

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [qemu-xen-unstable] fix vnc screen corruption bugs and viewer exits
From: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Date: Mon, 10 Aug 2009 10:20:50 -0700
Delivery-date: Mon, 10 Aug 2009 10:20:58 -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 99a5a9155284ab47eda2be738be0115aa97ce0ff
Author: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Date:   Tue Aug 4 15:35:46 2009 +0100

    fix vnc screen corruption bugs and viewer exits
    
    I have been having problems with display corruption using raw
    encoding.
    
    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
    output.]
    
    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>
---
 vnc.c        |    2 +-
 vnchextile.h |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/vnc.c b/vnc.c
index f8606cb..702ee5d 100644
--- a/vnc.c
+++ b/vnc.c
@@ -499,7 +499,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 = ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * 
ds_get_bytes_per_pixel(vs->ds);
+    row = vs->old_data + y * ds_get_linesize(vs->ds) + x * 
ds_get_bytes_per_pixel(vs->ds);
     for (i = 0; i < h; i++) {
        vs->write_pixels(vs, row, w * ds_get_bytes_per_pixel(vs->ds));
        row += ds_get_linesize(vs->ds);
diff --git a/vnchextile.h b/vnchextile.h
index f3fdfb4..1455886 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 = (ds_get_data(vs->ds) + y * ds_get_linesize(vs->ds) + x * 
ds_get_bytes_per_pixel(vs->ds));
+    uint8_t *row = (vs->old_data + y * ds_get_linesize(vs->ds) + x * 
ds_get_bytes_per_pixel(vs->ds));
     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-unstable.git

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

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