Revision e3697092 hw/vga.c
b/hw/vga.c | ||
---|---|---|
1618 | 1618 |
s->double_scan = double_scan; |
1619 | 1619 |
} |
1620 | 1620 |
|
1621 |
depth = s->get_bpp(s); |
|
1622 |
if (s->line_offset != s->last_line_offset || |
|
1623 |
disp_width != s->last_width || |
|
1624 |
height != s->last_height || |
|
1625 |
s->last_depth != depth) { |
|
1626 |
if (depth == 16 || depth == 32) { |
|
1627 |
if (is_graphic_console()) { |
|
1628 |
qemu_free_displaysurface(s->ds->surface); |
|
1629 |
s->ds->surface = qemu_create_displaysurface_from(disp_width, height, depth, |
|
1630 |
s->line_offset, |
|
1631 |
s->vram_ptr + (s->start_addr * 4)); |
|
1632 |
dpy_resize(s->ds); |
|
1633 |
} else { |
|
1634 |
qemu_console_resize(s->ds, disp_width, height); |
|
1635 |
} |
|
1636 |
} else { |
|
1637 |
qemu_console_resize(s->ds, disp_width, height); |
|
1638 |
} |
|
1639 |
s->last_scr_width = disp_width; |
|
1640 |
s->last_scr_height = height; |
|
1641 |
s->last_width = disp_width; |
|
1642 |
s->last_height = height; |
|
1643 |
s->last_line_offset = s->line_offset; |
|
1644 |
s->last_depth = depth; |
|
1645 |
full_update = 1; |
|
1646 |
} else if (is_graphic_console() && is_buffer_shared(s->ds->surface) && |
|
1647 |
(full_update || s->ds->surface->data != s->vram_ptr + (s->start_addr * 4))) { |
|
1648 |
s->ds->surface->data = s->vram_ptr + (s->start_addr * 4); |
|
1649 |
dpy_setdata(s->ds); |
|
1650 |
} |
|
1651 |
|
|
1652 |
s->rgb_to_pixel = |
|
1653 |
rgb_to_pixel_dup_table[get_depth_index(s->ds)]; |
|
1654 |
|
|
1621 | 1655 |
if (shift_control == 0) { |
1622 | 1656 |
full_update |= update_palette16(s); |
1623 | 1657 |
if (s->sr[0x01] & 8) { |
... | ... | |
1669 | 1703 |
} |
1670 | 1704 |
vga_draw_line = vga_draw_line_table[v * NB_DEPTHS + get_depth_index(s->ds)]; |
1671 | 1705 |
|
1672 |
depth = s->get_bpp(s); |
|
1673 |
if (s->line_offset != s->last_line_offset || |
|
1674 |
disp_width != s->last_width || |
|
1675 |
height != s->last_height || |
|
1676 |
s->last_depth != depth) { |
|
1677 |
if (depth == 16 || depth == 32) { |
|
1678 |
if (is_graphic_console()) { |
|
1679 |
qemu_free_displaysurface(s->ds->surface); |
|
1680 |
s->ds->surface = qemu_create_displaysurface_from(disp_width, height, depth, |
|
1681 |
s->line_offset, |
|
1682 |
s->vram_ptr + (s->start_addr * 4)); |
|
1683 |
dpy_resize(s->ds); |
|
1684 |
} else { |
|
1685 |
qemu_console_resize(s->ds, disp_width, height); |
|
1686 |
} |
|
1687 |
} else { |
|
1688 |
qemu_console_resize(s->ds, disp_width, height); |
|
1689 |
} |
|
1690 |
s->last_scr_width = disp_width; |
|
1691 |
s->last_scr_height = height; |
|
1692 |
s->last_width = disp_width; |
|
1693 |
s->last_height = height; |
|
1694 |
s->last_line_offset = s->line_offset; |
|
1695 |
s->last_depth = depth; |
|
1696 |
full_update = 1; |
|
1697 |
} else if (is_graphic_console() && is_buffer_shared(s->ds->surface) && |
|
1698 |
(full_update || s->ds->surface->data != s->vram_ptr + (s->start_addr * 4))) { |
|
1699 |
s->ds->surface->data = s->vram_ptr + (s->start_addr * 4); |
|
1700 |
dpy_setdata(s->ds); |
|
1701 |
} |
|
1702 |
|
|
1703 |
s->rgb_to_pixel = |
|
1704 |
rgb_to_pixel_dup_table[get_depth_index(s->ds)]; |
|
1705 |
|
|
1706 | 1706 |
if (!is_buffer_shared(s->ds->surface) && s->cursor_invalidate) |
1707 | 1707 |
s->cursor_invalidate(s); |
1708 | 1708 |
|
Also available in: Unified diff