Bug 81886 - After rotating the screen the cursor is doubled
Summary: After rotating the screen the cursor is doubled
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: Chris Wilson
QA Contact: Intel GFX Bugs mailing list
Depends on:
Reported: 2014-07-29 19:45 UTC by brbrbr.10.Toranaga-San
Modified: 2015-04-08 18:10 UTC (History)
0 users

See Also:
i915 platform:
i915 features:

A screenshot illustrating the problem (81.79 KB, text/plain)
2014-07-29 19:45 UTC, brbrbr.10.Toranaga-San
no flags Details

Description brbrbr.10.Toranaga-San 2014-07-29 19:45:22 UTC
Created attachment 103655 [details]
A screenshot illustrating the problem
Comment 1 brbrbr.10.Toranaga-San 2014-07-29 19:50:27 UTC
If you turn the screen by 90 degrees and then turn it back to normal, a second cursor (rotated by 90 degrees as well) appears.

To reproduce:

xrandr --output <output> --rotate left

# do something, click a few buttons...

xrandr --output <output> --rotate normal

The attached screenshot shows the problem. (Sorry for the quality, capturing the cursor as well is apparently pretty hard to do , even with disabled hardware cursor)


xorg-xrandr 1.4.2
xorg-server 1.16.0
xf86-video-intel 2.99.914
Comment 2 brbrbr.10.Toranaga-San 2014-07-29 19:52:35 UTC
Link to the picture: http://www.image-share.com/ijpg-2643-6.html
Comment 3 Chris Wilson 2014-07-29 20:11:05 UTC
Please try (xf86-video-intel):

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 8964e77..eed68d3 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4294,7 +4294,7 @@ static struct sna_cursor *__sna_get_cursor(struct sna *sna, xf86CrtcPtr crtc)
                image = sna->cursor.scratch;
                cursor->last_width = cursor->last_height = size;
-       if (width < cursor->last_width || height < cursor->last_height)
+       if (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) {
Comment 4 brbrbr.10.Toranaga-San 2014-07-29 21:44:31 UTC
Well, I (manually) patched sna_display.c and recompiled the driver. As far as I can see the fix works. Thanks a lot for the quick response, I have never seen a bug fixed 5 hours after the initial report. Very impressive :)
Comment 5 Chris Wilson 2014-07-30 05:58:18 UTC
commit a88795c64123e4084044451d8861838ea904abd9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Jul 29 21:11:09 2014 +0100

    sna: Clear cursor image after rotation
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81886
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 6 elichai2 2015-04-08 17:56:19 UTC
This bug still affects me.

Description:	Ubuntu 14.10
Linux Lenovo-G510 3.16.0-34-generic #45-Ubuntu SMP Mon Mar 23 17:21:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Comment 7 Chris Wilson 2015-04-08 18:10:04 UTC
Yet the bug is fixed upstream.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.