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