[PATCH weston 2/2] compositor-drm: the cursor plane only supports ARGB

Derek Foreman derekf at osg.samsung.com
Thu Dec 3 12:07:12 PST 2015


Keep XRGB apps out of the cursor plane, only ARGB is supported.

This prevents programs like weston-simple-shm from landing in the cursor
plane and being misrendered.

Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
---
 src/compositor-drm.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index a6db933..84105e1 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -1094,6 +1094,7 @@ drm_output_prepare_cursor_view(struct drm_output *output,
 	struct drm_backend *b =
 		(struct drm_backend *)output->base.compositor->backend;
 	struct weston_buffer_viewport *viewport = &ev->surface->buffer_viewport;
+	struct wl_shm_buffer *shmbuf;
 
 	if (ev->transform.enabled &&
 	    (ev->transform.matrix.type > WESTON_MATRIX_TRANSFORM_TRANSLATE))
@@ -1112,9 +1113,14 @@ drm_output_prepare_cursor_view(struct drm_output *output,
 		return NULL;
 	if (ev->geometry.scissor_enabled)
 		return NULL;
-	if (ev->surface->buffer_ref.buffer == NULL ||
-	    !wl_shm_buffer_get(ev->surface->buffer_ref.buffer->resource) ||
-	    ev->surface->width > b->cursor_width ||
+	if (ev->surface->buffer_ref.buffer == NULL)
+		return NULL;
+	shmbuf = wl_shm_buffer_get(ev->surface->buffer_ref.buffer->resource);
+	if (!shmbuf)
+		return NULL;
+	if (wl_shm_buffer_get_format(shmbuf) != WL_SHM_FORMAT_ARGB8888)
+		return NULL;
+	if (ev->surface->width > b->cursor_width ||
 	    ev->surface->height > b->cursor_height)
 		return NULL;
 
-- 
2.6.2



More information about the wayland-devel mailing list