From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GtWyX-0002SS-Hp for qemu-devel@nongnu.org; Sun, 10 Dec 2006 17:16:49 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GtWyU-0002Qo-UM for qemu-devel@nongnu.org; Sun, 10 Dec 2006 17:16:49 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GtWyU-0002Qi-NW for qemu-devel@nongnu.org; Sun, 10 Dec 2006 17:16:46 -0500 Received: from [66.249.82.235] (helo=wx-out-0506.google.com) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GtWyU-0007Hn-Mq for qemu-devel@nongnu.org; Sun, 10 Dec 2006 17:16:46 -0500 Received: by wx-out-0506.google.com with SMTP id i30so2439810wxd for ; Sun, 10 Dec 2006 14:16:46 -0800 (PST) Message-ID: <83a4d4ca0612101416j70257297ya25ead3213fc1de6@mail.gmail.com> Date: Sun, 10 Dec 2006 23:16:45 +0100 From: "Eduardo Felipe" MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Subject: [Qemu-devel] [PATCH]VNC: send NewDesktopSize only when needed Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hi, Patch below makes VNC server send NewDesktopSize message only when necessary. Without it UltraVNC client goes crazy, as it sends a SetPixelFormat message each time it receives a resize, which makes qemu VNC server trigger a new (unnecessary) resize, and so on... Regards, Index: vnc.c =================================================================== RCS file: /sources/qemu/qemu/vnc.c,v retrieving revision 1.8 diff -u -r1.8 vnc.c --- vnc.c 24 Aug 2006 20:36:44 -0000 1.8 +++ vnc.c 10 Dec 2006 21:25:11 -0000 @@ -167,6 +167,7 @@ static void vnc_dpy_resize(DisplayState *ds, int w, int h) { + int size_changed; VncState *vs = ds->opaque; ds->data = realloc(ds->data, w * h * vs->depth); @@ -178,10 +179,11 @@ } ds->depth = vs->depth * 8; + size_changed = ds->width != w || ds->height != h; ds->width = w; ds->height = h; ds->linesize = w * vs->depth; - if (vs->csock != -1 && vs->has_resize) { + if (vs->csock != -1 && vs->has_resize && size_changed) { vnc_write_u8(vs, 0); /* msg id */ vnc_write_u8(vs, 0); vnc_write_u16(vs, 1); /* number of rects */