diff mbox

vga: Fix full updates in graphic mode

Message ID 4F313D3C.2000906@siemens.com
State New
Headers show

Commit Message

Jan Kiszka Feb. 7, 2012, 3:03 p.m. UTC
This fixes the regression introduced by cd7a45c95e: We lost the or'ing
with the full_update flag.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

Applies on top of the other related fix:
http://thread.gmane.org/gmane.comp.emulators.qemu/134958

 hw/vga.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

Comments

Blue Swirl Feb. 11, 2012, 11:09 a.m. UTC | #1
Thanks, applied.

On Tue, Feb 7, 2012 at 15:03, Jan Kiszka <jan.kiszka@siemens.com> wrote:
> This fixes the regression introduced by cd7a45c95e: We lost the or'ing
> with the full_update flag.
>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
>
> Applies on top of the other related fix:
> http://thread.gmane.org/gmane.comp.emulators.qemu/134958
>
>  hw/vga.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/hw/vga.c b/hw/vga.c
> index d27700d..c1029db 100644
> --- a/hw/vga.c
> +++ b/hw/vga.c
> @@ -1777,10 +1777,11 @@ static void vga_draw_graphic(VGACommonState *s, int full_update)
>         if (!(s->cr[VGA_CRTC_MODE] & 2)) {
>             addr = (addr & ~0x8000) | ((y1 & 2) << 14);
>         }
> +        update = full_update;
>         page0 = addr;
>         page1 = addr + bwidth - 1;
> -        update = memory_region_get_dirty(&s->vram, page0, page1 - page0,
> -                                         DIRTY_MEMORY_VGA);
> +        update |= memory_region_get_dirty(&s->vram, page0, page1 - page0,
> +                                          DIRTY_MEMORY_VGA);
>         /* explicit invalidation for the hardware cursor */
>         update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;
>         if (update) {
> --
> 1.7.3.4
diff mbox

Patch

diff --git a/hw/vga.c b/hw/vga.c
index d27700d..c1029db 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -1777,10 +1777,11 @@  static void vga_draw_graphic(VGACommonState *s, int full_update)
         if (!(s->cr[VGA_CRTC_MODE] & 2)) {
             addr = (addr & ~0x8000) | ((y1 & 2) << 14);
         }
+        update = full_update;
         page0 = addr;
         page1 = addr + bwidth - 1;
-        update = memory_region_get_dirty(&s->vram, page0, page1 - page0,
-                                         DIRTY_MEMORY_VGA);
+        update |= memory_region_get_dirty(&s->vram, page0, page1 - page0,
+                                          DIRTY_MEMORY_VGA);
         /* explicit invalidation for the hardware cursor */
         update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;
         if (update) {