summaryrefslogtreecommitdiff
path: root/src/sna/sna_display.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sna/sna_display.c')
-rw-r--r--src/sna/sna_display.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 3f2b9125..6c43bb08 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3160,14 +3160,26 @@ static struct sna_cursor *__sna_get_cursor(struct sna *sna, xf86CrtcPtr crtc)
size = sna->cursor.size;
for (cursor = sna->cursor.cursors; cursor; cursor = cursor->next) {
- if (cursor->alloc >= 4*size*size && cursor->serial != sna->cursor.serial) {
+ if (cursor->alloc >= 4*size*size && cursor->rotation == rotation) {
__DBG(("%s: stealing handle=%d, serial=%d, rotation=%d, alloc=%d\n",
__FUNCTION__, cursor->handle, cursor->serial, cursor->rotation, cursor->alloc));
+ assert(cursor->serial != sna->cursor.serial);
break;
}
}
if (cursor == NULL) {
+ for (cursor = sna->cursor.cursors; cursor; cursor = cursor->next) {
+ if (cursor->alloc >= 4*size*size && cursor->serial != sna->cursor.serial) {
+ __DBG(("%s: stealing handle=%d, serial=%d, rotation=%d, alloc=%d\n",
+ __FUNCTION__, cursor->handle, cursor->serial, cursor->rotation, cursor->alloc));
+ assert(cursor->rotation != sna->cursor.rotation);
+ break;
+ }
+ }
+ }
+
+ if (cursor == NULL) {
cursor = __sna_create_cursor(sna);
if (cursor == NULL)
return NULL;