From: Alexander Larsson <al...@redhat.com>

We fall back to not using the drm cursor any time
the scale differs, or the scaled size is to large.
---
 src/compositor-drm.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 4222e57..a87cbc3 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -909,6 +909,8 @@ drm_output_prepare_cursor_surface(struct weston_output 
*output_base,
                return NULL;
        if (output->base.transform != WL_OUTPUT_TRANSFORM_NORMAL)
                return NULL;
+       if (output->base.scale != es->buffer_scale)
+               return NULL;
        if (output->cursor_surface)
                return NULL;
        if (es->output_mask != (1u << output_base->id))
@@ -917,7 +919,7 @@ drm_output_prepare_cursor_surface(struct weston_output 
*output_base,
                return NULL;
        if (es->buffer_ref.buffer == NULL ||
            !wl_buffer_is_shm(es->buffer_ref.buffer) ||
-           es->geometry.width > 64 || es->geometry.height > 64)
+           es->geometry.width * es->buffer_scale > 64 || es->geometry.height * 
es->buffer_scale > 64)
                return NULL;
 
        output->cursor_surface = es;
@@ -952,9 +954,9 @@ drm_output_set_cursor(struct drm_output *output)
                memset(buf, 0, sizeof buf);
                stride = wl_shm_buffer_get_stride(es->buffer_ref.buffer);
                s = wl_shm_buffer_get_data(es->buffer_ref.buffer);
-               for (i = 0; i < es->geometry.height; i++)
+               for (i = 0; i < es->geometry.height * es->buffer_scale; i++)
                        memcpy(buf + i * 64, s + i * stride,
-                              es->geometry.width * 4);
+                              es->geometry.width * es->buffer_scale * 4);
 
                if (gbm_bo_write(bo, buf, sizeof buf) < 0)
                        weston_log("failed update cursor: %m\n");
-- 
1.8.1.4

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to