aboutsummaryrefslogtreecommitdiff
path: root/hw/vmware_vga.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/vmware_vga.c')
-rw-r--r--hw/vmware_vga.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
index ae913270f6..e3d5706139 100644
--- a/hw/vmware_vga.c
+++ b/hw/vmware_vga.c
@@ -771,8 +771,12 @@ static void vmsvga_value_write(void *opaque, uint32_t address, uint32_t value)
s->height = -1;
s->invalidated = 1;
s->vga.invalidate(&s->vga);
- if (s->enable)
- s->fb_size = ((s->depth + 7) >> 3) * s->new_width * s->new_height;
+ if (s->enable) {
+ s->fb_size = ((s->depth + 7) >> 3) * s->new_width * s->new_height;
+ vga_dirty_log_stop(&s->vga);
+ } else {
+ vga_dirty_log_start(&s->vga);
+ }
break;
case SVGA_REG_WIDTH:
@@ -948,6 +952,8 @@ static void vmsvga_reset(struct vmsvga_state_s *s)
break;
}
s->syncing = 0;
+
+ vga_dirty_log_start(&s->vga);
}
static void vmsvga_invalidate_display(void *opaque)
@@ -1119,7 +1125,6 @@ static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
vmsvga_screen_dump,
vmsvga_text_update, s);
- vmsvga_reset(s);
s->fifo_size = SVGA_FIFO_SIZE;
s->fifo_offset = qemu_ram_alloc(s->fifo_size);
@@ -1130,7 +1135,10 @@ static void vmsvga_init(struct vmsvga_state_s *s, int vga_ram_size)
vmstate_register(0, &vmstate_vga_common, &s->vga);
vga_init_vbe(&s->vga);
+
rom_add_vga(VGABIOS_FILENAME);
+
+ vmsvga_reset(s);
}
static void pci_vmsvga_map_ioport(PCIDevice *pci_dev, int region_num,
@@ -1172,7 +1180,7 @@ static void pci_vmsvga_map_mem(PCIDevice *pci_dev, int region_num,
s->vga.map_addr = addr;
s->vga.map_end = addr + s->vga.vram_size;
- vga_dirty_log_start(&s->vga);
+ vga_dirty_log_restart(&s->vga);
}
static void pci_vmsvga_map_fifo(PCIDevice *pci_dev, int region_num,