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;
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;
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]));
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;
vs->ds->width = 640;
vs->ds->height = 400;
+ vs->ds->linesize = 640 * 4;
vnc_dpy_colourdepth(vs->ds, 24);
}