[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [qemu-xen-3.3-testing] fix vnc screen corruption bugs and viewer exits



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
    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>
    (cherry picked from commit 99a5a9155284ab47eda2be738be0115aa97ce0ff)
    
    cherry picked from commit 55fab1884cf0eae44f06ce97d15c20ca29b8fba2
    Conflicts:
        vnc.c
        vnchextile.h
---
 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
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.