From 8188f0a80e869800c51864dd007e834a1a087d9c Mon Sep 17 00:00:00 2001 From: Jack Zeal Date: Tue, 31 Mar 2026 22:23:54 -0700 Subject: [PATCH] Adapt workspace switcher Cairo logic to use modified border cache --- src/workspaces.c | 53 ++++++++++++++++-------------------------------- 1 file changed, 18 insertions(+), 35 deletions(-) diff --git a/src/workspaces.c b/src/workspaces.c index 6e81a228..b68729ec 100644 --- a/src/workspaces.c +++ b/src/workspaces.c @@ -116,64 +116,47 @@ _osd_update(void) uint32_t colour32 = (uint32_t)(a*255) << 24 | (uint32_t)(r*255) << 16 | (uint32_t)(g*255) << 8 | (uint32_t)(b*255); struct borderset * renderedborders = getBorders(colour32, bw, BORDER_SINGLE, 0); - - cairo_surface_t* top = cairo_image_surface_create_for_data((unsigned char *)renderedborders->top, CAIRO_FORMAT_ARGB32, 1, 1, 4); - cairo_set_source_surface(cairo, top, 0, 0); + cairo_set_source_surface(cairo, renderedborders->top->surface, 0, 0); cairo_pattern_set_extend(cairo_get_source(cairo), CAIRO_EXTEND_REPEAT); cairo_rectangle(cairo, bw, 0, width-bw*2, bw); cairo_fill(cairo); - cairo_surface_finish(top); - - cairo_surface_t* bottom = cairo_image_surface_create_for_data((unsigned char *)renderedborders->bottom, CAIRO_FORMAT_ARGB32, 1, 1, 4); - cairo_set_source_surface(cairo, bottom, 0, 0); + + cairo_set_source_surface(cairo, renderedborders->bottom->surface, 0, 0); cairo_pattern_set_extend(cairo_get_source(cairo), CAIRO_EXTEND_REPEAT); cairo_rectangle(cairo, bw, height-bw, width-bw*2, bw); cairo_fill(cairo); - cairo_surface_finish(bottom); + - - cairo_surface_t* left = cairo_image_surface_create_for_data((unsigned char *)renderedborders->left, CAIRO_FORMAT_ARGB32, 1, 1, 4); - cairo_set_source_surface(cairo, left, 0, 0); + + cairo_set_source_surface(cairo, renderedborders->left->surface, 0, 0); cairo_pattern_set_extend(cairo_get_source(cairo), CAIRO_EXTEND_REPEAT); cairo_rectangle(cairo, 0, bw, bw, height-bw*2); cairo_fill(cairo); - cairo_surface_finish(left); - - cairo_surface_t* right = cairo_image_surface_create_for_data((unsigned char *)renderedborders->right, CAIRO_FORMAT_ARGB32, 1, 1, 4); - cairo_set_source_surface(cairo, right, 0, 0); + + + cairo_set_source_surface(cairo, renderedborders->right->surface, 0, 0); cairo_pattern_set_extend(cairo_get_source(cairo), CAIRO_EXTEND_REPEAT); cairo_rectangle(cairo, width-bw, bw, bw, height-bw*2); cairo_fill(cairo); - cairo_surface_finish(right); + - - cairo_surface_t* tl = cairo_image_surface_create_for_data((unsigned char *)renderedborders->tl, CAIRO_FORMAT_ARGB32, bw, bw, 4*bw); - cairo_set_source_surface(cairo, tl, 0, 0); + + cairo_set_source_surface(cairo, renderedborders->tl->surface, 0, 0); cairo_rectangle(cairo, 0, 0, bw, bw); cairo_fill(cairo); - cairo_surface_finish(tl); - - - - cairo_surface_t* tr = cairo_image_surface_create_for_data((unsigned char *)renderedborders->tr, CAIRO_FORMAT_ARGB32, bw, bw, 4*bw); - cairo_set_source_surface(cairo, tr, width-bw, 0); + cairo_set_source_surface(cairo, renderedborders->tr->surface, width-bw, 0); cairo_rectangle(cairo, width - bw, 0, bw, bw); cairo_fill(cairo); - cairo_surface_finish(tr); - - cairo_surface_t* bl = cairo_image_surface_create_for_data((unsigned char *)renderedborders->bl, CAIRO_FORMAT_ARGB32, bw, bw, 4*bw); - cairo_set_source_surface(cairo, bl, 0, height - bw); + + cairo_set_source_surface(cairo, renderedborders->bl->surface, 0, height - bw); cairo_rectangle(cairo, 0, height - bw, bw, bw); cairo_fill(cairo); - cairo_surface_finish(bl); - - cairo_surface_t* br = cairo_image_surface_create_for_data((unsigned char *)renderedborders->br, CAIRO_FORMAT_ARGB32, bw, bw, 4*bw); - cairo_set_source_surface(cairo, br, width - bw, height -bw); + + cairo_set_source_surface(cairo, renderedborders->br->surface, width - bw, height -bw); cairo_rectangle(cairo, width - bw, height - bw, bw, bw); cairo_fill(cairo); - cairo_surface_finish(br); - + set_cairo_color(cairo, theme->osd_border_color); } else {