|
@@ -375,10 +375,15 @@ static int qxl_crtc_cursor_set2(struct drm_crtc *crtc,
|
|
|
|
|
|
qxl_bo_kunmap(user_bo);
|
|
|
|
|
|
+ qcrtc->cur_x += qcrtc->hot_spot_x - hot_x;
|
|
|
+ qcrtc->cur_y += qcrtc->hot_spot_y - hot_y;
|
|
|
+ qcrtc->hot_spot_x = hot_x;
|
|
|
+ qcrtc->hot_spot_y = hot_y;
|
|
|
+
|
|
|
cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, release);
|
|
|
cmd->type = QXL_CURSOR_SET;
|
|
|
- cmd->u.set.position.x = qcrtc->cur_x;
|
|
|
- cmd->u.set.position.y = qcrtc->cur_y;
|
|
|
+ cmd->u.set.position.x = qcrtc->cur_x + qcrtc->hot_spot_x;
|
|
|
+ cmd->u.set.position.y = qcrtc->cur_y + qcrtc->hot_spot_y;
|
|
|
|
|
|
cmd->u.set.shape = qxl_bo_physical_address(qdev, cursor_bo, 0);
|
|
|
|
|
@@ -441,8 +446,8 @@ static int qxl_crtc_cursor_move(struct drm_crtc *crtc,
|
|
|
|
|
|
cmd = (struct qxl_cursor_cmd *)qxl_release_map(qdev, release);
|
|
|
cmd->type = QXL_CURSOR_MOVE;
|
|
|
- cmd->u.position.x = qcrtc->cur_x;
|
|
|
- cmd->u.position.y = qcrtc->cur_y;
|
|
|
+ cmd->u.position.x = qcrtc->cur_x + qcrtc->hot_spot_x;
|
|
|
+ cmd->u.position.y = qcrtc->cur_y + qcrtc->hot_spot_y;
|
|
|
qxl_release_unmap(qdev, release, &cmd->release_info);
|
|
|
|
|
|
qxl_push_cursor_ring_release(qdev, release, QXL_CMD_CURSOR, false);
|