sna: Clear the cursor reference from the CRTC if the update fails
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 3 Jul 2014 08:07:44 +0000 (09:07 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 3 Jul 2014 08:11:32 +0000 (09:11 +0100)
This should allow it to be restored correctly the next time it gets
shown.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
src/sna/sna_display.c

index 5579585..f472f2c 100644 (file)
@@ -4398,9 +4398,9 @@ sna_set_cursor_position(ScrnInfoPtr scrn, int x, int y)
                        if (sna_crtc->cursor != cursor) {
                                arg.flags |= DRM_MODE_CURSOR_BO;
                                arg.handle = cursor->handle;
-                               arg.width = arg.height = cursor->size;
                        }
 
+                       arg.width = arg.height = cursor->size;
                        arg.flags |= DRM_MODE_CURSOR_MOVE;
                        crtc->cursor_in_range = true;
                } else {
@@ -4410,6 +4410,7 @@ disable:
                                arg.flags = DRM_MODE_CURSOR_BO;
                                arg.width = arg.height = 0;
                        }
+                       cursor = NULL;
                }
 
                __DBG(("%s: CRTC:%d (%d, %d), handle=%d, flags=%x (old cursor handle=%d), move? %d, update handle? %d\n",