On 03/02/2022 00:05, Philippe Mathieu-Daudé via wrote:
When resetting we don't want to *reset* the dirty bitmap,
we want to *set* it to mark the entire VRAM dirty due to
the memset() call.
Replace memory_region_reset_dirty() by tcx_set_dirty()
which conveniently set the correct ranges dirty.
Suggested-by: Mark Cave-Ayland <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
Supersedes: <[email protected]>
---
hw/display/tcx.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index d4d09d0df8..90e2975e35 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -371,8 +371,7 @@ static void tcx_reset(DeviceState *d)
s->r[258] = s->g[258] = s->b[258] = 255;
update_palette_entries(s, 0, 260);
memset(s->vram, 0, MAXX*MAXY);
- memory_region_reset_dirty(&s->vram_mem, 0, MAXX * MAXY * (1 + 4 + 4),
- DIRTY_MEMORY_VGA);
+ tcx_set_dirty(s, 0, MAXX * MAXY);
s->dac_index = 0;
s->dac_state = 0;
s->cursx = 0xf000; /* Put cursor off screen */
I don't think the size calculation of MAXX * MAXY is correct when comparing with
above? I think it's easiest just to use the same approach as update_palette_entries()
here e.g.
tcx_set_dirty(s, 0, memory_region_size(&s->vram_mem));
ATB,
Mark.