[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] vnc linesize
Hi Alex,I think I have found the bug that causes the strange behaviour you are describing, but I have no way to be sure because I cannot test it on a ia64 machine. Could you please try the patch I am attaching (to be applied on top of the other one)? Best Regards, Stefano Stabellini Alex Williamson wrote: On Wed, 2008-03-19 at 17:24 +0000, Stefano Stabellini wrote:Hi all,the patch I am attaching enables buffer sharing for vnc when the linesize != width * depth.Hi Stefano, I'm seeing some odd issues with this on ia64, see the attached screenshot. I'm using VNC, not SDL, and have specified opengl=0 in my domain config file. The left side of the screen is wrapped around overtop of the right side of the screen. The copy on the left side is not updated unless I change the resolution the guest is running or force the VNC client to manually refresh. Updates are normal on the copy on the right side of the screen. Any ideas? Thanks, diff -r 491a3b62ae5b tools/ioemu/vnc.c --- a/tools/ioemu/vnc.c Thu Mar 20 17:48:02 2008 +0000 +++ b/tools/ioemu/vnc.c Thu Mar 20 18:03:52 2008 +0000 @@ -370,16 +370,20 @@ static void vnc_dpy_resize(DisplayState int o; if (!ds->shared_buf) { + ds->linesize = w * vs->depth; if (allocated) - ds->data = realloc(ds->data, h * linesize); + ds->data = realloc(ds->data, h * ds->linesize); else - ds->data = malloc(h * linesize); + ds->data = malloc(h * ds->linesize); allocated = 1; - } else if (allocated) { - free(ds->data); - allocated = 0; - } - vs->old_data = realloc(vs->old_data, h * linesize); + } else { + ds->linesize = linesize; + if (allocated) { + free(ds->data); + allocated = 0; + } + } + vs->old_data = realloc(vs->old_data, h * ds->linesize); vs->dirty_row = realloc(vs->dirty_row, h * sizeof(vs->dirty_row[0])); vs->update_row = realloc(vs->update_row, h * sizeof(vs->dirty_row[0])); @@ -396,7 +400,6 @@ static void vnc_dpy_resize(DisplayState size_changed = ds->width != w || ds->height != h; ds->width = w; ds->height = h; - ds->linesize = linesize; if (vs->csock != -1 && vs->has_resize && size_changed) { vs->width = ds->width; vs->height = ds->height; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |