Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.2:Update
xf86-video-intel.6276
U_sna-Ensure-we-re-calculate-fb_to_cursor-trans...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File U_sna-Ensure-we-re-calculate-fb_to_cursor-transform-if.patch of Package xf86-video-intel.6276
From a1a0f76e55d8dfbbf27a288b71b4bd3edbfbe836 Mon Sep 17 00:00:00 2001 From: Matt Roper <matthew.d.roper@intel.com> Date: Tue, 15 Nov 2016 14:36:19 -0800 Subject: [PATCH] sna: Ensure we re-calculate fb_to_cursor transform if sharing cursor If we find that we're sharing the cursor, we wind up bailing out of __sna_get_cursor() before the fb_to_cursor transform is computed. For rotated displays, this can prevent the hotspot transformation from happening properly, so the cursor's visible position won't match the software's idea of where it is. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Matt Roper <matthew.d.roper@intel.com> --- src/sna/sna_display.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -5589,20 +5589,6 @@ static struct sna_cursor *__sna_get_curs transformed = to_sna_crtc(crtc)->cursor_transform; rotation = (!transformed && crtc->transform_in_use) ? crtc->rotation : RR_Rotate_0; - /* Don't allow phys cursor sharing */ - if (sna->cursor.use_gtt && !transformed) { - for (cursor = sna->cursor.cursors; cursor; cursor = cursor->next) { - if (cursor->serial == sna->cursor.serial && - cursor->rotation == rotation && - !cursor->transformed) { - __DBG(("%s: reusing handle=%d, serial=%d, rotation=%d, size=%d\n", - __FUNCTION__, cursor->handle, cursor->serial, cursor->rotation, cursor->size)); - assert(cursor->size == sna->cursor.size); - return cursor; - } - } - } - if (transformed) { struct pixman_box16 box; @@ -5660,6 +5646,20 @@ static struct sna_cursor *__sna_get_curs to_sna_crtc(crtc)->cursor_to_fb.m[2][2])); } + /* Don't allow phys cursor sharing */ + if (sna->cursor.use_gtt && !transformed) { + for (cursor = sna->cursor.cursors; cursor; cursor = cursor->next) { + if (cursor->serial == sna->cursor.serial && + cursor->rotation == rotation && + !cursor->transformed) { + __DBG(("%s: reusing handle=%d, serial=%d, rotation=%d, size=%d\n", + __FUNCTION__, cursor->handle, cursor->serial, cursor->rotation, cursor->size)); + assert(cursor->size == sna->cursor.size); + return cursor; + } + } + } + cursor = to_sna_crtc(crtc)->cursor; if (cursor && cursor->alloc < 4*size*size) cursor = NULL;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor