[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |