diff options
author | Drew DeVault <sir@cmpwn.com> | 2017-10-18 15:04:37 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-18 15:04:37 -0400 |
commit | a41d45eefb754e5b9a167b96728d301546b5e19c (patch) | |
tree | 833f60be82249c2d129c0de48cb2433ba99acb78 | |
parent | 9129687ad6dcf162b3af8d91b2fc582f185d0943 (diff) | |
parent | a7d7659a930bb73ec34b00c492074fbf812377b2 (diff) |
Merge pull request #285 from emersion/fix-wayland-hidden-cursor
Fix hidden cursors
-rw-r--r-- | backend/wayland/output.c | 10 | ||||
-rw-r--r-- | types/wlr_output.c | 4 |
2 files changed, 9 insertions, 5 deletions
diff --git a/backend/wayland/output.c b/backend/wayland/output.c index d308b907..e1138ee1 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -66,10 +66,12 @@ static bool wlr_wl_output_set_cursor(struct wlr_output *_output, } if (!buf) { // Hide cursor - wl_surface_destroy(output->cursor_surface); - munmap(output->cursor_data, output->cursor_buf_size); - output->cursor_surface = NULL; - output->cursor_buf_size = 0; + if (output->cursor_surface) { + wl_surface_destroy(output->cursor_surface); + munmap(output->cursor_data, output->cursor_buf_size); + output->cursor_surface = NULL; + output->cursor_buf_size = 0; + } wlr_wl_output_update_cursor(output, output->enter_serial, hotspot_x, hotspot_y); return true; diff --git a/types/wlr_output.c b/types/wlr_output.c index 4c9814ef..eb969b9a 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -361,7 +361,9 @@ void wlr_output_swap_buffers(struct wlr_output *output) { renderer = output->cursor.surface->renderer; } - if (texture && renderer) { + // We check texture->valid because some clients set a cursor surface + // with a NULL buffer to hide it + if (renderer && texture && texture->valid) { float matrix[16]; wlr_texture_get_matrix(texture, &matrix, &output->transform_matrix, output->cursor.x, output->cursor.y); |