Commit 7b17d41e968bd0826b914ec7ed036cf9c6a51615
1 parent
d6bfa22f
Cirrus VGA display fix
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@893 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
11 additions
and
5 deletions
hw/vga.c
... | ... | @@ -147,7 +147,7 @@ static uint32_t expand4[256]; |
147 | 147 | static uint16_t expand2[256]; |
148 | 148 | static uint8_t expand4to8[16]; |
149 | 149 | |
150 | -VGAState vga_state; | |
150 | +VGAState *vga_state; | |
151 | 151 | int vga_io_memory; |
152 | 152 | |
153 | 153 | static uint32_t vga_ioport_read(void *opaque, uint32_t addr) |
... | ... | @@ -1507,7 +1507,7 @@ static void vga_draw_blank(VGAState *s, int full_update) |
1507 | 1507 | |
1508 | 1508 | void vga_update_display(void) |
1509 | 1509 | { |
1510 | - VGAState *s = &vga_state; | |
1510 | + VGAState *s = vga_state; | |
1511 | 1511 | int full_update, graphic_mode; |
1512 | 1512 | |
1513 | 1513 | if (s->ds->depth == 0) { |
... | ... | @@ -1674,7 +1674,7 @@ static int vga_load(QEMUFile *f, void *opaque, int version_id) |
1674 | 1674 | static void vga_map(PCIDevice *pci_dev, int region_num, |
1675 | 1675 | uint32_t addr, uint32_t size, int type) |
1676 | 1676 | { |
1677 | - VGAState *s = &vga_state; | |
1677 | + VGAState *s = vga_state; | |
1678 | 1678 | |
1679 | 1679 | cpu_register_physical_memory(addr, s->vram_size, s->vram_offset); |
1680 | 1680 | } |
... | ... | @@ -1715,6 +1715,8 @@ void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, |
1715 | 1715 | s->ds = ds; |
1716 | 1716 | s->get_bpp = vga_get_bpp; |
1717 | 1717 | s->get_offsets = vga_get_offsets; |
1718 | + /* XXX: currently needed for display */ | |
1719 | + vga_state = s; | |
1718 | 1720 | } |
1719 | 1721 | |
1720 | 1722 | |
... | ... | @@ -1722,7 +1724,11 @@ int vga_initialize(DisplayState *ds, uint8_t *vga_ram_base, |
1722 | 1724 | unsigned long vga_ram_offset, int vga_ram_size, |
1723 | 1725 | int is_pci) |
1724 | 1726 | { |
1725 | - VGAState *s = &vga_state; | |
1727 | + VGAState *s; | |
1728 | + | |
1729 | + s = qemu_mallocz(sizeof(VGAState)); | |
1730 | + if (!s) | |
1731 | + return -1; | |
1726 | 1732 | |
1727 | 1733 | vga_common_init(s, ds, vga_ram_base, vga_ram_offset, vga_ram_size); |
1728 | 1734 | |
... | ... | @@ -1857,7 +1863,7 @@ static int ppm_save(const char *filename, uint8_t *data, |
1857 | 1863 | available */ |
1858 | 1864 | void vga_screen_dump(const char *filename) |
1859 | 1865 | { |
1860 | - VGAState *s = &vga_state; | |
1866 | + VGAState *s = vga_state; | |
1861 | 1867 | DisplayState *saved_ds, ds1, *ds = &ds1; |
1862 | 1868 | |
1863 | 1869 | /* XXX: this is a little hackish */ | ... | ... |