From ea2ba58efdf44739562f7f32a275b530019ebef1 Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Thu, 10 Feb 2022 07:47:48 +0000 Subject: [PATCH] backend: gl: don't fill window with big border_width If a window's border_width is bigger than its corner_radius, the inner radius of the border become less than 0, causing the entire window to be filled. Fixes #778 Signed-off-by: Yuxuan Shui --- src/backend/gl/gl_common.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/backend/gl/gl_common.c b/src/backend/gl/gl_common.c index d22636e..ad15cad 100644 --- a/src/backend/gl/gl_common.c +++ b/src/backend/gl/gl_common.c @@ -395,7 +395,11 @@ static void _gl_compose(backend_t *base, struct backend_image *img, GLuint targe glUniform1f(gd->win_shader.uniform_corner_radius, (float)img->corner_radius); } if (gd->win_shader.uniform_border_width >= 0) { - glUniform1f(gd->win_shader.uniform_border_width, (float)img->border_width); + auto border_width = img->border_width; + if (border_width > img->corner_radius) { + border_width = 0; + } + glUniform1f(gd->win_shader.uniform_border_width, (float)border_width); } // log_trace("Draw: %d, %d, %d, %d -> %d, %d (%d, %d) z %d\n",