From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH] vnc linesize Date: Wed, 19 Mar 2008 17:24:34 +0000 Message-ID: <47E14C52.3040300@eu.citrix.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050101020800040509040308" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------050101020800040509040308 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi all, the patch I am attaching enables buffer sharing for vnc when the linesize != width * depth. Best Regards, Stefano Stabellini Signed-off-by: Stefano Stabellini --------------050101020800040509040308 Content-Type: text/x-patch; name="linesize.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="linesize.patch" diff -r d1e91aba2758 tools/ioemu/hw/vga.c --- a/tools/ioemu/hw/vga.c Wed Mar 19 12:41:48 2008 +0000 +++ b/tools/ioemu/hw/vga.c Wed Mar 19 17:19:18 2008 +0000 @@ -1148,7 +1148,7 @@ static void vga_draw_text(VGAState *s, i cw != s->last_cw || cheight != s->last_ch) { s->last_scr_width = width * cw; s->last_scr_height = height * cheight; - dpy_resize(s->ds, s->last_scr_width, s->last_scr_height, s->last_scr_width * (depth / 8)); + dpy_resize(s->ds, s->last_scr_width, s->last_scr_height, s->last_scr_width * (s->ds->depth / 8)); s->last_width = width; s->last_height = height; s->last_ch = cheight; @@ -1571,7 +1571,7 @@ static void vga_draw_graphic(VGAState *s vga_draw_line = vga_draw_line_table[v * NB_DEPTHS + get_depth_index(s->ds)]; if (disp_width != s->last_width || height != s->last_height) { - dpy_resize(s->ds, disp_width, height, disp_width * (depth / 8)); + dpy_resize(s->ds, disp_width, height, s->line_offset); s->last_scr_width = disp_width; s->last_scr_height = height; s->last_width = disp_width; diff -r d1e91aba2758 tools/ioemu/vnc.c --- a/tools/ioemu/vnc.c Wed Mar 19 12:41:48 2008 +0000 +++ b/tools/ioemu/vnc.c Wed Mar 19 16:52:29 2008 +0000 @@ -369,20 +369,17 @@ static void vnc_dpy_resize(DisplayState VncState *vs = ds->opaque; int o; - if (linesize != w * vs->depth) - ds->shared_buf = 0; - if (!ds->shared_buf) { if (allocated) - ds->data = realloc(ds->data, w * h * vs->depth); + ds->data = realloc(ds->data, h * linesize); else - ds->data = malloc(w * h * vs->depth); + ds->data = malloc(h * linesize); allocated = 1; } else if (allocated) { free(ds->data); allocated = 0; } - vs->old_data = realloc(vs->old_data, w * h * vs->depth); + vs->old_data = realloc(vs->old_data, h * 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])); @@ -399,7 +396,7 @@ static void vnc_dpy_resize(DisplayState size_changed = ds->width != w || ds->height != h; ds->width = w; ds->height = h; - ds->linesize = w * vs->depth; + ds->linesize = linesize; if (vs->csock != -1 && vs->has_resize && size_changed) { vs->width = ds->width; vs->height = ds->height; @@ -2494,6 +2491,7 @@ void vnc_display_init(DisplayState *ds) vs->ds->width = 640; vs->ds->height = 400; + vs->ds->linesize = 640 * 4; vnc_dpy_colourdepth(vs->ds, 24); } --------------050101020800040509040308 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------050101020800040509040308--