qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Missing cirrus_invalidate_region() in cirrus_do


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH] Missing cirrus_invalidate_region() in cirrus_do_copy()
Date: Tue, 17 Feb 2009 09:39:42 +0100


On 16.02.2009, at 23:09, Brian Kress <address@hidden> wrote:

After doing a video to video copy, cirrus_do_copy() in cirrus_vga.c does a conditional call to cirrus_invalidate_region() with an "if (!notify)" test. However at this point the blt has already been done so it seems like this call should be made unconditionally. The patch below fixes some display update problems when dragging windows under both X (fedora
10 guest) and a Windows XP guest.

Hm - I've run into this too, exposed the most using a gnome guest on vnc using copyrect.

Basically from what I understood, the conditional is

If display supports copyrect
  tell it to copy
Else
  draw yourself

And with this patch you're basically reverting to 'draw yourself' always, no?

I boiled things far enough to see that the blt addresses were completely off. The next idea on my list was to check if this is a Linux driver issue by running the same image on a real cirrus logic.

Alex



Signed-off-by: Brian Kress <address@hidden>

Index: hw/cirrus_vga.c
===================================================================
--- hw/cirrus_vga.c    (revision 6626)
+++ hw/cirrus_vga.c    (working copy)
@@ -781,10 +781,9 @@
    /* we don't have to notify the display that this portion has
       changed since qemu_console_copy implies this */

-    if (!notify)
-    cirrus_invalidate_region(s, s->cirrus_blt_dstaddr,
-                 s->cirrus_blt_dstpitch, s->cirrus_blt_width,
-                 s->cirrus_blt_height);
+    cirrus_invalidate_region(s, s->cirrus_blt_dstaddr,
+                s->cirrus_blt_dstpitch, s->cirrus_blt_width,
+                s->cirrus_blt_height);
}

static int cirrus_bitblt_videotovideo_copy(CirrusVGAState * s)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]