aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2017-11-02 14:29:57 -0400
committerGitHub <noreply@github.com>2017-11-02 14:29:57 -0400
commit80b4a2f64c51de4a257182e381977710a5fbeb10 (patch)
tree3963d3ea4393b06130072a07d9210d1e8eeb73d8
parent62734d05535bd0137f3239f3d7639438961868fe (diff)
parent0384c9c094f923875aa17ea8be8b7574f4c96487 (diff)
Merge pull request #382 from emersion/cursor-surface-position
Process surface position for software cursor hotspots
-rw-r--r--types/wlr_output.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/types/wlr_output.c b/types/wlr_output.c
index c4589487..24cc5892 100644
--- a/types/wlr_output.c
+++ b/types/wlr_output.c
@@ -279,10 +279,16 @@ static void output_cursor_render(struct wlr_output_cursor *cursor) {
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ int x = cursor->x - cursor->hotspot_x;
+ int y = cursor->y - cursor->hotspot_y;
+ if (cursor->surface != NULL) {
+ x += cursor->surface->current->sx;
+ y += cursor->surface->current->sy;
+ }
+
float matrix[16];
- wlr_texture_get_matrix(texture, &matrix,
- &cursor->output->transform_matrix, cursor->x - cursor->hotspot_x,
- cursor->y - cursor->hotspot_y);
+ wlr_texture_get_matrix(texture, &matrix, &cursor->output->transform_matrix,
+ x, y);
wlr_render_with_matrix(renderer, texture, &matrix);
}