From f3eec99f8e1239be906a0f5ba96a8ea36998577b Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Sun, 13 Oct 2024 00:25:27 +0100 Subject: [PATCH] backend/xrender: fix rounded corner mask for blit The coordinate conversions were wrong here too. Fixes #1352 Signed-off-by: Yuxuan Shui --- CHANGELOG.md | 1 + src/backend/xrender/xrender.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 364c16ba90..33a617e285 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * Fix memory corruption that can happen when handling window property changes (#1350) * Fix `force-win-blend` having no effect (#1354) +* Fix shadow being rendered incorrectly in xrender backend (#1352) # 12.2 (2024-Oct-10) diff --git a/src/backend/xrender/xrender.c b/src/backend/xrender/xrender.c index e5a7934918..4a44e5173d 100644 --- a/src/backend/xrender/xrender.c +++ b/src/backend/xrender/xrender.c @@ -289,7 +289,9 @@ static bool xrender_blit(struct backend_base *base, ivec2 origin, int16_t mask_pict_dst_x = 0, mask_pict_dst_y = 0; if (args->source_mask != NULL) { ivec2 mask_origin = args->source_mask->origin; - mask_pict = xrender_process_mask(xd, args->source_mask, extent, + auto extent_to_mask = + region_translate_rect(extent, ivec2_neg(ivec2_add(mask_origin, origin))); + mask_pict = xrender_process_mask(xd, args->source_mask, extent_to_mask, args->opacity < 1.0 ? mask_pict : XCB_NONE, &mask_origin, &mask_allocated); mask_pict_dst_x = to_i16_checked(-mask_origin.x);