[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] ioemu: Fix vnc buffer sharing when linesize != width * depth.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1206037732 0 # Node ID c8c8b5c5f6d77a47bfa1869ac60e4975fa764ad6 # Parent 491a3b62ae5b697485e8f6eaf1da1f9ba1ef1ab3 ioemu: Fix vnc buffer sharing when linesize != width * depth. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> --- tools/ioemu/vnc.c | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) diff -r 491a3b62ae5b -r c8c8b5c5f6d7 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:28: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-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |