Commit e3697092228770c3b23d0bf524e18b508b109932

Authored by aurel32
1 parent 570724dc

Fix vga on PPC

Fix crash introduced in revision 6336.

(Stefano Stabellini)

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6349 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 34 additions and 34 deletions
hw/vga.c
@@ -1618,6 +1618,40 @@ static void vga_draw_graphic(VGAState *s, int full_update) @@ -1618,6 +1618,40 @@ static void vga_draw_graphic(VGAState *s, int full_update)
1618 s->double_scan = double_scan; 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 if (shift_control == 0) { 1655 if (shift_control == 0) {
1622 full_update |= update_palette16(s); 1656 full_update |= update_palette16(s);
1623 if (s->sr[0x01] & 8) { 1657 if (s->sr[0x01] & 8) {
@@ -1669,40 +1703,6 @@ static void vga_draw_graphic(VGAState *s, int full_update) @@ -1669,40 +1703,6 @@ static void vga_draw_graphic(VGAState *s, int full_update)
1669 } 1703 }
1670 vga_draw_line = vga_draw_line_table[v * NB_DEPTHS + get_depth_index(s->ds)]; 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 if (!is_buffer_shared(s->ds->surface) && s->cursor_invalidate) 1706 if (!is_buffer_shared(s->ds->surface) && s->cursor_invalidate)
1707 s->cursor_invalidate(s); 1707 s->cursor_invalidate(s);
1708 1708