summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2014-08-08 07:25:03 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2014-08-08 07:26:54 +0100
commit6f69188cb2959abfb2fcd3f81cd4146aa3876bb5 (patch)
tree4b5c985ca9849fe9335b47c46998bc2383f3063b
parentfab976cef80aad2c573cfc6febeec5ec8e3bab06 (diff)
sna: Clear old cursors when resizing
When changing the stride on a cursor, we have to clear the whole area and not just the rectangle outside of our overwritten area. Reported-by: Jan Alexander Steffens <jan.steffens@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82273 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--src/sna/sna_display.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 116f74be..87defbef 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4319,7 +4319,10 @@ static struct sna_cursor *__sna_get_cursor(struct sna *sna, xf86CrtcPtr crtc)
image = cursor->image;
if (image == NULL)
image = sna->cursor.scratch;
- if (width < cursor->last_width || height < cursor->last_height || rotation != cursor->rotation)
+ if (size > cursor->size ||
+ width < cursor->last_width ||
+ height < cursor->last_height ||
+ rotation != cursor->rotation)
memset(image, 0, 4*size*size);
if (rotation == RR_Rotate_0) {
if (argb == NULL) {