qemu-devel
[Top][All Lists]
Advanced

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

[PATCH v4 12/12] hw/display/artist: Fix invalidation of lines near scree


From: Helge Deller
Subject: [PATCH v4 12/12] hw/display/artist: Fix invalidation of lines near screen border
Date: Sun, 9 Aug 2020 07:24:02 +0200

From: Sven Schnelle <svens@stackframe.org>

If parts of the invalidated screen lines are outside of the VRAM buffer,
the code skips the whole invalidate. This is incorrect when only parts
of the buffer are invisble - which is the case when the mouse cursor is
located near the screen border.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Helge Deller <deller@gmx.de>
---
 hw/display/artist.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/hw/display/artist.c b/hw/display/artist.c
index 09d8b541f5..720db179ab 100644
--- a/hw/display/artist.c
+++ b/hw/display/artist.c
@@ -206,7 +206,12 @@ static void artist_invalidate_lines(struct vram_buffer 
*buf,
                                     int starty, int height)
 {
     int start = starty * buf->width;
-    int size = height * buf->width;
+    int size;
+
+    if (starty + height > buf->height)
+        height = buf->height - starty;
+
+    size = height * buf->width;

     if (start + size <= buf->size) {
         memory_region_set_dirty(&buf->mr, start, size);
--
2.21.3




reply via email to

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