From cf7b91cc5fb02836956ea4323a4230171edea5e2 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 6 Dec 2022 12:00:33 +0100 Subject: [PATCH] buffer: add single-pixel-buffer-v1 special case in buffer_is_opaque() --- types/buffer/buffer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/types/buffer/buffer.c b/types/buffer/buffer.c index b85518c18..953207a2c 100644 --- a/types/buffer/buffer.c +++ b/types/buffer/buffer.c @@ -1,4 +1,5 @@ #include +#include #include #include #include "render/pixel_format.h" @@ -111,7 +112,16 @@ bool buffer_is_opaque(struct wlr_buffer *buffer) { format = shm.format; } else if (wlr_buffer_begin_data_ptr_access(buffer, WLR_BUFFER_DATA_PTR_ACCESS_READ, &data, &format, &stride)) { + bool opaque = false; + if (buffer->width == 1 && buffer->height == 1 && format == DRM_FORMAT_ARGB8888) { + // Special case for single-pixel-buffer-v1 + const uint8_t *argb8888 = data; // little-endian byte order + opaque = argb8888[3] == 0xFF; + } wlr_buffer_end_data_ptr_access(buffer); + if (opaque) { + return true; + } } else { return false; }