This removes the last user of memory_region_test_and_clear_dirty
outside memory.c.
Cc: Hervé Poussineau <hpoussin@reactos.org>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
Untested... not sure where to get mips_bios.bin, or a kernel
that works with -M magnum. Can anybody help? I'd like to
get rid of memory_region_test_and_clear_dirty.
hw/display/g364fb.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c
index 86557d14a9..86452de780 100644
--- a/hw/display/g364fb.c
+++ b/hw/display/g364fb.c
@@ -62,15 +62,15 @@ typedef struct G364State {
#define G364_PAGE_SIZE 4096
-static inline int check_dirty(G364State *s, ram_addr_t page)
+static inline int check_dirty(G364State *s, DirtyBitmapSnapshot *snap, ram_addr_t page)
{
- return memory_region_test_and_clear_dirty(&s->mem_vram, page, G364_PAGE_SIZE,
- DIRTY_MEMORY_VGA);
+ return memory_region_snapshot_get_dirty(&s->mem_vram, snap, page, G364_PAGE_SIZE);
}
static void g364fb_draw_graphic8(G364State *s)
{
DisplaySurface *surface = qemu_console_surface(s->con);
+ DirtyBitmapSnapshot *snap;
int i, w;
uint8_t *vram;
uint8_t *data_display, *dd;
@@ -122,8 +122,10 @@ static void g364fb_draw_graphic8(G364State *s)
vram = s->vram + s->top_of_screen;
/* XXX: out of range in vram? */
data_display = dd = surface_data(surface);
+ snap = memory_region_snapshot_and_clear_dirty(&s->mem_vram, 0, s->vram_size,
+ DIRTY_MEMORY_VGA);
while (y < s->height) {
- if (check_dirty(s, page)) {
+ if (check_dirty(s, snap, page)) {
if (y < ymin)
ymin = ymax = y;
if (x < xmin)
--
2.14.3
Le 08/02/2018 à 19:22, Paolo Bonzini a écrit : > This removes the last user of memory_region_test_and_clear_dirty > outside memory.c. > > Cc: Hervé Poussineau <hpoussin@reactos.org> > Cc: Aurelien Jarno <aurelien@aurel32.net> > Cc: Yongbok Kim <yongbok.kim@mips.com> > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Tested-by: Hervé Poussineau <hpoussin@reactos.org> Tested with Windows NT 4.0 > --- > Untested... not sure where to get mips_bios.bin, or a kernel > that works with -M magnum. Can anybody help? I'd like to > get rid of memory_region_test_and_clear_dirty. > > hw/display/g364fb.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/hw/display/g364fb.c b/hw/display/g364fb.c > index 86557d14a9..86452de780 100644 > --- a/hw/display/g364fb.c > +++ b/hw/display/g364fb.c > @@ -62,15 +62,15 @@ typedef struct G364State { > > #define G364_PAGE_SIZE 4096 > > -static inline int check_dirty(G364State *s, ram_addr_t page) > +static inline int check_dirty(G364State *s, DirtyBitmapSnapshot *snap, ram_addr_t page) > { > - return memory_region_test_and_clear_dirty(&s->mem_vram, page, G364_PAGE_SIZE, > - DIRTY_MEMORY_VGA); > + return memory_region_snapshot_get_dirty(&s->mem_vram, snap, page, G364_PAGE_SIZE); > } > > static void g364fb_draw_graphic8(G364State *s) > { > DisplaySurface *surface = qemu_console_surface(s->con); > + DirtyBitmapSnapshot *snap; > int i, w; > uint8_t *vram; > uint8_t *data_display, *dd; > @@ -122,8 +122,10 @@ static void g364fb_draw_graphic8(G364State *s) > vram = s->vram + s->top_of_screen; > /* XXX: out of range in vram? */ > data_display = dd = surface_data(surface); > + snap = memory_region_snapshot_and_clear_dirty(&s->mem_vram, 0, s->vram_size, > + DIRTY_MEMORY_VGA); > while (y < s->height) { > - if (check_dirty(s, page)) { > + if (check_dirty(s, snap, page)) { > if (y < ymin) > ymin = ymax = y; > if (x < xmin) >
© 2016 - 2024 Red Hat, Inc.