sm501: fix screen redraw
Due to signed/unsigned comparison, the dirty bits are never reset, and the screen redrawn each time. Fix that by only using ram_addr_t types, and looking for page_min != addr_max instead. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
b646968336
commit
543c4c94cf
@ -1274,8 +1274,8 @@ static void sm501_draw_crt(SM501State * s)
|
||||
draw_hwc_line_func * draw_hwc_line = NULL;
|
||||
int full_update = 0;
|
||||
int y_start = -1;
|
||||
int page_min = 0x7fffffff;
|
||||
int page_max = -1;
|
||||
ram_addr_t page_min = ~0l;
|
||||
ram_addr_t page_max = 0l;
|
||||
ram_addr_t offset = s->local_mem_offset;
|
||||
|
||||
/* choose draw_line function */
|
||||
@ -1371,10 +1371,11 @@ static void sm501_draw_crt(SM501State * s)
|
||||
dpy_update(s->ds, 0, y_start, width, y - y_start);
|
||||
|
||||
/* clear dirty flags */
|
||||
if (page_max != -1)
|
||||
if (page_min != ~0l) {
|
||||
cpu_physical_memory_reset_dirty(page_min, page_max + TARGET_PAGE_SIZE,
|
||||
VGA_DIRTY_FLAG);
|
||||
}
|
||||
}
|
||||
|
||||
static void sm501_update_display(void *opaque)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user