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-devel

Re: [Xen-devel] [PATCH] vnc linesize

To: Alex Williamson <alex.williamson@xxxxxx>
Subject: Re: [Xen-devel] [PATCH] vnc linesize
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Thu, 20 Mar 2008 18:14:51 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 20 Mar 2008 11:16:17 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <1206034265.27908.124.camel@bling>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <47E14C52.3040300@xxxxxxxxxxxxx> <1206034265.27908.124.camel@bling>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.6 (X11/20071022)
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
<Prev in Thread] Current Thread [Next in Thread>