Commit 550be12730cfe3c2374deed6189bad281f476ec7
1 parent
979b67ad
fixed refresh logic (initial patch by Igor Kovalenko)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2077 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
6 additions
and
6 deletions
hw/tcx.c
| @@ -31,7 +31,7 @@ typedef struct TCXState { | @@ -31,7 +31,7 @@ typedef struct TCXState { | ||
| 31 | uint32_t addr; | 31 | uint32_t addr; |
| 32 | DisplayState *ds; | 32 | DisplayState *ds; |
| 33 | uint8_t *vram; | 33 | uint8_t *vram; |
| 34 | - unsigned long vram_offset; | 34 | + ram_addr_t vram_offset; |
| 35 | uint16_t width, height; | 35 | uint16_t width, height; |
| 36 | uint8_t r[256], g[256], b[256]; | 36 | uint8_t r[256], g[256], b[256]; |
| 37 | uint8_t dac_index, dac_state; | 37 | uint8_t dac_index, dac_state; |
| @@ -86,8 +86,8 @@ static void tcx_draw_line8(TCXState *s1, uint8_t *d, | @@ -86,8 +86,8 @@ static void tcx_draw_line8(TCXState *s1, uint8_t *d, | ||
| 86 | static void tcx_update_display(void *opaque) | 86 | static void tcx_update_display(void *opaque) |
| 87 | { | 87 | { |
| 88 | TCXState *ts = opaque; | 88 | TCXState *ts = opaque; |
| 89 | - uint32_t page; | ||
| 90 | - int y, page_min, page_max, y_start, dd, ds; | 89 | + ram_addr_t page, page_min, page_max; |
| 90 | + int y, y_start, dd, ds; | ||
| 91 | uint8_t *d, *s; | 91 | uint8_t *d, *s; |
| 92 | void (*f)(TCXState *s1, uint8_t *d, const uint8_t *s, int width); | 92 | void (*f)(TCXState *s1, uint8_t *d, const uint8_t *s, int width); |
| 93 | 93 | ||
| @@ -95,8 +95,8 @@ static void tcx_update_display(void *opaque) | @@ -95,8 +95,8 @@ static void tcx_update_display(void *opaque) | ||
| 95 | return; | 95 | return; |
| 96 | page = ts->vram_offset; | 96 | page = ts->vram_offset; |
| 97 | y_start = -1; | 97 | y_start = -1; |
| 98 | - page_min = 0x7fffffff; | ||
| 99 | - page_max = -1; | 98 | + page_min = 0xffffffff; |
| 99 | + page_max = 0; | ||
| 100 | d = ts->ds->data; | 100 | d = ts->ds->data; |
| 101 | s = ts->vram; | 101 | s = ts->vram; |
| 102 | dd = ts->ds->linesize; | 102 | dd = ts->ds->linesize; |
| @@ -154,7 +154,7 @@ static void tcx_update_display(void *opaque) | @@ -154,7 +154,7 @@ static void tcx_update_display(void *opaque) | ||
| 154 | ts->width, y - y_start); | 154 | ts->width, y - y_start); |
| 155 | } | 155 | } |
| 156 | /* reset modified pages */ | 156 | /* reset modified pages */ |
| 157 | - if (page_max != -1) { | 157 | + if (page_min <= page_max) { |
| 158 | cpu_physical_memory_reset_dirty(page_min, page_max + TARGET_PAGE_SIZE, | 158 | cpu_physical_memory_reset_dirty(page_min, page_max + TARGET_PAGE_SIZE, |
| 159 | VGA_DIRTY_FLAG); | 159 | VGA_DIRTY_FLAG); |
| 160 | } | 160 | } |