]> git.proxmox.com Git - mirror_qemu.git/commitdiff
hw/display/artist: Fix invalidation of lines near screen border
authorSven Schnelle <svens@stackframe.org>
Sat, 8 Aug 2020 18:51:57 +0000 (20:51 +0200)
committerHelge Deller <deller@gmx.de>
Wed, 26 Aug 2020 21:04:00 +0000 (23:04 +0200)
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

index a959b2c1583abeba98f54b88e7aac8f527410510..71982559c6e4c3d1ead74dcc863d04c11d1c1daa 100644 (file)
@@ -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);